En las lagunas estándar , está prohibido lo siguiente :
Afirmando que su respuesta está escrita en "MyOwnLanguage", donde el comando
x
significa "leer una secuencia de números, dividirlos en grupos de tres e imprimir los últimos números de esos grupos donde el segundo número es menor que el primero"
Aquí, vamos a hacer exactamente lo mismo.
Tarea
Dada una secuencia de enteros positivos, cuya longitud es divisible por 3, divídalos en grupos de tres e imprima los últimos números de aquellos grupos donde el segundo número es menor que el primero.
Casos de prueba
Input Output
[] []
[1,2,3,4,5,6,7,8,9] []
[2,1,3,5,4,6,8,7,9] [3,6,9]
[3,1,4,1,5,9,2,6,5] [4]
[100,99,123] [123]
[123,123,456] []
[456,123,789] [789]
Puntuación
Este es el código de golf . La respuesta más corta en bytes gana.
Se aplican las lagunas estándar , así que recuerde no tener un comando incorporado x
que realice esta tarea.
code-golf
arithmetic
array-manipulation
Monja permeable
fuente
fuente
MyOwnLanguage
y agregar elx
comando ...: Px
específicamente para realizar esa función.p
, ¿puedo usarlo?Respuestas:
Octava, 32 bytes
Pruébalo en línea!
o
¡Verifique los casos de prueba!
fuente
Jalea ,
98 bytesPruébalo en línea!
Cómo funciona
fuente
Haskell,
3029 bytesMi primer intento de jugar al golf en Haskell, por lo que podría haber perdido una o dos optimizaciones
-1 byte gracias a @JulianWolf
fuente
x d=d
puede ahorrarle un byteMathematica, 37 bytes
Suponiendo que esto satisfaga la especificación, ngenisis obtiene crédito por este enfoque que conduce a un ahorro de 1 byte.
Pura función.
BlockMap[...,#,3]&
divide la lista de entrada en sublistas de longitud 3 y luego opera en cada sublista con la funciónIf[#>#2,Print@#3]&@@#&
. El resultado es que se imprime cada último número que califica. La función también devuelve un valor (es decir, una lista deNull
un tercio siempre que la lista de entrada), que parece ser un comportamiento permitido.Mathematica,
4238 bytes¡Gracias a Martin Ender por guardar 4 bytes!
Pura función.
#~Partition~3
hace lo que piensasCases[X,P:>Q]
selecciona todos los elementos deX
coincidencia del patrónP
y devuelve el resultado de la regla de transformación:>Q
aplicada a cada instancia. Aquí, el patrón que se está haciendo coincidir es{a__,b_}/;a>0
:b_
coincidirá con el último elemento de la lista ya__
todos los demás elementos (en este caso, los dos primeros); llámalosy
yz
por ahora. El astutoa>0
luego se expande ay>z>0
, que es la prueba que queremos aplicar (válido porque la especificación dice que todo será un número entero positivo). Y la regla de transformación es:>b
, que simplemente reemplaza cada triple ordenado coincidente con su último elemento.Presentación original:
Función pura; más o menos una implementación sencilla, aparte de la
#.{1,-1,0}
cual calcula la diferencia entre el primer y el segundo elemento de cada sublista de 3 elementos.fuente
#>#2&@@#&
es más corto. Pero en general es aún más corto para usarCases
en lugar deSelect
:Cases[#~Partition~3,{a__,b_}/;a>0:>b]&
a>0:>
tiene dos tipos de magia!BlockMap
Es tentador aquí.BlockMap[If[#>#2,#3,Nothing]&@@#&,#,3]&
funciona y solo tiene 39 bytes ... ¿podemos guardar un par de bytes?BlockMap[If[#>#2,Print@#3]&@@#&,#,3]&
podría decirse que satisface la especificaciónPyth, 10 bytes
Banco de pruebas
fuente
R, 35 bytes
fuente
Brachylog (2), 14 bytes
Pruébalo en línea!
Brachylog lucha bastante con este tipo de problema. Tenga en cuenta que este programa tiene una complejidad computacional horrible, ya que fuerza a la fuerza bruta dividiendo la entrada en grupos de 3 (sin tener "dividido en grupos" integrado); funciona rápidamente con cuatro grupos pero muy lentamente con cinco.
Explicación
fuente
l÷₃;?ḍ₍
es una alternativa más rápida./
no÷
; son equivalentes aquí), pero es un byte más largo, así que lo descarté mientras jugaba golf.J , 14 bytes
Esto se evalúa como un verbo monádico. Pruébalo en línea!
Explicación
fuente
Alicia ,
1211 bytesGracias a Leo por guardar 1 byte.
Pruébalo en línea!
Utiliza los puntos de código de una cadena como la lista de entrada y genera el carácter correspondiente a las salidas que deben mantenerse.
Explicación
fuente
r
lugar deex
. TIO05AB1E , 8 bytes
Código:
Utiliza la codificación 05AB1E . Pruébalo en línea!
fuente
dc , 30 bytes
E / S: un número por línea.
fuente
Perl 5 , 31 bytes
30 bytes de código +
-p
bandera.Pruébalo en línea!
Reemplaza cada grupo de 3 números (
\d+ (\d+) (\d+)
) por la tercera ($2
) si el segundo ($1
) es menor que el primero ($&
), y nada de lo contrario.fuente
CJam , 15 bytes
Bloque anónimo que espera un argumento en la pila y deja el resultado en la pila.
Pruébalo en línea! (Ejecuta todos los casos de prueba)
Explicación
fuente
Brain-Flak , 82 bytes
Pruébalo en línea!
fuente
Jalea , 10 bytes
Pruébalo en línea!
o
Verificar casos de prueba
-3 bytes gracias a @LeakyNun
Explicación
fuente
s3µṪ×>/µ€ḟ0
s3µṪWx>/µ€
R, 37 bytes
Versión con la
scan()
que no me gusta, pero la hace más corta.Versión con la
function()
que es más fácil de probar (41 byte)Gracias a @Giuseppe! Buena idea utilizar el reciclaje de índice.
Prueba:
Salida:
fuente
x
en la entrada estándar usandox=scan()
al principio en vez de definir una función, También puede establecer simplementei=c(1,2,0)
ya que los índices lógicos se reciclan es decir,x=scan();i=c(1,2,0);x[!i][x[i>1]<x[i==1]]
x=scan()
enfoque, ya que hace que la entrada sea muy engorrosa. Y no puedo hacer que sea repetible entonces.matrix()
pero de alguna manera no creía que fuera posible hacerlo tan corto.JavaScript (ES6),
4644424139 bytesIntentalo
Ingrese una lista de números separados por comas, sin espacios.
Explicación
fuente
y%3>1&a[y-1]<a[y-2]
?Casco , 8 bytes
Pruébalo en línea!
Explicación
Este programa es un poco complicado, así que tengan paciencia conmigo.
La función
ΓȯΓ↑<
toma una lista de longitud 3,x = [a,b,c]
. El primero seΓ
dividex
ena
y[b,c]
, y los alimenta como argumentos de la funciónȯΓ↑<
. Esto debería ser equivalente a((Γ↑)<)
, pero debido a un error / característica del intérprete, en realidad es equivalente a(Γ(↑<))
, interpretado como una composición deΓ
y↑<
. Ahora,a
se alimenta a la última función usando una aplicación parcial,↑<a
se le da a la función resultanteΓ
, que se deconstruye[b,c]
enb
y[c]
. Luegob
se alimenta a↑<a
, dando como resultado una función que toma los primerosb<a
elementos de una lista. Esta función finalmente se aplica a[c]
; el resultado es[c]
sia>b
, y[]
de otra manera. Estas listas se concatenanṁ
para formar el resultado final, que se imprime implícitamente.Sin la "característica", tendría 9 bytes:
fuente
Python 3 ,
4342 bytes1 byte gracias a xnor.
Pruébalo en línea!
fuente
MATL , 10 bytes
El resultado se muestra como números separados por espacios.
Pruébalo en línea!
O verificar todos los casos de prueba . Esto muestra una representación de cadena de la salida, de modo que una matriz vacía se ve realmente como
[]
. Tenga en cuenta que en MATL un número es lo mismo que una matriz singleton, por lo que[4]
se muestra como4
.Explicación
fuente
Röda , 15 bytes
Röda es casi tan corto como los idiomas de golf ...
Esto toma tres valores de la secuencia y empuja el tercer (
_3
) hacia atrás, si el segundo (_2
) es menor que el primero (_1
).Los guiones bajos son azúcar de sintaxis para los
for
bucles, por lo que el programa podría escribirse como{{[a]if[b<c]}for a,b,c}
o incluso{[a]for a,b,c if[b<c]}
.Sin enlace TIO, porque no funciona en TIO por alguna razón (aunque funciona con la última versión de Röda que es anterior al desafío).
fuente
Java 7,
8685 bytes-1 byte gracias a @ PunPun1000
Explicación:
Pruébalo aquí.
fuente
3,9
para el caso de prueba en1,2,3,4,5,6,7,8,9
lugar de3,6,9
).C #, 126 bytes
Si desea un programa completo con el método, sería 175 Bytes :
Guardado 7 bytes con la ayuda de TheLethalCoder
fuente
(int[]i)
simplementei
no puede ser necesario para el tipo.(i)
.Python 2 , 57 bytes
Pruébalo en línea!
fuente
CJam , 16 bytes
La salida se muestra como números separados por espacios.
Pruébalo en línea!
Explicación
fuente
PHP, 89 bytes
Pruébalo en línea!
fuente
JavaScript,
108107108 bytesEsta es una función JS anónima (lambda) válida. Agregue
x=
al principio e invoque comox([5,4,9,10,5,13])
. Salidas como funciónreturn
.El fragmento toma la entrada como una lista de enteros separados por comas.
fuente
martin
ydennis
como id?[5,4,9,10,5,13]
.,
resultó en una serie de cadenas en lugar de números. La solución está perfectamente bien. Solo el fragmento del caso de prueba estaba equivocado. He arreglado eso, ahora. ¡Gracias por señalar eso! :)Perl5.8.9,
7360 bytes(58 + 2 para la bandera 'n' para leer todo el archivo y a para auto-división). Asume que la entrada es líneas de números separados por espacios
Reducción gracias a Dada. Incluyendo la impresión al final para visibilidad, eso ahorraría 8 bytes si no.
fuente
print"\n"
al final. Además, puede hacer$b[1]<$b[0]&&print"$b[2] "while@b=splice@a,0,3
para guardar 7 bytes. Finalmente, puede usar-a
flag en lugar de hacer@a=split
(hará lo mismo automáticamente y almacenará el resultado en@F
lugar de@a
); con Perl 5.8.9, necesitarás,-na
mientras que con Perls recientes,-a
es suficiente. Eso debería llevarte a 47-48 bytes.Clojure, 43 bytes
Aburrido :/
fuente
Bash , 61 bytes
Pruébalo en línea!
fuente