Zweck
Die Idee ist, den Code bereitzustellen, der erforderlich ist, um eine 32-Bit-Ganzzahl einem aussprechbaren Wort mit maximal 9 Zeichen zuzuordnen. Dies kann beispielsweise nützlich sein, um das Speichern einer Seriennummer zu erleichtern oder ein Formular einzugeben.
Sowohl das Verfahren zum Übersetzen einer Ganzzahl in das entsprechende Wort als auch zum Zurückübersetzen eines Wortes in die entsprechende Ganzzahl sind erforderlich.
Regeln
Es muss eine Eins-zu-Eins-Zuordnung zwischen Ganzzahlen und Wörtern geben, und der gesamte Satz von 32-Bit-Ganzzahlen (oder, anders ausgedrückt, jede Ganzzahl von 0 bis 4294967295) muss zugeordnet werden können. Obwohl offensichtlich nicht alle Wörter aussagekräftig sind und die Eingabe von Wörtern, die keiner Ganzzahl zugeordnet sind, möglicherweise ein nicht angegebenes Verhalten aufweist.
Es steht Ihnen frei, genau zu entscheiden, welche "aussprechbaren" Wörter sinnvoll sind und wie die Zuordnung erfolgt. Die Wörter müssen jedoch mindestens die folgenden Regeln befolgen:
- Nur die grundlegenden 26 Buchstaben (A ... Z) sollten als Zeichen verwendet werden. Akzente, Gehäuse usw. sollten nicht verwendet werden, um die möglichen Kombinationen zu erweitern.
- Maximal 9 Zeichen pro Wort.
- Zwei Konsonanten (BCDFGHJKLMNPQRSTVWXZ - 20 Möglichkeiten) sollten nicht nebeneinander platziert werden (sie müssen von Vokalen umgeben sein).
- Zwei Vokale (AEIOUY - 6 Möglichkeiten) sollten nicht nebeneinander platziert werden (sie müssen von Konsonanten umgeben sein).
Hinweis: das einfachste System , in dem Sie alle Wörter haben konstruiert , wie CVCVCVCVC
( C
wobei ein Konsonant und V
Vokal) gibt 4147200000 Kombinationen und eine 32 - Bit - Integer hat 4294967296 möglichen Werte, so dass es nicht genug ist. Sie müssen die Anzahl der Kombinationen erweitern, indem Sie entweder kürzere Wörter oder auch VCVCVCVCV
Kombinationen zulassen.
Es gelten andere Standardregeln, und Standardlücken sind verboten.
Eingänge Ausgänge
Für jede Einreichung müssen zwei Codeteile bereitgestellt werden:
- Eine, die eine Ganzzahl als Argument / Eingabe verwendet und das entsprechende Wort zurückgibt / druckt
- Eine, die ein Wort als Argument / Eingabe verwendet und die entsprechende Ganzzahl zurückgibt / druckt
Alternativ können Sie einen einzelnen Code senden, der beide Vorgänge abwickelt:
- Wenn eine Ganzzahl als Eingabe angegeben wird, wird das entsprechende Wort ausgegeben
- Wenn eine Zeichenfolge als Eingabe angegeben wird, wird die entsprechende Ganzzahl ausgegeben
Gewinnbedingung
Dies ist ein Code-Golf , bei dem die Antwort mit den wenigsten Bytes (beim Summieren beider Codeteile für Lösungen, die sich für die getrennten Codeteile entscheiden) gewinnt.
Antworten:
JavaScript (ES6), 205 Byte
Der Grenzwert zwischen CVCVCVCVC und VCVCVCVCV ist 4e9, daher beginnt bei 5244160000 (numerische Eingabe) oder
zesuwurib
(Zeichenfolgeneingabe) ein Fehler .quelle
PHP, 353 Bytes
Kodierung + Dekodierung
is_numeric($argn)
enthält den Booleschen Wert. Es ist wahr, wenn die Eingabe eine ganze Zahl ist.PHP, 190 Bytes (Encode) + 195 Bytes (Decodieren) = 385 Bytes
Codierung
5391360000 = 26 * 120 ** 4 Kombinationen sind verfügbar
Online-Versionscodierung ohne E_NOTICE
Erweitert
Eingabe => Ausgabe
Wenn Sie immer 9 Byte Ergebnis müssen ersetzen Sie bitte
while($a)
mitwhile(strlen($r)<9)
+ 10 BytesDekodierung
Erweitert
Eingabe => Ausgabe
Online-Versionsdecodierung ohne E_NOTICE
Zusätzliche Prüfung
Wenn wir eine Überprüfung benötigen, ob eine Zeichenfolge gültig ist.
Fügen Sie
$x.=$b?:0;
am Ende der Decodierungsschleife + 10 Bytes hinzuErsetzen Sie
echo$s;
mitecho!preg_match('#([01])\1$#',$x)?$s:_;
+ 32 Bytesquelle
R, 165 Bytes
Kodierung und Dekodierung in einer Funktion.
Diese Funktion verwendet die Brute-Force-Methode, um alle möglichen Werte zu erstellen und dann einfach den Index zurückzugeben, wenn eine Zeichenfolgeneingabe erfolgt, und die Zeichenfolge zurückzugeben, wenn eine Ganzzahleingabe erfolgt. Infolgedessen ist es sehr langsam und benötigt mehr als 16 GB Speicher!
4.354.560.000 Werte sind möglich. Dies umfasst alle Zeichenfolgen der Form CVCVCVCV (C), wobei das letzte C optional ist.
quelle