Schreiben Sie ein Programm, das eine Zeichenfolge einliest und dieses Wort mit dem phonetischen Alphabet der NATO buchstabiert.
Das Mapping sieht wie folgt aus:
'A' -> 'Alfa'
'B' -> 'Bravo'
'C' -> 'Charlie'
'D' -> 'Delta'
'E' -> 'Echo'
'F' -> 'Foxtrot'
'G' -> 'Golf'
'H' -> 'Hotel'
'I' -> 'India'
'J' -> 'Juliett'
'K' -> 'Kilo'
'L' -> 'Lima'
'M' -> 'Mike'
'N' -> 'November'
'O' -> 'Oscar'
'P' -> 'Papa'
'Q' -> 'Quebec'
'R' -> 'Romeo'
'S' -> 'Sierra'
'T' -> 'Tango'
'U' -> 'Uniform'
'V' -> 'Victor'
'W' -> 'Whiskey'
'X' -> 'Xray'
'Y' -> 'Yankee'
'Z' -> 'Zulu'
Beispiel:
'Hello World' -> ['Hotel', 'Echo', 'Lima', 'Lima', 'Oscar', 'Whiskey', 'Oscar', 'Romeo', 'Lima', 'Delta']
Die Eingabe kann eine beliebige Zeichenfolge sein, besteht jedoch immer nur aus Buchstaben und Leerzeichen. Die Groß- / Kleinschreibung spielt in der Ausgabe keine Rolle, die Eingabe kann jedoch Groß- und Kleinbuchstaben oder beides enthalten. Leerzeichen sollten in der Ausgabe ignoriert werden.
Sie können in jedem vernünftigen Format ausgeben, es muss sich jedoch um eine begrenzte Anzahl von NATO-Rufzeichen handeln.
Alpha
undJuliet
stattdessen.Whisky
im Beispiel ist nicht gleichWhiskey
im Mapping.Antworten:
sfk ,
785957 bytesProbieren Sie es online!
Verwenden Sie einfach das richtige Werkzeug.
Ausgabe ist die Phonetik, die durch ein oder mehrere Leerzeichen getrennt ist.
quelle
IBM PC DOS 8088 Baugruppe,
208204197194192 BytesLaden Sie die ausführbare DOS-Datei NATO.COM herunter:
Probieren Sie es offline! (in DOSBox usw.)
Testausgang:
Aktualisiert, um das erste Zeichen aus dem Wortlisten-Array zu entfernen (spart jedoch nur 11 Byte aufgrund des zusätzlich erforderlichen Codes).
quelle
$
Trennzeichen entfernen und die Wörter durch Großschreibung des ersten Buchstabens voneinander trennen (und erstens meine ich zweitens, da Sie das erste bereits weggelassen haben). (Eine höhere Komprimierungsstufe könnte wahrscheinlich erreicht werden, bevor die zum Dekomprimieren erforderliche Codelänge den Vorteil der Komprimierung überwiegt, aber das einfache Schema der Großbuchstabenbegrenzer wäre ein guter Anfang.)ML.EXE /?
Ausgabe sagtMicrosoft (R) Macro Assembler Version 9.00.30729.01
. Ja, "LfaRavoHarlie" ist genau das, was ich meinte. :) Ich würde das "OR AL, 20H" tun, um es in der Ausgabe wieder in Kleinbuchstaben zu schreiben, aber es liegt an Ihnen..MODEL TINY
.CODE
ORG 100H
START:
am Anfang undEND START
am Ende. Benötigten Sie dies nicht, um es mit MASM 5 zu kompilieren?05AB1E ,
1029695 BytesDie Ausgabe ist eine Liste von NATO-Wörtern mit Titel.
Probieren Sie es online aus.
Erläuterung:
Sehen Sie diese 05AB1E Spitze von mir (Abschnitt Wie das Wörterbuch benutzen? ) Zu verstehen , warum
”AlfaІvo¼¯¤œ®È¨›trotŠˆƒ‹Š™ÈŸtt Kilo´àma—……ÍЗŽêpa¼°«Äoµ†Çâgo¸šÉµ Whiskey Xrayµ‹nkeeâ¸lu”
ist"Alfa Bravo Charlie Delta Echo Foxtrot Golf Hotel India Juliett Kilo Lima Mike November Oscar Papa Quebec Romeo Sierra Tango Uniform Victor Whiskey Xray Yankee Zulu"
. Die Gutschrift für diesen komprimierten Wörterbuch-String geht in diesem Kommentar an @ErikTheGolfer (mit einem hinzugefügtent
fürJuliett
anstelle vonJuliet
).quelle
Jelly ,
8077 BytesProbieren Sie es online! (In der Fußzeile wird die Liste durch Verbinden mit Leerzeichen formatiert, um ein implizites Zerschlagen des Ausdrucks zu vermeiden, wenn sie als vollständiges Programm ausgeführt wird.)
quelle
JavaScript (ES6),
181189 ByteDa der Ausgabefall keine Rolle spielt, können wir Bytes sparen, indem wir Wörter zusammen ausführen:
Probieren Sie es online!
quelle
Python 3 ,
250191 Bytes-47 Bytes dank @Jo King, -2 dank @Jonathan Allen
Es durchläuft alle Nicht-Leerzeichen der Eingabe und wählt für jedes von ihnen die relevante Phrase für den Buchstaben aus, die ein wenig reduziert werden kann, da der erste Buchstabe jeder Phrase das Zeichen selbst ist. Teilt eine Zeichenfolge, anstatt die Phrasen als Array zu speichern, um Bytes aus den unnötigen
'
s und,
s zu speichern .Probieren Sie es online!
Originelle Lösung
Probieren Sie es online!
quelle
if' '<c
Rot ,
210 bis193 BytesProbieren Sie es online!
Erläuterung:
foreach
Durchläuft die Zeichenfolge, nachdem alle Leerzeichen von entfernt wurdentrim/all
.prin
druckt das Zeichen (kein Zeilenumbruch).print
druckt ein Symbolpick
aus der Liste der get-word! s (Symbole), wobei das dem Bereich 1..26 zugeordnete Zeichen als Index verwendet wird.quelle
Sauber , 218 Bytes
Probieren Sie es online!
quelle
C # (Visual C # Interactive Compiler) , 218 Byte
Probieren Sie es online!
Alternative Version mit Split (), 194 Bytes
Probieren Sie es online!
quelle
C ++,
229228 BytesProbieren Sie es online!
Ungolfed:
Ausgabe:
Clean-Capitalization-Version ( 234 Byte ):
Probieren Sie es online!
Ausgabe:
quelle
Maschinensprache IBM PC DOS 8088, 165 Byte
Dies basiert direkt auf der Antwort von gwaugh , aber ich habe 26 Byte durch Weglassen der
und wird daher vom Programm sowieso ignoriert). Das Programm hatte genau dieselbe Länge, um die Tabelle in diesem Format (in dem die Wörter nur durch Großbuchstaben begrenzt sind, die dem doppelten Zweck dienen, auch der zweite Buchstabe jedes Wortes zu sein) oder 2 Bytes verarbeiten zu können länger, wenn die Produktionskapitalisierung unverändert bleibt. Die Tabelle ist 26 Byte kleiner.
$
Trennzeichen aus der "NATO" -Worttabelle und ein zusätzliches Byte durch Nichtüberspringen des ersten Zeichens der Befehlszeilenparameterzeichenfolge (die immer entweder/
oder sein wird) reduziertIm folgenden Programmabbild wird Verkettung durch
:
verwendet, um jede Folge aufeinanderfolgender Bytes anzuzeigen, die einem Befehl entsprechen:Laden Sie die ausführbare DOS-Datei NATO.COM herunter:
Mit unkorrigierter Großschreibung (165 Bytes)
Mit sauberer Großschreibung (167 Bytes)
Bonusversion, bei der der erste Buchstabe jedes Wortes genauso groß geschrieben wird wie die Eingabe (167 Bytes)
Zerlegt:
Beispieleingabe:
Ausgabe (165-Byte-Version):
Clean-Capitalization-Version (167 Byte):
Clean-Capitalization-Version mit derselben Groß- / Kleinschreibung wie die Eingabe (167 Byte):
quelle
Kohle , 99 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Ausgänge im richtigen Fall. Erläuterung:
quelle
Perl 6 ,
176 170166 BytesProbieren Sie es online!
Ausgabe in Großbuchstaben mit dem ersten Buchstaben im Original. Komprimiert die Zeichenfolge, wodurch nur 6 Byte über dem einfacheren Nur-Text gespeichert werden:
Probieren Sie es online!
Erläuterung:
quelle
Japt,
108106 BytesVersuch es
Die Backticks enthalten den komprimierten String:
quelle
PowerShell ,
187183 ByteProbieren Sie es online!
Testskript:
Ausgabe:
quelle
PHP ,
209205206 BytesProbieren Sie es online!
Ausgabe:
Oder 195 Bytes, wobei Leerzeichen nicht vollständig entfernt wurden:
Probieren Sie es online!
Ausgabe:
quelle
[31&ord($l)]
zurück zu wechseln[31&ord($l)-1]
, was zwei Byte kostet. Sie können es aber auch in nur einem Byte beheben, indem Sie es vollständig ausschreibenALfa
.TSQL, 313 Bytes
Golf gespielt:
Ungolfed:
Versuch es
Die Ausgabe endet mit einem Semikolon
quelle
PowerShell,
228225 Byte-3 Bytes dank @mazzy
Probieren Sie es online!
Dies ist wahrscheinlich der hässlichste Code, den ich je geschrieben habe. Darüber hinaus kann dies sicherlich viel kürzer werden. Zu meiner Verteidigung habe ich mich immer noch von den Abschlussprüfungen erholt.
quelle
-split'lfa ravo ...'
ist kürzer, weil '\ s' standardmäßig Splitter ist :)PHP, 212 Bytes
Mit
-nR
oder als Pipe ausführen probieren Sie es online aus .Gibt Warnungen in PHP 7.2 aus; Setzen Sie Array-Elemente in Anführungszeichen, um dies zu beheben.
Gibt einen Unterstrich für Leerzeichen aus.
quelle
C (clang) 309 Bytes
Probieren Sie es online!
quelle
JavaScript, 179 Bytes
Probieren Sie es online!
quelle