Dada una lista de enteros positivos, muestra si cada par de enteros adyacentes comparte un factor primo. En otras palabras, dar salida a la verdad si y solo si no hay dos enteros vecinos en la lista que sean primos.
En otros términos: dada una lista de enteros positivos [a 1 a 2 ... a n ] , muestra si
mcd (a 1 , a 2 )> 1 && gcd (a 2 , a 3 )> 1 &&… && gcd (a n − 1 , a n )> 1.
La lista siempre contendrá al menos dos elementos (n ≥ 2).
Sin embargo…
Este desafío también es de fuente restringida : los puntos de código en su respuesta (cualquiera que sea la página de código en la que se encuentre) deben satisfacer la condición que su programa verifica.
Por ejemplo, print 2
es un programa válido. Como una lista de puntos de código Unicode, es [112 114 105 110 116 32 50] , que satisface esta condición: 112 y 114 comparten un factor de 2 ; y 114 y 105 comparten un factor de 3 , etc.
Sin embargo, nomain
puede ocurrir en un programa válido (¡lo siento!), Ya que los puntos de código Unicode y , a saber, 109 y 97 , son coprimos. (¡Afortunadamente, su envío no necesita ser un programa completo!)m
a
Su programa no puede contener el punto de código 0.
Casos de prueba
Verdad:
[6 21] -> 1
[502 230 524 618 996] -> 1
[314 112 938 792 309] -> 1
[666 642 658 642 849 675 910 328 320] -> 1
[922 614 530 660 438 854 861 357 477] -> 1
Falsy
[6 7] -> 0
[629 474 502 133 138] -> 0
[420 679 719 475 624] -> 0
[515 850 726 324 764 555 752 888 467] -> 0
[946 423 427 507 899 812 786 576 844] -> 0
Esto es code-golf : gana el código más corto en bytes.
%)+/5;=CGIOSYaegkmq\DEL
.print 2
era válido, pero);=ae
ser excelente es realmente difícil, no lo consideré ... Me pregunto si algo como Haskell puede ¿competir?Respuestas:
MATL , 14 bytes
Esto genera un vector de columna no vacío de números distintos de cero como verdadero, o un vector que contiene al menos una entrada cero como falso.
Pruébalo en línea!
Verifique todos los casos de prueba . El código de pie de página contiene una
if
rama para probar la veracidad / falsedad.Como MATL usa ASCII, el código fuente se codifica como
Que satisface el requisito .
Explicación
fuente
Haskell ,
103100 bytesEDITAR:
d<-fz
protección para fusionar y acortar las dos últimas líneas.f
es la función principal, que toma una lista de enteros y devuelve aBool
.Tenga en cuenta que los primeros dos
ԁ
s (solo) son caracteres cirílicos (Komi) Unicode, y hay un carácter de tabulación antes del primero.Pruébalo en línea! o probarlo en sí mismo.
Cómo funciona
f
Es la función principal. Todo lo que hace es envolver su argumentoԁ
en una lista única (porque el valor ASCII principal de los)
paréntesis es mucho más difícil de usar que los corchetes) y llamarzb
con eso y un argumento ficticio (la función Haskellid
tiene los caracteres correctos para encajar aquí).=]
es imposible con ASCII simple, por lo que el argumento se nombra con el carácter Unicode de 2 bytesCYRILLIC SMALL LETTER KOMI DE (ԁ)
, el valor de punto de código3*7*61=U+0501
, que se ajusta a todos esos y[
.f fz|bf<-fz=zb[bf]fz
.zb
toma dos argumentos, una lista singleton cuyo elemento es la lista real de números en los que se recurre, y un argumento ficticiofz
solo necesario para obtener unz
antes de la función=
s.z
se llama con los dos primeros (con nombreh
yp
), y si eso regresaTrue
, vuelve azb
aparecer en la colap:l
de la lista.zb
regresaTrue
. Como=
debe ser seguido por el carácterz
, la forma más sencilla de hacerlo es utilizar una llamada de laz
función que se sabe que devuelveTrue
.z
toma dos argumentos y calcula recursivamente su máximo divisor común usando la resta (cualquier otra división entera relevante o función gcd no está disponible), regresandoTrue
si es mayor que uno.0
, con el segundo argumento siendo el mcd. En esta línea también se nombra el segundo argumentoz
. El personaje1
es incómodo aquí, por lo quez^0
se usa para obtener el número uno.f
es más pequeño que el segundofz
, se intercambian yz
vuelven a aparecer.z
repite (también intercambiando los argumentos, aunque eso es solo para evitar paréntesis).fuente
05AB1E , 8 bytes
Código
Utiliza la codificación 05AB1E , que nos da la siguiente lista de puntos de código:
Pruébalo en línea! o Verifique el código fuente!
Explicación
Como el operador gcd (
¿
) tiene un punto de código principal, tuve que buscar otras formas de verificar la coprimidad:fuente
Ò
terminarf
?Casco , 8 bytes
Para las entradas de Truthy devuelve un entero positivo, para Falsy devuelve 0
Pruébalo en línea! y probado en sus propios puntos de código
Utiliza la página de códigos de Husk
Explicación
fuente
Ṡ
? Lo veo en los documentos también en la columna "tipo" en la página de comandos y no puedo entenderlo, así que quiero buscarlo para poder aprenderlo.Ṡ
en la sintaxis de Haskell. Se traduce aproximadamente aṠ(f,g,x) = f(g(x),x)
en los idiomas más convencionales.`Ṡ g f x = Ṡ f g x = f (g x) x
Japt ,
87 bytes¡Pruébelo en línea!
Puntos de código:
Explicación
fuente
Jalea ,
119 bytesGuardado 2 bytes gracias a @ Jonathan Allan .
Pruébalo en línea!
Jelly tiene su propia página de códigos y los puntos de código de cada personaje son
Esto comprueba los números no primos marcando si
lcm(a, b) != a*b
. Puede haber una solución más corta ya que acabo de filtrar los caracteres con incluso puntos de código.Explicación
fuente
,
es incluso así que puedes haceræln,P¥ð2\
por dos menos. Editar: se me cayó el finalP
, que sea menos: p)TI-BASIC, 38 bytes
TI-BASIC se tokeniza en tokens de uno o dos bytes, como se enumera aquí .
Las partes más difíciles de esta solución fueron:
El token de coma es un número primo (43), lo que me obliga a rodearlo con múltiplos de 43 (en este caso, el token V, que es 86).
El gcd (token es un número primo grande (47881), lo que significa que no se puede usar en absoluto.
Los tokens para este programa salen a:
Explicación
fuente
Pyth , 15 bytes
Pruébalo aquí o echa un vistazo a Test Suite.
Este es un esfuerzo de colaboración entre Erik the Outgolfer y el Sr. Xcoder . Devuelve un valor inconsistente (lista no vacía) para verdadero, y la lista vacía para falso.
Valores ASCII
Que comparten los siguientes factores:
Explicación
Sin el requisito de fuente restringida , esta habría sido una versión de
75 bytes que realiza la misma tarea (-2 gracias a FryAmTheEggman ):Explicación
fuente
Q
s al final?.b
tiene aridades variables, y el uso de entrada implícita significa que elegirá el más bajo (1) en lugar de lo previsto (2).