Questa attività è piuttosto semplice e utilizza tre caratteri "operatore" distinti. Il vostro compito è, data una semplice sequenza di lettere, eseguire le seguenti operazioni per codificare utilizzando <
, >
, *
. Puoi scegliere di utilizzare lettere maiuscole o minuscole, non è necessario gestirle entrambe.
Spiegazione del cifrario
Il codice è semplice, stai usando le operazioni di incremento e decremento per passare dalla lettera 1 alla lettera finale, *
essendo la tua funzione "submit". L'operatore per "incremento" sarà >
e "decremento" sarà <
.
Un esempio usando la parola adbc
:
- Inizia con la prima lettera della parola, genera quella lettera.
a
- Quindi, utilizzare
>
e<
(come brainfuck) per "navigare" dalla lettera corrente a quella successiva.a>
comporterebbe un "aumento"a
di 1 alla letterab
.a<
comporterebbez
perché stai abbassando la lettera (si avvolge, devi sempre scegliere la direzione risultante nel MINIMO numero di operazioni). - Dopo aver emesso la corretta combinazione minimizzata di
<
e>
output a*
per indicare che abbiamo raggiunto la lettera successiva.
I passaggi per codificare adbc
sarebbero:
a # a
a>>>* # ad
a>>>*<<* # adb
a>>>*<<*>* # adbc
Esempi
I passaggi per codificare aza
sarebbero:
a # a
a<* # az
a<*>* # aza
Altri esempi:
"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>*>*>*>*>*<<<<<<*"
Regole
- Stiamo codificando non decodificando, quindi non rovinare tutto.
- Puoi presumere che il messaggio conterrà lettere
[A-Z]
o[a-z]
, a tua scelta. - È possibile utilizzare qualsiasi carattere non lettera / numerico / riservato per indicare
*
(EG$
). - Devi avere il finale
*
, non è implicito nelle ripetizioni. - Non puoi assumere stringhe vuote, ma è possibile un singolo carattere.
- Se è equidistante in entrambi i modi dalla lettera successiva, puoi scegliere una direzione.
- Questo è code-golf , vince il conteggio di byte più basso.
Spiega la tua risposta, aiuta gli altri a imparare in questo modo.
zl
dovrei usare >
.
alphabet
è secondo me a>>>>>>>>>>>*>>>>*<<<<<<<<*<<<<<<<*>*>>>*<<<<<<<<<<<*
e zl
dovrebbe essere z>>>>>>>>>>>>*
e per banana
dovrebbe esistere una seconda soluzioneb<*<<<<<<<<<<<<<*>>>>>>>>>>>>>*<<<<<<<<<<<<<*>>>>>>>>>>>>>*
zm
. @jorg buone catture, risolto tutti, è stato uno sforzo manuale.
abcdefghijklmnopqrstuvwxyz
e non è il suo input?