Este desafio é criado em comemoração à minha primeira língua esotérica, Backhand !
O backhand é uma linguagem unidimensional com um fluxo de ponteiro não linear. O ponteiro move três etapas por vez, executando apenas a terceira instrução.
O programa 1..1..+..O..@
adicionará 1 + 1 e a saída 2 antes de terminar. As instruções intermediárias são ignoradas, portanto, 1<>1()+{}O[]@
é exatamente o mesmo programa.
Quando o ponteiro está prestes a sair do final da fita, ele inverte a direção e avança para o outro lado, assim 1.@1.O+.
como o mesmo programa. Note que conta apenas a instrução final uma vez. Isso nos permite comprimir a maioria dos programas lineares, como1O+1@
Seu desafio aqui é escrever um programa ou função que use uma string e emitir as instruções que seriam executadas se o programa fosse interpretado como Backhand (você não precisa manipular nenhuma instrução real de Backhand). Você deve produzir apenas até que o ponteiro apareça no último caractere da string (nesse ponto a execução normalmente retornaria).
Mas espere , isso não é tudo! Quando o seu próprio programa é interpretado dessa maneira, o código resultante deve gerar um dos itens abaixo:
(Mostly) works
Turing complete
'Recreational'
(as aspas podem ser'
ou"
, mas não as duas)Perfectly okay
Only a few bugs
Por exemplo, se o seu código-fonte for code 2 backhand
, o programa ce cankb od2ahd
deve exibir uma dessas frases.
Casos de teste:
"1 1 + O @" -> "11+O@"
"1O+1@" -> "11+O@"
"HoreWll dlo!" -> "Hello World!"
"abcdefghijklmnopqrstuvwxyz" -> "adgjmpsvyxurolifcbehknqtwz"
"0123456789" -> "0369" (not "0369630369")
"@" -> "@"
"io" -> "io" (Cat program in Backhand)
"!?O" -> "!?O" (Outputs random bits forever in Backhand)
"---!---!" -> "-!-----!"
E um programa de referência escrito, é claro, Backhand ( isso pode ser um pouco complicado) Ok, acho que o corrigi).
Regras.
- As brechas padrão são proibidas
- A entrada do primeiro programa conterá apenas ASCII e novas linhas imprimíveis (ou seja, bytes
0x20
-0x7E
além de 0x0A) - Você pode escolher se o seu segundo programa é convertido do primeiro por bytes ou por caracteres UTF-8.
- Segundo programa:
- O case não importa, portanto, sua saída pode ser
pErFectLy OKay
se você desejar. - Qualquer quantidade de espaço em branco à direita / à esquerda (nova linha, guias, espaços) também é aceitável.
- O segundo programa deve ter o mesmo idioma que o primeiro, embora não necessariamente o mesmo formato (programa / função)
- É um prazer incluir sugestões dos comentários sobre frases extras (desde que não sejam muito curtas)
- O case não importa, portanto, sua saída pode ser
- Como se trata de código-golfe , seu objetivo é obter a resposta mais curta para o seu idioma!
- Em duas semanas, concederei uma recompensa de 200 à resposta mais curta do Backhand.
"---!---!"
(ou qualquer sequência em que o último caractere apareça mais de uma vez) #