Tres enteros positivos A, B, C son ABC-triples si son coprimos, con A <B y satisfaciendo la relación: A + B = C
Ejemplos:
1, 8, 9
es un ABC-triple ya que son coprimos, 1 <8 y 1 + 8 = 96, 8, 14
no es porque no son coprimos7, 5, 12
no es porque 7> 5
Puede ver esta presentación de Frits Beukers 2005 para obtener más detalles sobre ABC-triples.
De entrada y salida
Tres enteros, decimal escrito. Se pueden separar los valores o la lista. La salida tenía que ser un valor verdadero / falso si los tres enteros son un triple ABC.
Nota: Es importante respetar el orden de los enteros en la lista, por ejemplo: 1, 8, 9
no se considera como la misma lista 9, 1, 8
o cualquier otra combinación. Entonces, el primero es un ABC-triple y el segundo no.
Así, A es el primer elemento de la lista, B el segundo y C el tercero.
Casos de prueba
Cada una de las siguientes listas debe generar un valor verdadero
[1, 8, 9]
[2, 3, 5]
[2, 6436341, 6436343]
[4, 121, 125]
[121, 48234375, 48234496]
Cada una de las siguientes listas debe generar un valor falsey
[1, 1, 2]
[1, 2, 5]
[1, 9, 8]
[4, 12872682, 12872686]
[6, 8, 14]
[7, 5, 12]
[A,B,C]
, o también se nos permite tomar la entrada en el orden[C,B,A]
o[C,A,B]
?Respuestas:
Jalea ,
109 bytesPruébalo en línea!
Cómo funciona
fuente
Haskell ,
48 3829 bytes-10 bytes debido a TFeld 's
gcd
truco!-7 bytes gracias a HPWiz por mejorar la prueba de co-primalidad y detectar un espacio superfluo.
-2 bytes gracias a nimi por sugerir un operador infijo!
Pruébalo en línea!
Explicación
Las dos primeras condicionesgcd(a,b)=gcd(a,c)=gcd(b,c) :
a < b
ya + b == c
son bastante obvias, la tercera usos queEscribirgcd(a,c)=U⋅a+V⋅c usando la identidad de Bézout y sustituyendo c=a+b da:
Dado que elgcd es la solución positiva mínima para esa identidad, se deduce que gcd(a,b)=gcd(a,c) . El otro caso es simétrico.
fuente
gcd a b==1
. Ya quegcd a b
dividea+b=c
. es decirgcd(gcd a b)c=gcd a b
Perl 6 ,
3332 bytes-1 byte gracias a nwellnhof
Pruébalo en línea!
Bloque de código anónimo que toma una lista de tres números y devuelve Verdadero o Falso.
Explicación
fuente
Excel, 33 bytes
fuente
bash, 61 bytes
Pruébalo en línea!
Ingrese como argumentos de línea de comando, elabore en el código de salida (también produce resultados en stdout como efecto secundario, pero esto puede ignorarse)
La segunda parte (a partir de
&&((
) es bastante estándar, pero lo interesante es la prueba coprime:fuente
&&
puede cambiarse&
por precedenciaJava 10,
6564 bytes-1 byte gracias a @Shaggy .
Pruébalo en línea.
Explicación:
fuente
a==1
->a<2
para guardar un byte.05AB1E ,
121110 bytesGuardado 1 byte gracias a Kevin Cruijssen
Pruébalo en línea! o como un conjunto de pruebas
Explicación
fuente
RÆ_*`\‹*¿Θ
Test Suite .Python 2 ,
6967636255 bytesPruébalo en línea!
Python 3 ,
5851 bytesPruébalo en línea!
-7 bytes, gracias a H.PWiz
fuente
gcd
degcd
truco válida? ¿Qué pasa sia
no es coprimec
?gcd(a,b)
, ya quegcd(a,b)
dividea+b
Japt ,
16141311 bytesIntentalo
fuente
>
indica a continuación©
.JavaScript (ES6),
54 43 4240 bytesPruébalo en línea!
fuente
gcd(c,a)
.Wolfram Language
24 30 2826 bytesCon 2 bytes afeitados por Doorknob. @Jaeyong sung eliminó otros 2 bytes
fuente
CoprimeQ@##
para guardar 2 bytes.GCD@##==1
que ahorraría 2 bytesC # (compilador interactivo de Visual C #) , 90 bytes
Corre para números de hasta 1e8, toma alrededor de 35 segundos en mi máquina. En lugar de calcular el mcd como otros, la función solo crea una instancia de una gran matriz y filtra los índices que no son divisores de aob, y comprueba cuántos elementos quedan. Luego verifique si el elemento uno más el elemento dos es igual al elemento tres. Por último, comprueba si el primer elemento es menor que el segundo.
Pruébalo en línea!
fuente
C # (compilador interactivo de Visual C #) , 59 bytes
Pruébalo en línea!
fuente
ECMAScript Regex, 34 bytes
La entrada está en unario, en el dominio
^x*,x*,x*$
(repetidox
s delimitado por,
).^(?!(xx+)\1*,\1+,)(x*)(,\2x+)\3\2$
Pruébalo en línea! (.NET regex engine) ¡
Pruébelo en línea! (Motor de expresiones regulares SpiderMonkey)
La pregunta dice "Tres enteros, decimales escrito", por lo que esto podría no calificar (ya que toma la entrada en unario), pero hace una expresión regular pura tan elegante que espero que al menos sea apreciada.
Sin embargo, tenga en cuenta que si la redacción se interpreta literalmente, las presentaciones lambda y de función que toman argumentos enteros también deben ser descalificadas, para cumplir estrictamente con la especificación de la pregunta, tendrían que tomar la entrada en forma de una cadena.
fuente
J , 27 bytes
Pruébalo en línea!
Inspirado en la solución Perl de Jo King
fuente
C # (.NET Core) , 68 bytes
Sin Linq.
Pruébalo en línea!
fuente
Stax , 12 bytes
Ejecutar y depurarlo
fuente
Limpio , 43 bytes
Pruébalo en línea!
Básicamente similar a todo lo demás porque la prueba directa es la misma.
fuente
Pari / GP , 30 bytes
Guardado 2 bytes gracias a @Shaggy .
Pruébalo en línea!
fuente
Befunge-98 (FBBI) , 83 bytes
Pruébalo en línea!
La entrada, que es un triple de enteros,
[A,B,C]
se introduce en Befunge como enteros separados por espaciosC B A
.fuente
Mathematica 35 bytes
si el orden es importante:
o...
fuente
Retina 0.8.2 ,
4241 bytesPruébalo en línea! El enlace incluye casos de prueba. Editar: guardado 1 byte gracias a @Deadcode. Explicación:
Convierte a unario.
Verifique que A y B no tengan un factor común.
Verifique que A <B y A + B = C.
fuente
^(1+),(1+\1),\1\2$
a^(1+)(,1+\1)\2\1$
.A
operación de Retina no me ahorre bytes.Lisp común, 51 bytes
Pruébalo en línea!
fuente