Você deve escrever um programa ou função que crie uma seqüência de caracteres "if-escada". Aqui está como você "escava" uma string:
Para cada caractere na sequência:
Se o caractere for uma vogal maiúscula ou minúscula, sem incluir 'y', faça a saída e mova o restante da string para cima de uma coluna.
Se o caractere for um espaço ou uma tabulação, faça a saída e mova o restante da string para baixo de uma coluna.
Se o caractere não for nenhum, produza-o normalmente.
O IO pode estar em qualquer formato razoável. A entrada não conterá nenhuma nova linha. Se desejar, você pode remover qualquer espaço em branco à direita.
Se você optar por retornar a sequência, em vez de imprimi-la, inclua também um programa curto que imprimirá sua sequência para que possa ser visualizada. Isso não é obrigatório, nem irá para a sua contagem de bytes. Essa é apenas uma conveniência para os usuários que não entendem golfe ou esolangs (como eu) poder verificar a saída ou mexer no código.
IO de amostra:
Saída para "bcdef ghijkl":
f jkl
bcde ghi
Saída para "Programação de quebra-cabeças e código de golfe":
lf
-Go
s nd de
ng zzle A Co
mmi Pu
gra
Pro
Saída para "Abcdefghijklmnopqrstuvwxyz":
vwxyz
pqrstu
jklmno
fghi
bcde
A
Como de costume, isso é código-golfe, e a resposta mais curta em bytes vence.
Respostas:
MATL ,
3837 bytesExperimente online!
Explicação
Para cada caractere, o código calcula sua posição vertical, medida a partir de cima (0 é o mais alto). Em seguida, cria a cadeia de saída transposta: cada caractere está em uma linha com tantos espaços à esquerda quanto sua posição vertical indica. Todas as linhas são contatenadas em uma matriz de caracteres 2D, que é finalmente transposta e exibida.
fonte
Pitão, 63 bytes
Os espaços no meio são, na verdade, um único caractere de tabulação, mas o StackExchange o processa como quatro espaços.
Experimente online!
fonte
Python 2,
141137 bytesfonte
JavaScript (Firefox 30-57), 151 bytes
Onde
\n
representa o caractere literal de nova linha.fonte
/n
por ``C, 180 bytes
Ungolfed:
fonte
Perl, 110 bytes (script de 108 bytes + sinalizadores de 2 bytes)
Executar com
perl -nl script.pl
, a entrada está em stdin, a saída está em stdout.Desofuscada
Eu renomeado as variáveis mais sensata, fez o código
use strict
euse warnings
complacente, e fez um monte explícita do perl magia faz automaticamente.Isso é apenas executado como
perl script.pl
, porque replica os efeitos dos-nl
sinalizadores dentro do script.fonte
JavaScript (ES6), 133
Menos golfe
Teste
fonte
Haskell (dentro do terminal ANSI), 75 bytes
Exemplo de uso:
putStr $ ("\27[2J"++).(h=<<) $ "bcdef ghijkl"
Isso usa códigos de escape ANSI para mover o cursor para cima e para baixo.
fonte
C,
173160156155 bytesEdit: idéia emprestada de usar strchr de @mIllIbyte para cortar 13 bytes
Edit2: simplificou as comparações mínimas / máximas, -4 bytes
Edit3: c pode ter qualquer valor para começar -> para main (c), -1 byte
Edit4: Adicionado ungolf / explicação
Ungolfed e explicou:
fonte