Una secuencia de n> 0 enteros se llama jolly jumper si los valores absolutos de la diferencia entre elementos sucesivos toman todos los valores 1 a n-1.
Entonces, la secuencia [4,1,2,4] tiene diferencias absolutas [3,1,2] que es equivalente al conjunto [1,2,3] (1 a n-1 donde n es la longitud de la secuencia original) Por lo tanto, es un puente alegre.
Las secuencias tienen una longitud n> 0.
Suponga que n = 1 es un puente alegre.
Modo fácil: no se preocupe por stdin / stdout. Sin embargo, solo una función que acepta argumentos y devuelve algo que indica alegre o no
Modo duro: entrada en stdin (espacio separado), y la salida es "Jolly" / "Not jolly". La capitalización importa.
Este es el código de golf.
EDITAR: Las secuencias pueden contener enteros negativos y la entrada en stdin está separada por espacios.
$ jolly 2 -1 0 2
Jolly
$ jolly 19 22 24 25
Jolly
$ jolly 19 22 24 21
Not jolly
Respuestas:
Haskell
4 personajes fáciles
Devuelve una lista de enteros alegres si y solo si se proporciona una lista de enteros alegres como entrada. Esto es legal basado en "Solo una función que acepta argumentos y devuelve algo que indica alegre o no".
Solución alternativa fácil con 61 caracteres:
Toma una lista y devuelve la lista vacía si la secuencia es alegre.
fuente
[1,3]
no es alegre, ¿verdad? Supongo que debes iterar en sulength n-1
lugar.Ruby,
9293 caracteresLa versión dura con entrada en STDIN.
Si comienza con
-pa
(cuenta como 4) puede guardar 5 caracteres:fuente
-pa
.Java (duro)
Asume que la entrada se da a través de stdin. (no a través de argumentos de línea de comando como por ejemplo)
Golfizado - 325
Sin golf
fuente
Scala, modo fácil, 123 caracteres
Para ejecutar o probar en ideone.com:
fuente
Golfscript, modo fácil,
2118 caracteresAcepta argumentos como una matriz de entradas en la pila, sin nada más en la pila; deja 1 en la pila si es alegre y 0 en caso contrario. Para tomar entrada en stdin como una lista de entradas separadas por espacios, anteponga
y para mostrar "Jolly" / "Not jolly" (asumiendo que estamos convirtiendo esto en un programa) postpend
fuente
[4 1 2 4]
, no4 1 2 4
).J (fácil), 18
J (duro), 68
fuente
Brachylog , 11 bytes (fácil)
Pruébalo en línea!
s₂ᶠ-ᵐ
- Diferencias consecutivasȧᵐ
- Valores absolutoso
- Ordenar~⟦₁
- ¿El resultado es el rango 1 a algo?fuente
J, 30
26modo fácil, 8176modo difícileditar: manejar listas de menos de 3, corregir la lectura de stdin
La primera línea se encarga del modo fácil, la segunda agrega el modo difícil.
J lee generalmente de derecha a izquierda:
2-/\
: por cada dos números sucesivos en la lista, tome la diferencia|
: valor absoluto/:~
: ordenar en orden ascendente>:@i.@#
: 1 a n , para una lista de n números=
: compara las diferencias ordenadas con la secuencia (usando una "bifurcación" J)*/
: multiplica todos los booleanos de elementos sabios; si todas las comparaciones fueran 1, su producto es 1, entonces es alegrefuente
1 3
.Ruby, 97
102106(duro)También podría, ya que todos los demás son:
Entrada tomada en stdin.
fuente
(1..d.size).to_a
por[*1..d.size]
. Ahora es posible cambiar operandos, guarda otro (total -5 caracteres).re
fácil (
10383 caracteres)devuelve la suma de 1..i.length en Jolly algún otro número si no (un poco de reglas que caen aquí)
duro (142 caracteres)
la entrada está delimitada por espacios en blanco y termina en EOF
fuente
Maravilloso
Fácil: 78
Difícil: 151
fuente
PowerShell, duro, 117
117126Historia:
$null
a una variable inexistentefuente
Scala
Una puñalada rápida: probablemente haya posibles mejoras.
Fácil: 77
Difícil: 124
fuente
Q, 64 (difícil), 30 (fácil)
difícil
fácil
fuente
J (fácil), 19 caracteres
Uso:
Varía de manera similar a la respuesta de DCharness , y lo habría agregado como un comentario si no hubiera visitado desde el 23 de febrero.
2-/\
toma la diferencia entre pares de números sucesivos,|
obtiene el valor absoluto de cada número,/:~
se ordena en orden ascendente,<:
disminuye cada número en 1,(=i.@#)
un gancho J que genera la secuencia de números desde 0 hasta la longitud de la lista de diferencias - 1 (i.@#
) y la compara con esa lista=
.*/
multiplica la lista de1
sys0
generada por el verbo anterior.fuente
x-:y
lugar de*/x=y
guardar un personaje.Scala fácil: 138153,
170(fue erróneo, mejoró más tarde)sin golf:
La idea es que construyamos la segunda derivación:
Scala hard 172182
, 205(fue erróneo / mejorado):más o menos lo mismo que arriba.
fuente
4 1 2 5
devuelve verdadero. Sin embargo, todavía no he logrado entender ese pliegue izquierdo ...readLine
toma entrada de la consola, no del stdin ... (pero puedes usarloargs
en su lugar)j("1")
lanzaUnsupportedOperationException: empty.max
PHP, fácil, 129
Para un conjunto dado
$s
de enteros:La versión sin golf:
fuente
jalea ,
76 bytes (fácil)Pruébalo en línea!
Toma la entrada como números separados por comas en el primer argumento. ¡Devuelve 1 si la secuencia es alegre y 0 si no lo es!
Solución de 7 bytes:
Pruébalo en línea!
Toma la entrada como números separados por comas en el primer argumento. No devuelve nada si la lista es una secuencia de jolly jumper, y algo si no lo es.
Agregar esta línea hace que funcione con la especificación rígida:
Jelly ,
2722 bytes (¡duro, comentarios bienvenidos!)Pruébalo en línea!
Solución de 27 bytes (dura):
Pruébalo en línea!
Toma números separados por espacios en
stdin
y genera "Jolly" o "Not jolly".Explicación:
Cualquier comentario muy apreciado!
fuente
LR
esJ
. Si escribe algo asíIAṢ⁼J$
, obtiene un buen resultado 1/0, y puede usarlo para indexar“Not jolly“Jolly”
:ɠḲVIAṢ⁼J$ị“¢⁼D“¡KṀȥƘạ»
⁼
átomo, útil para comparar solo partes de listas.Haskell ,
5957 bytesModo fácil, devuelve la alegría como un booleano. Gracias a @Laikoni por dos bytes.
Pruébalo en línea!
fuente
Japt ,
3230 bytes duro-2 bytes de @Shaggy
Pruébalo en línea!
fuente
Python 3, 117 (duro)
Pruébalo en línea!
fuente
JavaScript: 105 (modo fácil)
Golfizado:
Sin golf:
fuente
Perl, 89 (duro)
86 caracteres de código + 3 para ejecutar con la
-p
opciónfuente
Javascript (duro): 138
fuente
fuente
R, fácil, 110
Uso:
fuente
Python, 72 (fácil), 114 (difícil)
Fácil:
Duro :
fuente
Python, 255 caracteres
fuente
C, 119 (duro), 97 (fácil)
La solución fácil lee la entrada de los argumentos y devuelve un 0 como código de salida si la entrada es una secuencia de puente alegre:
fuente
APL (
504947, duro)Fácil (24):
La función toma una matriz y devuelve 0 o 1.
fuente