Diese Aufgabe ist recht einfach und verwendet drei unterschiedliche "Operator" -Zeichen. Ihre Aufgabe ist es , eine einfache Folge von Buchstaben angegeben, führen Sie die folgende Aufgabe , es zu codieren , mit <
, >
, *
. Sie können entweder Groß- oder Kleinbuchstaben verwenden. Sie müssen nicht beide Zeichen verarbeiten.
Erklärung der Chiffre
Die Verschlüsselung ist einfach: Sie verwenden Inkrementierungs- und Dekrementierungsoperationen, um vom Buchstaben 1 zum Endbuchstaben zu gelangen, *
wobei Sie die Funktion "Senden" haben. Der Operator für "Inkrementieren" ist >
und "Dekrementieren" ist <
.
Ein Beispiel mit dem Wort adbc
:
- Beginnen Sie mit dem ersten Buchstaben des Wortes und geben Sie diesen Buchstaben aus.
a
- Verwenden Sie
>
als nächstes und<
(wie brainfuck), um durch den aktuellen Buchstaben zum nächsten zu navigieren.a>
würde dazu führena
, dass der Buchstabe um 1 erhöht wirdb
.a<
Dies würde dazu führen,z
dass Sie den Buchstaben absenken (er wird umbrochen, Sie müssen immer die Richtung wählen, die zu der MINDESTEN Anzahl von Operationen führt). - Nach der Ausgabe der richtigen minimierten Kombination von
<
und>
Ausgabe von a,*
um anzuzeigen, dass wir den nächsten Buchstaben erreicht haben.
Die zu codierenden Schritte adbc
wären:
a # a
a>>>* # ad
a>>>*<<* # adb
a>>>*<<*>* # adbc
Beispiele
Die zu codierenden Schritte aza
wären:
a # a
a<* # az
a<*>* # aza
Mehr Beispiele:
"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>*>*>*>*>*<<<<<<*"
Regeln
- Wir codieren und nicht decodieren, also bring das nicht durcheinander.
- Sie können davon ausgehen, dass die Nachricht Buchstaben
[A-Z]
oder[a-z]
Ihre Wahl enthält. - Sie können ein beliebiges nicht buchstabiertes / numerisches / reserviertes Zeichen verwenden, um
*
(EG$
) zu kennzeichnen . - Sie müssen das Ende haben
*
, es ist nicht implizit bei Wiederholungen. - Sie dürfen keine leeren Zeichenketten annehmen, aber ein einzelnes Zeichen ist möglich.
- Wenn der Abstand zum nächsten Buchstaben gleich groß ist, können Sie eine Richtung wählen.
- Dies ist Code-Golf , die niedrigste Anzahl an Bytes gewinnt.
Bitte erläutern Sie Ihre Antwort, es hilft anderen, auf diese Weise zu lernen.
zl
sollte verwenden >
.
alphabet
ist meiner meinung nach a>>>>>>>>>>>*>>>>*<<<<<<<<*<<<<<<<*>*>>>*<<<<<<<<<<<*
und zl
sollte z>>>>>>>>>>>>*
und banana
sollte es eine zweite lösung gebenb<*<<<<<<<<<<<<<*>>>>>>>>>>>>>*<<<<<<<<<<<<<*>>>>>>>>>>>>>*
zm
. @jorg gute fänge, alle behoben, war ein manueller aufwand.
abcdefghijklmnopqrstuvwxyz
eine eigene Eingabe dar und ist das nicht?