Reto
A Robin le gusta tener su declaración de variables en forma de flecha. Así es como lo hace:
- Ingrese cualquier número de cadenas
- Ordénelos por longitud ascendente
Envíelos ordenados por el medio para formar aproximadamente una punta de flecha negativa, como esta (cualquiera que sea el orden de golf mejor):
5 or 4 3 2 1 1 2 3 4 5
Casos de prueba
Entrada:
bow
arrows
sheriffOfNottingham
kingRichard
maidMarian
princeJohn
sherwoodForest
Salida:
sheriffOfNottingham
kingRichard
maidMarian
bow
arrows
princeJohn
sherwoodForest
Entrada:
a
bb
cc
Salida (ambas son válidas):
bb
a
cc
cc
a
bb
Entrada:
one
four
seven
fifteen
Salida posible (la única otra salida válida es su espejo vertical):
seven
one
four
fifteen
Notas
Las cadenas están en camelCase y no tienen números o caracteres especiales, solo letras minúsculas y mayúsculas.
La entrada puede ser lo que desee: separados por comas como una cadena, matriz, ... Se permite cualquier formato de E / S.
- Entre cadenas con la misma longitud, se acepta cualquier orden.
Respuestas:
Python 2 , 47 bytes
Pruébalo en línea!
fuente
[::-2]
directamente para guardar 5 bytes.R ,
6348 bytesPruébalo en línea!
Ordene por longitudes de cadena, luego combine la lista invertida con la lista ordenada, finalmente, tome cada segundo elemento, comenzando en el índice 1 basado en 1.
fuente
o<-L[...
La otra forma de 'variables de flecha'. Un lado menos importante,pryr::f(...)
funciona aquí para 46. ¡ Pruébalo en línea!R + pryr
por lo que generalmente evito hacerlo a menos que haya una buena razón para, como las preguntas de teoría de números,numbers
es indispensable.Javascript 77 bytes
Toma la entrada como un conjunto de cadenas, genera un conjunto de cadenas ordenadas por flechas.
Explicación
fuente
f=
. 77f=x=>x?f(x-1)
. Si es así, debe incluirlof
ya que lo está llamando en su función. Sin embargo, dado que no está utilizando la recursividad, no debería tener que incluirlaf
. Hay varias publicaciones en Meta, esta parece explicarlo un poco mejor. codegolf.meta.stackexchange.com/a/9032/8340C # (compilador interactivo de Visual C #) , 89 bytes
Pruébalo en línea!
fuente
K (oK) , 24 bytes
Solución:
Pruébalo en línea!
Explicación:
Genere la
6 4 2 0 1 3 5
secuencia, use eso para indexar en las longitudes ascendentes de entrada y use eso para indexar en la matriz original:fuente
Jalea ,
98 bytesPruébalo en línea!
También es de 8 bytes.
Gracias a @EriktheOutgolfer y @JonathanAllan por ofrecer campos de golf para salvar un byte.
fuente
Ṛ€1¦
puede convertirsem"-
.LÞŒœṚ;¥/
Ruby , 51 bytes
Pruébalo en línea!
fuente
05AB1E ,
65 bytesGuardado 1 byte gracias a Kevin Cruijssen
I / O es una lista de cadenas.
El enlace se modifica para E / S separadas por nueva línea para facilitar las pruebas.
Pruébalo en línea!
Explicación
fuente
R
y reemplazar«
coni
para guardar un byte, ya que la tercera regla de viñeta permite ambas versiones de desintercalado.J , 11 bytes
Pruébalo en línea!
Lo clasificamos primero.
Luego reducimos el formulario de la lista de derecha a izquierda, pero alternando en qué lado colocamos el nuevo elemento. Hecho.
fuente
PowerShell , 66 bytes
Pruébalo en línea!
Toma información a través de salpicaduras, que se manifiesta en TIO como argumentos de línea de comandos separados.
sort
s en lal
profundidad, almacena eso$a
y construye un rango desde1
hasta lascount
cadenas de entrada. Luego sacamos solo los impares?{$_%2}
y los alimentamos en un bucle|%{...}
. Cada iteración, colocamos el "último", luego el "tercero del último", y así sucesivamente en la tubería con$a[-$_]
. Por separado, también acumulamos en$x
el "segundo desde el último", "cuarto desde el último", etc. Fuera del bucle y la tubería se vacía (por lo que esos elementos salen) y luego salimos$x
. En ambos casos, la salida predeterminada nos da nuevas líneas entre los elementos automáticamente.fuente
PHP ,
144141 bytesPruébalo en línea!
-3 bytes gracias a @Ismael Miguel !
fuente
[array_unshift,array_push][++$i%2]($e,$d)
?['array_push','array_unshift']
con[++$i%2]
el índice de la matriz que alterna entre más0
o1
menos se evaluará a la otra función cada vez. Las "funciones variables" de PHP le permiten asignar una variable a una función y ejecutarla llamando entre paréntesis (por ejemplo:$f='array_push'; $f($e,$d);
==array_push($e,$d)
) para($e,$d)
que luego llame al elemento evaluado de la matriz. Solo una forma más corta de hacerloif (++$i%2) array_push($e,$d); else array_unshift($e,$e);
. ¡Supongo que había algo de azúcar sintáctico PHP después de todo![array_unshift,array_push][++$i%2]($e,$d)
con(array_.[unshift,push][++$i%2])($e,$d)
. Lo que hice fue eliminar lo repetidoarray_
, concatenarlo y luego pasar el resultado a la llamada.MATLAB, 87 bytes
Toma la entrada como un conjunto de celdas de cadenas, emite una columna de cadenas (no estoy seguro si eso es legal)
PD: Gracias Sanchises por señalar un error con entradas de longitud impar
fuente
f({'loooooooong','medium','short'})
end
es opcional para afunction
. El usofunction x=f(y);x={...}'
es más corto quefunction f(y);disp({...}')
.disp
es que no estoy seguro de cuáles son las reglas de salida. ¿Debería ser texto puro o no? odisp({...})
está bien o incluso talx={...}
como lo sugieresAPL (Dyalog Unicode) , SBCS de 18 bytes
Pruébalo en línea!
Se corrigió el error gracias a @ngn.
Explicación:
¹
fuente
≢¨×¯1*⍳∘⍴
->(⊢∘-\≢¨)
y se vuelve aún más corto si lo conviertes en un dfnAPL + WIN,
3138 bytesVer comentario de Adams
Pruébelo en línea ¡Cortesía de Dyalog Classic!
Solicita un vector anidado de cadenas
fuente
≢
"cuenta" Monadic para reemplazar∊⍴
?'12' '1234' '1234' '1234' '1234' '12345678' '12345678' '12345678' '12345678'
. Claramente, el resultado debería haber sido'12345678' '12345678' '1234' '1234' '12' '1234' '1234' '12345678' '12345678'
Retina , 26 bytes
Pruébalo en línea! Explicación:
Ordenar las líneas en orden ascendente de longitud (
$.&
devuelve la longitud de la línea).Elimine temporalmente líneas alternativas y envíe las líneas restantes en orden inverso.
Mantenga las únicas líneas que se eliminaron temporalmente y envíelas.
fuente
Gaia , 10 bytes
Pruébalo en línea!
fuente
Japt, 8 bytes
-3 bytes gracias a Shaggy!
Intentalo
fuente
A.ë()
pero no sé si eso conducirá a una solución más corta.PowerShell , 49 bytes
Pruébalo en línea!
La doble destilación .
fuente
T-SQL, 84 bytes
La entrada es una variable de tabla
Pruébalo en línea
fuente
Perl 6 , 31 bytes
Pruébalo en línea!
Ordenar por longitud de cadena, luego por secuencia estática 0, -1, 0, -3, 0, -5, ...
fuente
Javascript 95 Bytes
fuente
s.sort()
ordena las cadenas lexicográficamente, no por longitud de cadena.Rojo ,
116101 bytesPruébalo en línea!
fuente
perl 5 (
-p0777F/\n/ -M5.01
), 59 bytesTIO
fuente
C (gcc) ,
136128bytesPruébalo en línea!
-8 bytes gracias a ceilingcat.
La función
f
es la solución. Toma el número de cadenas, las propias cadenas y el búfer de salida como argumentos (más cuatro más utilizados internamente).fuente
./.bin.tio
en la salida ?argv
, que incluye el nombre de archivot
en primer lugar, olvidas lo que te gusta y lo guardas incluso cuando no lo necesitas.Japt , 8 bytes
Ingrese como un conjunto de líneas, salga como un conjunto de 2 conjuntos de líneas, una para cada mitad de la lista.
Pruébelo (Código adicional para permitir E / S como cadena separada de nueva línea)
fuente
Haskell ,
10496 bytesPruébalo en línea!
fuente