Debe escribir un programa o función que cree una cadena "escalonada". Así es como "escalones" una cadena:
Para cada personaje en la cadena:
Si el carácter es una vocal mayúscula o minúscula, sin incluir 'y', escríbala y luego mueva el resto de la cadena hacia arriba una columna.
Si el carácter es un espacio o una pestaña, imprímalo y luego mueva el resto de la cadena hacia abajo una columna.
Si el carácter no es ninguno de los dos, imprímalo normalmente.
IO puede estar en cualquier formato razonable. La entrada no contendrá ninguna línea nueva. Si lo desea, puede eliminar cualquier espacio en blanco al final.
Si elige devolver la cadena, en lugar de imprimirla, incluya también un programa corto que imprima su cadena para que pueda visualizarse. Esto no es obligatorio, ni irá hacia su conteo de bytes. Esto es solo una conveniencia para los usuarios que no entienden el golf o esolangs (como yo) para poder verificar la salida o jugar con el código.
Muestra IO:
Salida para "bcdef ghijkl":
f jkl
bcde ghi
Salida para "Programación de rompecabezas y código-golf":
lf
-Go
s nd de
ng zzle A Co
mmi Pu
gra
Pro
Salida para "Abcdefghijklmnopqrstuvwxyz":
vwxyz
pqrstu
jklmno
fghi
bcde
A
Como de costumbre, este es el código de golf, por lo que gana la respuesta más corta en bytes.
Respuestas:
MATL ,
3837 bytesPruébalo en línea!
Explicación
Para cada carácter, el código calcula su posición vertical, medida desde arriba (0 es el más alto). Luego construye la cadena de salida transpuesta: cada carácter está en una línea con tantos espacios iniciales como indica su posición vertical. Luego, todas las líneas se contactan en una matriz de caracteres 2D, que finalmente se transpone y se muestra.
fuente
Pyth, 63 bytes
Los espacios en el medio son en realidad un solo carácter de tabulación, pero StackExchange lo representa como cuatro espacios.
Pruébalo en línea!
fuente
Python 2,
141137 bytesfuente
JavaScript (Firefox 30-57), 151 bytes
Donde
\n
representa el carácter de nueva línea literal.fuente
/n
con ``C, 180 bytes
Sin golf:
fuente
Perl, 110 bytes (script de 108 bytes + banderas de 2 bytes)
Ejecutar con
perl -nl script.pl
, la entrada está en stdin, la salida está en stdout.Desobuscado
Cambié el nombre de las variables de manera más sensata, hice el código
use strict
yuse warnings
cumplí, y expliqué que gran parte de la magia Perl lo hace automáticamente.Esto solo se ejecuta como
perl script.pl
, porque replica los efectos de las-nl
banderas dentro del script.fuente
JavaScript (ES6), 133
Menos golf
Prueba
fuente
Haskell (dentro del terminal ANSI), 75 bytes
Ejemplo de uso:
putStr $ ("\27[2J"++).(h=<<) $ "bcdef ghijkl"
Esto usa códigos de escape ANSI para mover el cursor hacia arriba y hacia abajo.
fuente
C,
173160156155 bytesEditar: idea prestada de usar strchr de @mIllIbyte para eliminar 13 bytes
Edit2: racionalizó las comparaciones mín. / Máx., -4 bytes
Edit3: c puede tener cualquier valor para comenzar con -> en main (c) en su lugar, -1 byte
Edit4: se agregó ungolf / explicación
Ungolfed y explicó:
fuente