Определения:
- Треугольник считается прямоугольным, если один из внутренних углов точно равен 90 градусам.
- Число считается рациональным, если оно может быть представлено соотношением целых чисел, т. Е.
p/q
Где обаp
иq
являются целыми числами. - Число
n
является конгруэнтным числом, если существует прямоугольный треугольник области,n
где все три стороны рациональны. - Это OEIS A003273 .
Вызов
Это проблема решения проблемы . Учитывая введенное число, x
выведите отличное и непротиворечивое значение, если x
это не конгруэнтное число, и отдельное отличное и непротиворечивое значение, если x
это не конгруэнтное число. Выходные значения не обязательно должны быть правдивыми / ложными на вашем языке.
Специальное правило
Для целей этой задачи вы можете предположить, что гипотеза Берча и Суиннертона-Дайера верна. В качестве альтернативы, если вы можете доказать гипотезу Берча и Суиннертона-Дайера, иди и получите свой приз в размере 1 000 000 долларов. ;-)
Примеры
(Использование True
для конгруэнтных чисел и др. False
).
5 True
6 True
108 False
Правила и разъяснения
- Вход и выход могут быть заданы любым удобным способом .
- Вы можете распечатать результат в STDOUT или вернуть его как результат функции. Пожалуйста, укажите в своем представлении, какие значения могут принимать результаты.
- Либо полная программа или функция приемлемы.
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
code-golf
decision-problem
number-theory
AdmBorkBork
источник
источник
Ответы:
R
179173142141137135134 байтаИспользуя те же аргументы, основанные на теореме Туннелла , возвращает
0
if, еслиn
оно не конгруэнтно, и1
иначе. (Мне потребовалось много времени, чтобы определить ограничение на условие, применимое только к целым числам без квадратов .)Попробуйте онлайн
Улучшения, внесенные Арно и Джузеппе (окончательный код, в основном, Гизеппа!), С -3 благодаря Робину
Синтаксический анализ:
с теоремой Туннелла, утверждающей, что n конгруэнтно тогда и только тогда, когда число целочисленных решений для 2x² + y² + 8z² = n вдвое больше, чем число целочисленных решений для 2x² + y² + 32z² = n, если n нечетно, и число число целочисленных решений для 8x² + y² + 16z² = n в два раза больше, чем число целочисленных решений для 8x² + y² + 64z² = n, если n четное.
источник
@[username]
... Я предполагаю, что Робин Райдер втянул вас в кодовый гольф?-n:n
? Я не читал теорему Туннеля, но мне кажется, что онаn:0
будет работать так же хорошо для -1 байта ... Кроме того, профессиональный совет, если вы нажмете кнопку "ссылка" в верхней части TIO, вы получите хороший форматы для копирования и вставки в PPCG :-) РЕДАКТИРОВАТЬ: я вижу, есть некоторые случаи, когдаn:0
не работает.Ржавчина - 282 байта
Смотрите также:
исправлено четное / нечетное, спасибо @Level River St
источник
C ++ (gcc) ,
251234 байтаСпасибо @arnauld за указание на глупую опечатку с моей стороны.
-17 байт благодаря @ceilingcat.
Попробуйте онлайн!
Возвращает 1, если
n
совпадает, 0 в противном случае.источник
JavaScript (ES7), 165 байт
Как и ответ @ NeilA. , Это основано на теореме Туннелла и поэтому предполагает, что гипотеза Берча и Суиннертона-Дайера верна.
Возвращает логическое значение.
Попробуйте онлайн!
Как?
источник
Рубин , 126 байт
Попробуйте онлайн!
нашел место для инициализации
t=1
и расширил список квадратов в триплет вместо того,q
чтобы делать дополнительные копии.Рубин , 129 байт
Попробуйте онлайн!
Использует теорему Туннелла, как и другие ответы. Я использую одно уравнение следующим образом.
Мы проверяем случаи
k=8
иk=32
проверяем, есть ли вдвое больше решений,k=8
чем чемk=32
. Это делается путем добавленияk-16
кt
каждому разу, когда мы находим решение. Это +16 в случаеk=32
или -8 в случаеk=8
. В целом число является конгруэнтным, еслиt
оно совпадает с его начальным значением в конце функции.Необходимо найти все решения тестового уравнения. Я вижу множество ответов между +/-
sqrt n
. Совершенно нормально тестировать и за этими пределами, если это делает код короче, но решения не будут найдены, потому что левая часть уравнения будет превышатьn
. В начале я упустил то, что негатив и позитивx,y,z
рассматриваются отдельно. Таким образом,-3,0,3
получается три квадрата,9,0,9
и все решения должны учитываться отдельно (0 должно учитываться один раз и9
должно учитываться дважды).Код без правил
источник