Escreva um código que atue como um programa para gatos. Ou seja, para inserir uma string e produzi-la como está. Mas a reversão normal do seu código deve gerar a reversão normal da string de entrada. E a reversão visual do seu código deve gerar a reversão visual da sequência de entrada.
A reversão normal é a sequência de caracteres invertida de uma sequência. A reversão visual é a reversão normal, com os caracteres ()[]{}<>
substituídos por )(][}{><
respectivamente.
Você pode usar qualquer página de código que tenha os caracteres ()[]{}<>
e seja publicada antes deste desafio para definir caracteres. Você deve usar a mesma página de código para todo o seu código. Seu código original deve ser válido nesta página de códigos, e a aplicação de qualquer código reverso a ele deve render-se.
Este é o código-golfe , o código mais curto em bytes vence.
Exemplo
Para a corda AB(XY)
, suas reversões normal e visual são )YX(BA
e (YX)BA
respectivamente.
Se o seu código (em um idioma hipotético) for AB(XY)
, então o código )YX(BA
e (YX)BA
deve gerar as reversões normal e visual da sequência de entrada, respectivamente. E AB(XY)
deve atuar como um programa para gatos.
fonte
Respostas:
05AB1E , 16 bytes
Usa o fato de 05AB1E ter uma constante predefinida
"()<>[]{}"
e não afetar a reversão visual.Código:
Explicação:
Experimente online!
Invertida:
Explicação:
Experimente online!
Visualmente invertido:
Explicação:
Experimente online!
Usa a codificação CP-1252 .
fonte
CJam, 21 bytes
Teste aqui.
Reversão normal:
Teste aqui.
Reversão visual:
Teste aqui.
Explicação
Primeiro, o código normal:
Isso é simples:
q
lê todas as entradas,e#
comenta o restante do programa e a entrada é impressa implicitamente no final.Agora a reversão normal:
E, finalmente, a reversão visual:
fonte
Haskell, 124 bytes
Frente:
Reversão normal:
Reversão visual:
Cada versão define uma função
f
que pega e retorna uma string. No modo de encaminhamentof
é a função de identidadeid
, o restante do código é um comentário. No modo inverso normal, a guarda1<2
nof
éTrue
, por isso,reverse
é aplicada. No modo de reversão visual, o<
comutador é para>
e a proteção éFalse
. A segunda guarda é inversamente eTrue
no modo visual, portanto,q
é aplicado adicionalmente que alterna "() <> {} []".Além disso,
<
e>
nos guardas, meu código não usa nenhum dos colchetes, então eles não podem ser bagunçados.fonte
Bash + utilitários linux comuns, 51
Reversão normal:
Reversão visual:
O principal truque aqui é que a sequência
()[]{}<>
é codificada como 691E97CA5D607DB5 (base 15). Odc
comando resultante produzirá esse mesmo resultado após qualquer tipo de reversão. No entanto, a'()[]{}<>'
string literal é sensível ao tipo de reversão.tac
é necessário para reverter a ordem das linhas de entrada erev
é necessário reverter os caracteres de cada linha. Qualquer entrada ASCII deve ser aceitável.fonte
MATL,
26242216 bytesfrente
Experimente Online!
Explicação:
Reversão normal:
Experimente Online!
Explicação:
Reversão visual:
Experimente Online!
Explicação:
fonte
()[]{}<>
substituídos por)(][}{><
respectivamente.GolfScript,
3228 bytesExperimente online!
Reversão normal:
Experimente online!
Reversão visual:
Experimente online!
O fato de um incomparável
}
finalizar o programa no GolfScript tornou isso bastante simples. No entanto, tenho certeza de que meu código para trocar os colchetes ainda não é o ideal.fonte
Python 2.7, 208 bytes
frente
Reversão normal
https://eval.in/574639
Reversão visual
https://eval.in/574638
Todas as instruções são lidas de stdin até EOF.
Nada super inteligente aqui. Comentários finais para executar apenas o código de encaminhamento versus o código de
exec
retorno e, em seguida, uma instrução em um bloco try para detectar erros de sintaxe para as duas reversões diferentes.fonte