Essa tarefa é bastante simples e utiliza três caracteres "operadores" distintos. Sua tarefa é, dada uma simples seqüência de letras, executar a seguinte tarefa para codificá-lo usando <
, >
, *
. Você pode optar por usar letras maiúsculas ou minúsculas, não precisa lidar com as duas.
Explicação de cifra
A cifra é simples, você está usando operações de incremento e decremento para passar da letra 1 até a letra final, *
sendo sua função "enviar". O operador para "incremento" será >
e "decremento" será <
.
Um exemplo usando a palavra adbc
:
- Comece com a primeira letra da palavra, imprima essa letra.
a
- Em seguida, use
>
e<
(como brainfuck) para "navegar" a letra atual para a próxima.a>
resultaria em 'aumento'a
de 1 para a letrab
.a<
resultaria emz
que você está abaixando a letra (ela envolve, você sempre deve escolher a direção que resulta no menor número de operações). - Depois de produzir a combinação minimalizada correta de
<
e>
produzir a*
para indicar que chegamos à próxima letra.
As etapas para codificar adbc
seriam:
a # a
a>>>* # ad
a>>>*<<* # adb
a>>>*<<*>* # adbc
Exemplos
As etapas para codificar aza
seriam:
a # a
a<* # az
a<*>* # aza
Mais exemplos:
"abcdef" = "a>*>*>*>*>*"
"zyaf" = "z<*>>*>>>>>*"
"zzzzzz" = "z*****"
"z" = "z"
"zm" = "z<<<<<<<<<<<<<*" or "z>>>>>>>>>>>>>*" (equidistant)
"zl" = "z>>>>>>>>>>>>*"
"alphabet" = "a>>>>>>>>>>>*>>>>*<<<<<<<<*<<<<<<<*>*>>>*<<<<<<<<<<<*"
"banana" = "b<*>>>>>>>>>>>>>*<<<<<<<<<<<<<*>>>>>>>>>>>>>*<<<<<<<<<<<<<*" OR "b<*<<<<<<<<<<<<<*>>>>>>>>>>>>>*<<<<<<<<<<<<<*>>>>>>>>>>>>>*"
"abcdefghijklmnopqrstuvwxyz" = "a>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*"
"abcdefz" = "a>*>*>*>*>*<<<<<<*"
Regras
- Estamos codificando, não decodificando, então não estrague tudo.
- Você pode assumir que a mensagem conterá letras
[A-Z]
ou[a-z]
sua escolha. - Você pode usar qualquer caractere que não seja da letra / numérico / reservado para indicar
*
(EG$
). - Você deve ter o final
*
, não está implícito nas repetições. - Você pode assumir que não há cadeias vazias, mas um único caractere é possível.
- Se for equidistante para a próxima letra, você poderá escolher uma direção.
- Isso é código-golfe , vitórias mais baixas na contagem de bytes.
Por favor, explique sua resposta, pois ajuda outras pessoas a aprender dessa maneira.
zl
deveria usar >
.
alphabet
é na minha opinião a>>>>>>>>>>>*>>>>*<<<<<<<<*<<<<<<<*>*>>>*<<<<<<<<<<<*
e zl
deve ser z>>>>>>>>>>>>*
e para banana
deveria existe uma segunda soluçãob<*<<<<<<<<<<<<<*>>>>>>>>>>>>>*<<<<<<<<<<<<<*>>>>>>>>>>>>>*
zm
. A @jorg boas capturas, corrigida todas elas, foi um esforço manual.
abcdefghijklmnopqrstuvwxyz
e não é sua própria entrada?