Reto
Escriba un programa o función que tome una cadena sy un entero ncomo parámetros. Su programa debe imprimir (o devolver) la cadena cuando se transforma de la siguiente manera:
Comenzando en la parte superior izquierda y moviéndose hacia abajo y hacia la derecha, escriba scomo una ola de altura n. Luego, de arriba a abajo, combine cada fila como una cadena (sin espacios).
Ejemplo
Dada la cadena "WATERMELON" y una altura de 3:
La ola debería verse así:
W R O
A E M L N
T E
Luego, combine las filas de arriba a abajo:
WRO
AEMLN
TE
Por lo tanto, su programa debería devolver la cadena "WROAEMLNTE"
Del mismo modo, "WATERMELON" con altura 4 debería producir la siguiente ola:
W E
A M L
T R O
E N
Su programa debería devolver la cadena "WEAMLTROEN"
Reglas
Entrada
La entrada puede tomarse en cualquier formato razonable. La cadena puede ser en cualquier caso que prefiera. Puedes suponer que0 < n <= s.length
Salida
La salida debe consistir solo en la cadena transformada (ya sea devuelta o impresa en STDOUT), más cualquier nueva línea final.
Tanteo
Este es el código de golf , por lo que la respuesta más corta en bytes gana Las lagunas estándar no están permitidas.
Casos de prueba
Input Output
programmingpuzzles, 5 -> piermnlsomgzgapzru
codegolf, 3 -> cgoeofdl
elephant, 4 -> enlatehp
1234567, 3 -> 1524637
qwertyuiop, 1 -> qwertyuiop

