Definiciones:
- Un triángulo se considera un triángulo rectángulo si uno de los ángulos internos es exactamente 90 grados.
- Un número se considera racional si se puede representar mediante una relación de enteros, es decir
p/q
, donde ambosp
yq
son enteros. - Un número
n
es un número congruente si existe un triángulo rectángulo de árean
donde los tres lados son racionales. - Este es OEIS A003273 .
Reto
Este es un desafío de decisión-problema . Dado un número de entrada x
, genera un valor distinto y coherente si x
es un número congruente, y un valor distinto y coherente separado si x
no es un número congruente. Los valores de salida no necesariamente tienen que ser veraz / falsey en su idioma.
Regla especial
Para los propósitos de este desafío, puede asumir que la conjetura de Birch y Swinnerton-Dyer es cierta. Alternativamente, si puede probar la conjetura de Birch y Swinnerton-Dyer, vaya a reclamar su premio Millennium de $ 1,000,000. ;-)
Ejemplos
(Utilizando True
para números congruentes y de False
otra manera).
5 True
6 True
108 False
Reglas y aclaraciones
- La entrada y salida se pueden dar por cualquier método conveniente .
- Puede imprimir el resultado en STDOUT o devolverlo como resultado de una función. Indique en su envío qué valores puede tomar la salida.
- Un programa completo o una función son aceptables.
- Las lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf, y gana el código más corto (en bytes).
code-golf
decision-problem
number-theory
AdmBorkBork
fuente
fuente
Respuestas:
R,
179173142141137135134 bytesUsando los mismos argumentos basados en el Teorema de Tunnell , devuelve un
0
ifn
no es congruente y de lo1
contrario. (Me tomó mucho tiempo detectar la restricción en la condición que solo se aplica a enteros sin cuadrados ).Pruébalo en línea
Mejoras aportadas por Arnaud y Giuseppe (¡el código final es principalmente Guiseppe!), Con -3 gracias a Robin
Análisis de sintaxis:
con el Teorema de Tunnell que establece que n es congruente si y solo si el número de soluciones enteras a 2x² + y² + 8z² = n es el doble que el número de soluciones enteras a 2x² + y² + 32z² = n si n es impar y el número de soluciones enteras a 8x² + y² + 16z² = n es el doble que el número de soluciones enteras a 8x² + y² + 64z² = n si n es par.
fuente
@[username]
... Supongo que Robin Ryder te metió en el golf de código.-n:n
? No leí el teorema de Tunnel, pero me parece quen:0
funcionaría igual de bien para -1 byte ... Además, consejo profesional, si presionas el botón de "enlace" en la parte superior de TIO, estarás bien formatos para copiar y pegar en PPCG :-) EDITAR: Ya veo, hay algunos casos en losn:0
que no funciona.Óxido - 282 bytes
Ver también:
corregido par / impar, gracias @Level River St
fuente
C ++ (gcc) ,
251234 bytesGracias a @arnauld por señalar un error tipográfico de mi parte.
-17 bytes gracias a @ceilingcat.
Pruébalo en línea!
Devuelve 1 si
n
es congruente, 0 de lo contrario.fuente
JavaScript (ES7), 165 bytes
Al igual que la respuesta de @ NeilA. , esto se basa en el teorema de Tunnell y, por lo tanto, supone que la conjetura de Birch y Swinnerton-Dyer es cierta.
Devuelve un valor booleano.
Pruébalo en línea!
¿Cómo?
fuente
Ruby , 126 bytes
Pruébalo en línea!
Encontré un lugar para inicializar
t=1
y expandí la lista de cuadrados en un triplete en lugar de usarq
para hacer copias adicionales.Rubí , 129 bytes
Pruébalo en línea!
Utiliza el teorema de Tunnell como las otras respuestas. Yo uso una sola ecuación de la siguiente manera.
Comprobamos los casos
k=8
yk=32
y compruebe si hay el doble de muchas soluciones parak=8
quek=32
. Esto se hace mediante la adiciónk-16
at
cada vez que encontramos una solución. Esto es +16 en el casok=32
o -8 en el casok=8
. En general, el número es congruente sit
es el mismo que su valor inicial al final de la función.Es necesario encontrar todas las soluciones a la ecuación de prueba. Veo muchas respuestas probando entre +/-
sqrt n
. Está perfectamente bien probar también fuera de estos límites si hace que el código sea más corto, pero no se encontrarán soluciones porque el lado izquierdo de la ecuación excederán
. Lo que me perdí al principio es que negativo y positivox,y,z
se consideran por separado. Por lo tanto,-3,0,3
produce tres cuadrados9,0,9
y todas las soluciones deben contarse por separado (0 debe contarse una vez y9
debe contarse dos veces).Código sin golf
fuente