atapi086, В формулах где-то ошиблись. У переменной b вы потеряли множитель 2, ведь вы там квадраты раскрываете. И, кажется, знак "-" еще там должен быть в b, у вас же там квадрат разности. Так что попробуйте сначала домножить на 2, если не поможет, то еще и на -1.
Корень, Нашел просто: скопировал имена из статьи вашей и вставил в scholar.google.com. Первая же ссылка - научная публикация. Я ее вам привел. Там же есть ссылка на гитхаб.
Этот код, конечно, лучще того от mayton2019. Потому что, во-первых, он специализированный под задачу, а не какой-то общий метод. Этим методом аж науку вперед продвинули и на numberphile попали. Во-вторых, генетические алгоритмы вообще диафантовы уравнения плохо решают. Там в примере же тривиальный случай - линейные уравнения. Для них все решения можно элементарно описать и очень быстро найти.
Корень, Плохая идея - пытаться связаться с кем-то из авторов через комментарий на каком-то новостном портале. Журналисты вас просто проигнорируют со 100% вероятностью.
У numberphile хотябы математики работают и коммьюнити какое-то есть. Так что есть шанс, что вам кто-то из зрителей ответит, или сами авторы свяжутся с героями ролика.
А вообще, самый лучший вариант - найти тех ребят, кто этот код написал напрямую. Ищите Andrew Booker at Bristol University, UK, and Andrew Sutherland at the Massachusetts Institute of Technology. Наверняка, найдете саму статью, там всегда имейлы авторов указывают. Туда им и пишите. Не забудьте письмо повежливее соствить. "Hello! Could you please share with me the code you used to find the solution to a^3+b^3+c^3=3?"
Корень, Можно спроисть код в комментариях. Или емейл nuberphile-у отправить. Может быть, они с вами кодом поделятся. Там что-то не совсем тривиальное, да. И по обрывку кода это не восстановить.
Наверняка код эти исследователи уже давну куда-нибудь на github выложили.
А количество, что вы в qDebug выводите - оно чему равно? Ошибка говорит, что там выход за границу массива, что вероятно произойдет, если попытаться взять первый объект, когда их там 0.
Андрей, Во-первых, посмотрите на формулу. Видите одинаковые скобочки? То, что идет до первой стрелки и после второй одинаковое. Вот обозначьте эти две штуки новыми буквами. Отдельно преобразуйте скобочку с тремя x/y. Потом примените закон де-моргана и получите первую скобочку но с отрицанием.
Le0Wolf, #, Да, если у вас искомые точки тоже фиксированные, то не надо даже никаких хитрых структур данных: Просто отсортируйте все точки-концы отрезков и точки-запросы (вместе) и потом пройдитесь по этому массиву слева направо. Если встретили "начало" - добавляйте отрезок в множество открытых. Встретили "конец" - удаляйте. Встретили "запрос" - текущее множество копируйте в ответ для этого запроса.
Я правильно понимаю, что вы предлагаете разбить диапазон всех возможных значений всем точками-концами отрезков и предподсчитать ответ на каждом из получившихся кусочков?
Одна проблема тут, что эти предподсчитанные ответы могут знимать O(N^2) памяти. Правда, эта проблема лечится, если использовать персистентный set. тогда потребление памяти сократиться до O(n log n) (все-равно хуже дерева интервалов с их O(n), но уже хорошо).
Стоит также добавить комментарий, что лучше всего это реализовывать отсортировав все точки-концы отрезков и пройтись по ним слева-направо.
Или вы предлагаете просто распилить весь интервал на M фиксированных кусоков? Этот метод - хорошая эврестическая оптимизация, но в худшем случае не даст никакого припроста производительности вообще.
Евгений Мартынов, Если интересно, то есть стрелочная нотация для указания возвращаемого типа:
auto f(int a, int b) -> int {
return a+b;
}
Особо полезно в шаблонах, чтобы городить трехэтажные конструкции из decltype и прочего извращения.
Можно так и тип возвращаемого значения в лямбдах указывать.
Но это явно не то, что вы хотели. Самая компактная запись будет через лямбды, но от return вы все-равно не избавитесь никак.
BlinCT, Все правильно с преобразованием. Оно абсолютно одинаковое для всех углов. Вы вообще один единственный Transformer можете использовать с одиним и тем же ValueRange и AngleRange, переданными один раз в начале.
Да ладно: