Introdução
Escreva um programa completo que gire um bloco retangular de caracteres ASCII 90 graus no sentido horário. Quando o próprio programa é girado 90 graus no sentido horário, ele gira um bloco de caracteres ASCII 90 no sentido anti-horário.
Regras
- Muitos não usam built-ins que giram ou transpõem matrizes. Por exemplo, no MATLAB / Octave
rot90
e no operador de transposição'
não são permitidos. - Você deve escrever um programa completo que use STDIN e STDOUT ou o equivalente mais próximo.
- Seu programa deve ser retangular e assumir que a entrada também é retangular.
- A entrada e a saída são seqüências separadas por uma nova linha e não terão novas linhas à direita.
Quando executado com o código fonte como entrada, seu programa deve girar 90 graus no sentido horário. A saída deve ser um segundo programa no mesmo idioma que gira sua entrada 90 graus no sentido anti-horário. Quando o programa rotado recebe seu código fonte como entrada, ele deve emitir o código fonte do programa original.
Nota: Ambos os programas devem funcionar para qualquer entrada, não apenas seu próprio código-fonte; portanto, não é permitido um quine de um caractere.
Exemplo
Digamos que o seguinte seja um programa válido que gire sua entrada 90 graus em uma linguagem hipotética ExampleLang.
^f a2% 3
lk (^_^&
v
D8 $4 /
Quando executado como entrada, ele gera outro programa válido que gira sua entrada no sentido anti-horário:
D l^
8 kf
$ (a
4 ^2
_%
^
/v&3
Este segundo programa, quando fornecido a si próprio como entrada, gera o programa original. Observe que a linha em branco deve ter quatro espaços e há um espaço à direita na penúltima à última linha que não pode ser renderizado na remarcação. Esclarecer:
$ examplelang program < program > rotProg
$ examplelang rotProg < rotProg > program1
$ diff -s program program1
Files program and program1 are identical
O programa mais curto vence. As brechas padrão são proibidas.
:.+
ser quebrado em várias linhas?