Einführung:
In einem Dokument, das ich als Kind zusammengestellt habe, sind viele verschiedene Chiffren gespeichert. Ich habe einige ausgewählt, die meiner Meinung nach am besten für Herausforderungen geeignet sind (nicht zu trivial und nicht zu schwierig), und sie in Herausforderungen umgewandelt. Die meisten von ihnen sind noch im Sandkasten und ich bin mir noch nicht sicher, ob ich sie alle oder nur einige veröffentlichen werde. Hier ist die dritte und einfachste (nach der Computer-Chiffre und der Trifid-Chiffre, die ich zuvor veröffentlicht habe).
Mit einem Clock Cipher verwenden wir das folgende Bild, um Text zu verschlüsseln:
So würde ein Satz wie this is a clock cipher
:
t h i s i s a c l o c k c i p h e r (without additional spaces of course, but added as clarification)
19:7:8:18:00:8:18:00:AM:00:2:11:14:2:10:00:2:8:15:7:4:17
Herausforderung:
sentence_to_encipher
Verschlüsseln Sie einen String wie oben beschrieben.
Herausforderungsregeln:
- Sie können davon ausgehen, dass das
sentence_to_encipher
nur Buchstaben und Leerzeichen enthält. - Sie können entweder Kleinbuchstaben oder Großbuchstaben verwenden (bitte geben Sie an, welche Sie in Ihrer Antwort verwendet haben).
- Sie sind nicht hinzuzufügen führende Nullen für den einstelligen verschlüsselten Buchstaben erlaubt
b
durchj
, aber zwei Nullen00
für Räume sind Pflichtfelder. - Sie sollten
:
als Trennzeichen verwenden, und ein zusätzliches Vor- oder Nachstellen:
ist nicht zulässig. - Sie dürfen Kleinbuchstaben
am
undpm
anstelle von GroßbuchstabenAM
und verwendenPM
, sofern dies konsistent ist.
Allgemeine Regeln:
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Lassen Sie sich von Code-Golf-Sprachen nicht davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, für jede Programmiersprache eine möglichst kurze Antwort zu finden. - Für Ihre Antwort gelten Standardregeln mit Standard-E / A-Regeln. Daher dürfen Sie STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern und vollständige Programme vom Rückgabetyp, verwenden. Ihr Anruf.
- Standardlücken sind verboten.
- Fügen Sie nach Möglichkeit einen Link mit einem Test für Ihren Code hinzu (z. B. TIO ).
- Es wird außerdem dringend empfohlen, eine Erklärung für Ihre Antwort hinzuzufügen.
Testfälle:
Input: "this is a clock cipher"
Output: "19:7:8:18:00:8:18:00:AM:00:2:11:14:2:10:00:2:8:15:7:4:17"
Input: "test"
Output: "19:4:18:19"
Input: "what time is it"
Output: "22:7:AM:19:00:19:8:12:4:00:8:18:00:8:19"
Input: "acegikmoqsuwy bdfhjlnprtvxz"
Output: "AM:2:4:6:8:10:12:14:16:18:20:22:24:00:1:3:5:7:9:11:13:15:17:19:21:23:PM"
Input: "easy peazy"
Output: "4:AM:18:24:00:15:4:AM:PM:24"
[7, ":", 8, ":", "00", ":", 1, ":", 14, ":", 1]
fürhi bob
, oder muss man das Ergebnis anschließen? Übrigens, ordentliche Chiffre!['7', ':', '8', ':', '0', '0', ':', '1', ':', '1', '4', ':', '1']
) verbunden werden sollte.Antworten:
Python 2 ,
7472 BytesProbieren Sie es online!
Übernimmt die Eingabe als Kleinbuchstaben
quelle
05AB1E ,
2221 BytesProbieren Sie es online! oder als Testsuite
Einige alternative 21- Byte-Lösungen:
quelle
ª
das geändert hatte :)Perl 6 , 47 Bytes
Probieren Sie es online!
Anonym Welches Lambda auch immer, das eine Zeichenfolge in beiden Fällen verwendet und die verschlüsselte Zeichenfolge zurückgibt.
Erläuterung:
quelle
Pyth, 25 Bytes
Versuchen Sie es online hier oder überprüfen alle Testfälle auf einmal hier .
quelle
JavaScript (Node.js) , 72 Byte
Nimmt Eingaben in Kleinbuchstaben vor.
Probieren Sie es online!
quelle
Java (JDK) , 95 Byte
Probieren Sie es online!
Credits
quelle
char
zuvar
. :)C # (Visual C # Interactive Compiler) , 70 Byte
Nimmt die Eingabe als Folge von Kleinbuchstaben. Überprüft zuerst, ob das Zeichen ein Leerzeichen ist und konvertiert es in
00
. Als nächstes wird geprüft, ob das Zeichen ein A ist, und es wird in konvertiertAM
. Es prüft erneut auf Z und konvertiert es in,PM
wenn es ist. Wenn das Zeichen alle Prüfungen besteht, wird es in die alphabetische Reihenfolge 1 konvertiert.-2 Bytes dank @dana
Probieren Sie es online!
quelle
Ruby , 49 Bytes
Probieren Sie es online!
Antwort von Port of Jo King's Perl . Nimmt Eingaben als ein Array von Zeichen und gibt eine Zeichenfolge mit AM / PM in Großbuchstaben zurück.
quelle
Rot ,
124121110109 BytesProbieren Sie es online!
quelle
05AB1E , 20 Bytes
Sehr inspiriert von @ Mr.Xcoders 22-Bytes im Kommentar der bestehenden 05AB1E-Antwort von @Emigna .
Nimmt die Eingabe als eine Liste von Kleinbuchstaben (würde 21 Bytes mit einem führenden sein,
S
wenn ich die Eingabe als eine Zeichenkette nehme).Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
quelle
Tcl , 100 Bytes
Probieren Sie es online!
quelle
C # (Visual C # Interactive Compiler) , 98 Byte
Übernimmt die Eingabe als (Kleinbuchstaben-) Zeichen-Array. Probieren Sie es online!
quelle
s=>string.Join(':',s.Select(c=>new[]{c-97+"","AM","PM","00"}["az ".IndexOf(c)+1]))
.Holzkohle , 26 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Nimmt die Eingabe in Kleinbuchstaben vor (kann trivial in Großbuchstaben geändert werden). Erläuterung:
Stellen Sie das Hintergrundzeichen auf
:
. Dies füllt die Lücken zwischen den Ausgabewerten, die durch die richtige Bewegung erzeugt werden.Durchlaufe jedes Zeichen und lasse jedes Mal eine Lücke. (Der erste Zug hat keine Auswirkung, da die Zeichenfläche zu diesem Zeitpunkt noch leer ist.)
Schalten Sie das Zeichen ein und prüfen Sie, ob es ein Leerzeichen ist,
a
oderz
geben Sie den entsprechenden Code aus. Ich benutze×0²
stattdessen00
hier, da letzteres bei zusätzlichen Trennzeichen zwei Bytes kosten würde.Andernfalls geben Sie die 0-indizierte Position des Buchstabens im Kleinbuchstaben als Zeichenfolge aus.
quelle
Gelee , 24 Bytes
Probieren Sie es online!
quelle