n> 1? Por favor aclare y si no agrega un caso de prueban > 0, peron=1es un caso válido. Actualizaré la pregunta ahora.Respuestas:
Casco , 6 bytes
Pruébalo en línea!
Funciona para
n = 1también.Explicación
La función de orden superior funciona
δasí debajo del capó. Suponga que tiene una función de orden superior que toma una función unaria y una lista, y devuelve una nueva lista. Por ejemplo,Ötoma una función y ordena una lista usándola como clave. LuegoδÖtoma una función binaria y dos listas, comprime las listas juntas, aplicaÖpara ordenar los pares usando la función binaria como clave, y finalmente proyecta los pares a la segunda coordenada. UsamosKcomo la función clave, que simplemente devuelve su primer argumento e ignora el segundo.fuente
MATL , 16 bytes
Pruébalo en línea! O verificar todos los casos de prueba .
Explicación
Considere insumos
5,'programmingpuzzles'.fuente
Haskell , 64 bytes
Pruébalo en línea!
fuente
J ,
54, 29, 2726 bytes-1 byte gracias a hoosierEE
Pruébalo en línea!
fuente
n=1desde el principio|@i:en lugar de[:|i:R , 68 bytes
Pruébalo en línea!
n=1caso arreglado gracias a @ J.Doefuente
Python 2 ,
11910898929197939190 bytesPruébalo en línea!
-1 byte, gracias a Jonathan Frech
fuente
05AB1E (heredado) ,
118 bytesInspirado por @LuisMendo MAT respuesta 's .
-3 bytes gracias a @Adnan porque soy un idiota ..>.>
Pruébalo en línea .
Explicación:
NOTA: Se
counter_variableutiliza, porque en la versión de Python Legacy de 05AB1E,Σno tenía un índice incorporadoN, que sí tiene en la nueva versión de reescritura de Elixir de 05AB1E. Entonces, ¿por qué sigo usando la versión heredada? Porque en la reescritura de Elixir, transforma implícitamente la cadena en una lista de caracteres, lo que requiere un adicional}Jpara transformarla nuevamente en una cadena para generar (y también contiene un error en este momento dondeèno funciona para indexar en la lista alargada ..: S)fuente
¹g∍pieza ya que 05AB1E usa indexación cíclica paraè.Japt , 16 bytes
¡Pruébalo en línea!
Explicación
fuente
ümétodo es nuevo?-Pindicador para guardar otro 2.Jalea , 8 bytes
6 bytes fallan para la altura 1; dos bytes utilizados para abordarlo ... ¿tal vez se pueda encontrar un 7?
Un enlace diádico que acepta un número entero positivo y una lista de caracteres que produce una lista de caracteres.
Pruébalo en línea!
¿Cómo?
fuente
JavaScript (ES6), 75 bytes
Fórmula más corta sugerida por @MattH (-3 bytes)
Toma entrada como
(string)(n).Pruébalo en línea!
JavaScript (ES7), 78 bytes
Guardado 4 bytes gracias a @ETHproductions
Toma entrada como
(string)(n).Pruébalo en línea!
fuente
ocon enx/n&1?n-x%n:x%nlugar den*n-(x%(n*2)-n)**2.K ( Kona ), 23 bytes
Una traducción de la respuesta J de Galen
fuente
MBASIC ,
146159155 bytesActualizado para manejar n = 1
Salida:
fuente
Perl 6 , 49 bytes
Pruébalo en línea!
Toma la entrada como una función curry.
Explicación:
La secuencia por la que se ordena se ve así (para
n=5):fuente
J , 24 bytes
Pruébalo en línea!
Verbo diádico explícito. Ejecútalo como
'codegolf' f 3.Cómo funciona
Normalmente, la función explícita toma 5 bytes adicionales en forma de
n :'...'. Pero si se agrega el manejo de errores, la diferencia se reduce a 2 bytes debido a los parentes y al espacio en(tacit)<space>::.fuente
sort up? Su verbo explícito todavía es 3 bytes más corto. ¡Buena decisión!APL (Dyalog Classic) , 23 bytes
Pruébalo en línea!
fuente
Powershell,
9995 bytesScript de prueba:
Salida:
Explicación
La secuencia de comandos:
La expresión
((1..$n+$n..1)*$s.Length|gugenera una secuencia como1,2,3,3,2,1,1,2,3,3,2,1...y elimina duplicados adyacentes.gues un alias para Get-Unique .$n=3la secuencia deduplicada es:1,2,3,2,1,2,3,2,1...$n=1la secuencia deduplicada es:1La expresión
$i++*($n-gt1)devuelve un índice en la secuencia deduplicada.=$i++si de lo$n>1contrario=0fuente
Ruby ,
7565 bytesPruébalo en línea!
Toma la entrada como una matriz de caracteres, devuelve una cadena
Cómo funciona:
hcadenashy luego baja hasta,0etc.)fuente
C,
142134bytes8 bytes guardados gracias a Jonathan Frech
Código:
Explicación:
Pruébalo en línea!
fuente
Carbón , 21 bytes
fuente
SNOBOL4 (CSNOBOL4) , 191 bytes
Pruébalo en línea!
Toma
SentoncesNen líneas separadas.Explicación:
fuente
Limpio ,
10584 bytesPruébalo en línea!
fuente
JavaScript (Node.js) , 83 bytes
Pruébalo en línea!
fuente
Pyth ,
2221 bytesToma entrada como
nseguido porsen líneas separadas. Pruébelo en línea aquí , o verifique todos los casos de prueba a la vez aquí .Editar: guardado un byte moviendo el cheque vacío al final del procesamiento. Versión previa:
seMhD,V*lz|+PUQP_UQ]0zfuente
Rojo , 153 bytes
Pruébalo en línea!
Explicación:
fuente
Tengo dos soluciones al problema. La primera solución que hice primero, luego pensé en otra forma de hacerlo que pensé que ahorraría bytes, pero no fue así, así que la incluí de todos modos.
Solución 1
PHP ,
152144116 bytesPruébalo en línea!
Solución 2
PHP , 162 bytes
Pruébalo en línea!
fuente
$fy$n-1-$ipuede ser$n-~$i. 144 bytesn=1. Este funciona para el mismo número de bytes.echopara ahorrar 5 bytes másRuby , 84 bytes
Pruébalo en línea!
fuente