• Как правильно задать интервал для формулы a³+b³=c³+1?

    wataru
    @wataru Куратор тега Математика
    Корень, Ну, медалька на форуме, да зачет по математике - это совсем не тот уровень, что было раньше. Никаких премий и международных престижных наград.
    Хотя, безусловно, любое новое доказательство этой теоремы достойно публикации и может даже на PhD потянуть.
    Написано
  • Как правильно задать интервал для формулы a³+b³=c³+1?

    wataru
    @wataru Куратор тега Математика
    mayton2019,

    Это прекрасно. Не забудь зайти получить денежную премию.


    Вроде как уже не выплачивают премию, ведь есть общепризнанное доказательство. Поэтому вместо фермоистов теперь всюду свидетили доказательства гипотезы Коллатца элементарными школьными методами.
    Написано
  • Правильно ли реализовано делигирование конструктора?

    wataru
    @wataru Куратор тега C++
    Сергей Калин, Некоторые поля, которые не имеют никаких осмысленных значений на старте жизни объекта, можно инициализировать специальными значениями. Например, если это указатели на что-то, что можно будет узнать потом, то их можно инициализировать nullptr. Какие-нибудь идентификаторы - нулями, или -1.

    Все поля объекта должны иметь какое-то консистентное значение всегда.
    Написано
  • Как правильно задать интервал для формулы a³+b³=c³+1?

    wataru
    @wataru Куратор тега Математика
    Корень,

    Перезапуск - не такая частая операция. Я бы прост о руками в коде менял значение.
    Как вы определяете алгоритм, когда с 1 начинать, а когда с 2476?

    Посмотреть на предыдущий вывод до перезагрузки, взять максимальное a.

    end = 20000
    a_begin = # последнее число a, выведенное раньше, или 1
     for a in range(a_begin, end+1):
            an = a ** n
            c = a; cn = an
            # Для каждого значения b в интервале
            for b in range(1, end+1):
                anbn = an + b ** n
                while anbn > cn:
                    c += 1
                    cn = (c ** n)-1
                if anbn == cn: # Bingo!
                    print(f'{a}³+{b}³={c}³-1 | {a**3}+{b**3}={c**3}-1')


    Если у вас база данных, то можно обращаться к ней какой-нибудь вроде этого, чтобы получить это самое a_begin:
    Select A from solutions limit 1 order A desc

    Не специалист по базам данных
    Написано
  • Как правильно задать интервал для формулы a³+b³=c³+1?

    wataru
    @wataru Куратор тега Математика
    Корень, я привел код. Никаких интнрвалов там и нет. Тупо 2 вложенных цикла от 1 до максимального числа.
    Написано
  • Как правильно задать интервал для формулы a³+b³=c³+1?

    wataru
    @wataru Куратор тега Математика
    Корень, если вы остановились на 1, 10001 ( что произойдет где-то через 10 миллисекунд после запуска программы), то зарускаетесь опять от 1. Да, первые 10000 пар вы просмотрите опять.

    Если вы остановились на 2476, 12365, то начало внешнего цикла можно сделать 2476. Но только внешнего.
    Написано
  • Как правильно задать интервал для формулы a³+b³=c³+1?

    wataru
    @wataru Куратор тега Математика
    Перепишите, пожалуйста код, как будет лучше. Как по мне вы говорите загадками и скорей всего я ответ на загадку не найду.


    begin, end = 1, 20000
     for a in range(begin, end+1):
            an = a ** n
            c = a; cn = an
            # Для каждого значения b в интервале
            for b in range(begin, end+1):
                anbn = an + b ** n
                while anbn > cn:
                    c += 1
                    cn = (c ** n)-1
                if anbn == cn: # Bingo!
                    print(f'{a}³+{b}³={c}³-1 | {a**3}+{b**3}={c**3}-1')


    Код проще вашего же? Тут меньше циклов, понятнее что он делает.
    И все также можно запустить с середины, если компьютер перезагрузили - считайте что у вас куча интервалов длиной по 1 для a. Т.е. берете последнее выведенное в базу число a и c него запускаете внешний цикл, вместо 1.
    Написано
  • Как правильно задать интервал для формулы a³+b³=c³+1?

    wataru
    @wataru Куратор тега Математика
    Корень,
    В принципе получилось же с помощью itertools.product


    Ничего вы не срезали. А всего-лишь чуть-чуть поменяли порядок перебора все тех же пар чисел, сильно усложнив код.
    Написано
  • Как правильно задать интервал для формулы a³+b³=c³+1?

    wataru
    @wataru Куратор тега Математика
    Корень,
    > Попросил искусственный интеллект Bing AI сделать правильные интервалы для формулы

    Вы человеку-то объяснить не можете, чего хотите. Эти чат боты на любой вопрос отвечают правдоподобным текстом. И часто галюцинируют бред. Особенно, если вопрос лишен смысла. Советую поменьше к ним обращаться.

    Приведенный вами код непонятно зачем интервалы ипользует. С тем же успехом можно гнать просто 2 цикла от 1 до 20000 для a и b.
    Написано
  • Как правильно задать интервал для формулы a³+b³=c³+1?

    wataru
    @wataru Куратор тега Математика
    Корень, Если вы хотите запустить программу не с самого начала после перезагрузки компьютера, то вам надо изменить начало внешнего цикла (который в правильной программе будет по a,b или c; Никаких нескольких интервалов у вас быть не должно). В начале программы берете из базы последнее записанное там найденное значение и вот оттуда берете нижнюю границу внешнего цикла. Внутренний цикл (по a,b или с) начинаете все так же с 1, без изменений. Это самое простое решение. Правда, так вы можете какие-то тройки найти заново, ну это можно или потом в базе данных при выводе пофиксить (через select distinct) или в самой таблице задать a,b,c как ключ, тогда второй раз та же тройка не запишется.

    Ну и, да, надо commit базе делать почаще, а не в самом конце (допустим, каждые 100 найденных чисел, или каждые 1000 итераций внутреннего цикла, или как-то еще)

    Разбивать интервал на маленькие интервалы и рассматривать их отдельно нельзя - вы теряете решения, где числа в разных интервалах.
    Написано
  • Как определить есть ли противоречия в цепочке логических выражений?

    wataru
    @wataru Куратор тега Математика
    Alexandroppolus, я думал об этом, но это не нужно. Все равно надо обрабатывать случай циклов из <=. Отдельно равенства обрабатывать - лишний код будет.
    Написано
  • Как определить есть ли противоречия в цепочке логических выражений?

    wataru
    @wataru Куратор тега Математика
    Alexandroppolus, неравнства я не заметил. Можно в конце проверить вместе с ребрами в компоненте. Если неравно в одной компоненте - противоречие. Если идет в большую компоненту, пока пропускаем. Если в меньшую компоненту, и пока оценка минимального числа равна, увеличим оценку на 1
    Написано
  • Почему утверждается, что int32_t имеет ширину точно 32 бита, если он является всего лишь псевдонимом int, который может быть больше 32 бит??

    wataru
    @wataru Куратор тега C++
    Qubc,
    Если представить такую архитектуру (и компилятор), где char равен 32 битам, то там будет typedef char int32_t;

    да.
    Написано
  • Как рассчитать координаты по известным соседним?

    wataru
    @wataru Куратор тега Алгоритмы
    Леха, Вам нужна точка, которая лежит на всех окружностях. Фактически, у вас n уравнений. Но уже двух уравнений достаточно, чтобы найти 1-2 кандидата. Поэтому достаточно взять эти 2 точки кандидата и просто подставить их в оставшиеся n-2 уравнения.

    Ну просто проверяйте, что точка лежит на окружности, т.е. растсояние от нее до центра равно заданному радиусу.
    Написано
  • Почему boolean использует больше памяти чем byte?

    wataru
    @wataru
    В каких таблицах? Какой язык программирования?
    Написано
  • Почему непопулярен динамический многомерный массив?

    wataru
    @wataru
    Роман Романов, Там и синтаксис хороший, и код быстрый: https://godbolt.org/z/jr31aeM8f

    Но вообще, в вашем случае с опкодами, гораздо логичнее может быть иметь не массив массивов, а массив структур. Ведь опкоды не спроста одинаковую фиксированную длину имеют, там какая-та структура есть.
    Написано
  • Почему непопулярен динамический многомерный массив?

    wataru
    @wataru
    Роман Романов, array хранит все в объекте. Так что это будет непрерывная память. Так что и адресация будет арифметикой
    Написано
  • Как убедиться что атомарные операции будут выполнены точно правильно?

    wataru
    @wataru Куратор тега C++
    res2001,
    Задействовать сигналы для связи между потоками кажется избыточным. В этом случае я бы использовал ожидание на condition variable.


    Но внутри condition variable использует те же самые сигналы. Как вы думаете condition_variable::wait и condition_variable::notify_one работают? Да даже этот интерфейс изоморфен WaitForSingleObject/SetEvent.

    Вот только из-за переносимости у condition_variable еще и mutex-ы надо лочить. В лучшем случае оно будет настолько же оптимально, как и системные вызовы.


    Конкретно в этом примере использование атомиков в сочетании с yieldом для синхронизации потоков будет самым дешевым, на мой взгляд


    Не будет. Yield лишь говорит, что этот поток можно сейчас вытеснить, и ничего не говорит о том, когда его надо назад запускать. Поэтому система может его еще много раз разбудить, цикл опять проверит атомик (что не самая тривиальная операция), опять усыпит процесс. WaitForSingleObject же говорит системе, что поток надо усыпить и при каких условиях его надо будить. И система не будет его лишний раз исполнять, пока сигнал не сработает (или таймер).

    В лушчем случае, реализация с yield разбудит поток один раз, что будет не быстрее WaitForSingleObject.
    Написано