Ein großer Teil der Funkkommunikation ist das Phonetische Alphabet der NATO , das Buchstaben als Wörter verschlüsselt, damit sie über Funkverbindungen leichter verständlich sind. Ihre Aufgabe ist es, sie einzeln zu drucken, wenn Sie sie annehmen möchten.
Sie müssen genau diese Zeichenfolge auf stdout drucken:
A: Alfa
B: Bravo
C: Charlie
D: Delta
E: Echo
F: Foxtrot
G: Golf
H: Hotel
I: India
J: Juliet
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
Regeln:
- Ihr Programm nimmt keine Eingabe
- Standardlücken sind nicht zulässig .
- Wenn es in Ihrer Sprache eingebaute Elemente gibt, die Buchstaben an ihre NATO-Entsprechungen weiterleiten, dürfen Sie diese nicht verwenden (ich sehe Sie Mathematica an).
- Möglicherweise haben Sie nachgestellte Leerzeichen und eine nachgestellte Zeile.
code-golf
kolmogorov-complexity
alphabet
sagiksp
quelle
quelle
A: Alpha
?Juliett
nichtJuliet
undX-ray
stattdessen seinXray
.Antworten:
Python 2 ,
189186 BytesProbieren Sie es online!
Zurück: (das war cool, aber ich erkannte, dass die einfachere Version durch ein Byte kürzer gemacht werden könnte)
quelle
Jelly , 76 Bytes
Probieren Sie es online!
Wie?
So ziemlich nur Wörterbuchwerte und Komprimierung. Der Code zwischen
“
und»
ist nur ein komprimierter Wert, der die Zeichenfolge bildet,"Alfa Bravo Charlie Delta Echo Foxtrot Golf Hotel India Juliet Kilo Lima Mike November Oscar Papa Quebec Romeo Sierra Tango Uniform Victor Whiskey Xray Yankee Zulu"
indem alle Wörter (mit einzelnen Leerzeichen, mit Ausnahme von"Alfa"
) in Jellys Wörterbuch nachgeschlagen werden (außer" Xray"
denen, die nicht im Wörterbuch enthalten sind, also der direkte Zeichenfolgenwert" X"
und das Wörterbuch Eintrag"ray"
anstelle) verwendet.Der Rest des Codes erledigt den Rest:
quelle
Netzhaut , 156 Bytes
Die Anzahl der Bytes setzt die Kodierung nach ISO 8859-1 voraus.
Probieren Sie es online!
quelle
05AB1E ,
10298 BytesDank Erik the Outgolfer 4 Bytes gespart
Probieren Sie es online!
Erläuterung
Verwendet die Wörterbuchkomprimierung für die Wörter im Wörterbuch von 05AB1E.
Verwendet, wann immer möglich, eine teilweise Wörterbuchkomprimierung für andere Wörter.
Klartextwörter, bei denen beides nicht möglich ist.
quelle
”AlfaІvo¼¯¤œ®È¨›trotŠˆƒ‹Š™ÈŸt Kilo´àma—……ÍЗŽêpa¼°«Äoµ†Çâgo¸šÉµ Whiskey Xrayµ‹nkeeâ¸lu”
.pa
undli
im Wörterbuch, aber ich muss sie verpasst haben. Ich habe nicht in Betracht gezogenya
undzu
als Worte :)Ruby, 169 Zeichen
(Stark auf Jonathan Allan ‚s Python 2 Lösung. Wenn Sie wie die Idee, bitte die ursprüngliche Antwort upvote.)
Probelauf:
quelle
Java 7,
242225222217 BytesErläuterung:
Testcode:
Probieren Sie es hier aus.
quelle
Oktave,
215210209 Bytes5 Bytes gespart dank Luis Mendo.Ich habe dank Luis Mendo 4 Bytes gespart, aber wenn ich den Ansatz ändere, kann ich noch einen speichernProbieren Sie es online!
Wenn ich die Leerzeichen entfernen würde, würde ich 25 Bytes sparen, aber dannmüsste ich einen regulären Ausdruck verwenden. Der reguläre Ausdruck selbst würde einige Bytes kosten, und er würde auch den Großbuchstaben aller Wörter entfernen und mich mit den Wörternlfa, ravo
usw. zurücklassen . Ich müsste daher die neuen Zeichenfolgen mit den führenden Zeichen verketten. All dies kostet Bytes.Alte Erklärung:
quelle
'split'
wäre länger hier'split'
war kürzer: 209 :)PHP,
202227196187 BytesVielen Dank an Dewi Morgan für das Speichern von 9 Bytes
https://repl.it/GMkH/1
ältere Versionen
Danke an manatwork und insertusernamehere für die Einsparung von 31 Bytes!
https://eval.in/749541
Dank insertusernamehere für die Feststellung, dass die Ausgabe mit der vorherigen Version falsch war.
https://repl.it/GKS8/3
https://repl.it/GKS8/2
quelle
$a
? Verschieben Sie einfach den gesamtenpreg_split()
Aufruf inforeach
den Parameter. Dann wird kein Leerzeichenas
mehr benötigt.PREG_SPLIT_NO_EMPTY
, verwenden Sie besser seinen Wert:1
. Aber ich persönlich würde den regulären Ausdruck zwicken statt:/\B(?=[A-Z])/
.:D
immer noch an das Codegolfingpreg_split
.echo preg_replace('/([A-Z])[a-z]+/',"$1 = $0\n",Alfa...Zulu);
Brachylog , 178 Bytes
Probieren Sie es online!
Erläuterung
quelle
PHP,
188186180174 BytesKeine nachgestellten Leerzeichen, eine führende Zeile
Ersetzt einfach alle Großbuchstaben in der komprimierten Zeichenfolge durch
<newline><letter><colon><space><letter>
quelle
gzinflate
-ing das Ergebnis vongzdeflate(Alfa...Zulu)
.and for your other question, yes, but just one.
x86-Assembly, 512 Byte
Kompiliert mit NASM und getestet mit QEMU. Zum Booten müssen Sie eine 2-Byte-Boot-Signatur am Ende des Bootsektors einfügen (510 Byte in der Datei), damit 317 Byte verloren gehen und der kompilierte Code mit Nullen gefüllt wird. Dies ist mein erstes Golfspiel, daher muss ich mich für alle riesigen Fehler entschuldigen.
Ausgabe
Dies ist, was der obige Code ausgibt. Wie Sie sehen können A: Alfa fehlt und das liegt daran, dass die Eingabeaufforderung 25 Zeilen hoch ist ...
Um zu beweisen , ich gedruckt A: Alfa I ersetzt
0,"ulu"
mit ,32,"Z: Zulu"
so dass Zulu ist ein auf der gleichen Linie wie Yankee.Ich würde es begrüßen, wenn mir jemand sagen würde, dass ich die 317 Bytes der Nullfüllung von meinem Code subtrahieren könnte, so dass es 195 Bytes wären. Auch wenn dies sogar gültig ist, weil die Ausgabe nicht auf den Bildschirm passt.
quelle
Python 2 ,
186182 BytesProbieren Sie es online!
quelle
C (MinGW, Clang), 218 Bytes
Vielen Dank an @gastropner!
Probieren Sie es online!
C
259236 BytesProbieren Sie es online!
quelle
gcc src.c
oderclang src.c
. Hier ist ein Beispiellauf mit einer hinzugefügten Hauptfunktion, damit der Code tatsächlich verlinktf
mit ersetzt werden,main
damit der Code gültig ist, oder vermisse ich eine Golf-Konvention.i;f(){char s[]="lfa:ravo:harlie:elta:cho:oxtrot:olf:otel:ndia:uliet:ilo:ima:ike:ovember:scar:apa:uebec:omeo:ierra:ango:niform:ictor:hiskey:ray:ankee:ulu";for(i=64;++i<91;)printf("%c: %c%s\n",i,i,strtok(i^65?0:s,":"));}
nicht klar , ob es überall funktioniert: TIO segfaults aber funktioniert in MinGW zumindest. Kann nicht viel von einem Grund sehen, warum es nicht funktionieren würde.Gema, 168 Zeichen
Probelauf:
quelle
Bash ,
224205188180 BytesVielen Dank an Digital Trauma für das Entfernen von 17 Bytes und das manuelle Arbeiten von 8 Bytes.
Probieren Sie es online!
quelle
a
ist zu lang.set {A..Z};for i in lfa … ulu;{ echo $1: $1$i;shift;}
Python 2 , 198 Bytes
Probieren Sie es online!
Nicht aufregend oder klug. Blättern Sie einfach durch die Liste und drucken Sie den ersten Buchstaben, dann ':' und dann das ganze Wort.
quelle
PHP,
184 Bytes179 Bytes178speicherte ein einzelnes Byte, indem er preg_filter anstelle von preg_replace verwendete.
Ursprüngliche Antwort
184 Bytes179 Bytesnutzt die Tatsache, dass es sortiert ist, um das erste Zeichen im laufenden Betrieb zu generieren.
5 Bytes von @Titus gespeichert.
quelle
for($c=A;$s=[lfa,...,ulu][+$i++];$c++)echo"$c: $c$s\n";
. Netter Regex.SOGL , 91 Bytes
Erläuterung:
quelle
GNU sed , 165 Bytes
Dieses Skript basiert auf der Retina-Antwort von Martin Ender.
Probieren Sie es online!
Erläuterung:
quelle
Bash , 184 Bytes
Probieren Sie es online!
quelle
{,}
Trick bei der Klammererweiterung ist eine sehr clevere Methode, um jedes Listenmitglied zu verdoppeln!Lua,
278260 BytesNochmals vielen Dank an Manatwork für das Speichern von 18 Bytes!
Probieren Sie es online aus
ältere Versionen
https://repl.it/GK8J
Wenn ich das erste Mal Lua mache, kann ich wahrscheinlich mehr Golf spielen, aber ich dachte, ich würde es trotzdem als Antwort hinzufügen.
quelle
a
? ;) Sie können die gesamte Array-Deklaration in das verschiebenfor
. Und diefor
..in
-Syntax hilft dabei, das Schreiben dieser langen Array-Indizes zu vermeiden: pastebin.com/rxck79md Seltsame Lua-Sache: Wenn Sie eine Funktion deklarieren und 26 Mal "manuell" aufrufen (ich meine, nicht in einer Schleife), ist sie kürzer: pastebin. com / FMF9GmLJ¯\_(ツ)_/¯
Aus dem einfachen Grund, dass ich Lua noch nie zuvor benutzt habe, habe ich einfach das Handbuch befolgt, um zu versuchen, es zum Laufen zu bringen, aha. Vielen Dank an @manatwork für die Info, davon wusste ich nichts.Lua , 177 Bytes
Probieren Sie es online!
Ohne nachfolgende Newline 180 Bytes:
Erläuterung
Es verwendet die string.gsub-Substitutionsfunktion von Lua, um Muster mit den Großbuchstaben abzugleichen. Die Buchstaben werden dann durch das angeforderte Format (plus die Buchstaben selbst) ersetzt. Mit demselben Durchgang werden auch Zeilenumbrüche hinzugefügt.
Die Unterfunktion am Ende schneidet Zeilenumbrüche nur von Anfang an ab und funktioniert auch gut, um den zweiten Rückgabewert von gsub zu verbergen, der die Menge der Ersetzungen gewesen wäre.
quelle
PowerShell ,
187 -185 ByteProbieren Sie es online!
Schleifen von
0
bis25
, wobei jede Iteration$a
das entsprechende Kapital bildetchar
. Dann mit: $a
(dh dem Doppelpunkt-Leerzeichen-Buchstaben) verkettet . Diese Zeichenfolge wird dann mit einer Zeichenfolge verkettet, die durch Indizieren in ein Array erstellt wird, indem-split
die phonetische Zeichenfolge auf Leerzeichen getippt wird. Jede dieser 26 Zeichenfolgen ist in der Pipeline belassen und implizitWrite-Output
verbleibt bei Programmabschluss wird eine neue Zeile zwischen den Elementen eingefügt.Zwei Bytes dank @Matt gespart.
quelle
0..25|%{($a=[char]($_+65))+": $a"+(-split'lfa ravo harlie elta cho oxtrot olf otel ndia uliet ilo ima ike ovember scar apa uebec omeo ierra ango niform ictor hiskey ray ankee ulu')[$_]}
C
216215212 BytesProbieren Sie es online!
Eine ausführliche, lesbare, gut kommentierte und absolut gültige (keine Compiler-Warnungen) Version des Programms finden Sie unten:
quelle
char*s
sondern auch dieprintf
könnten da reingehen . Auf diese Weise werden weitere 3 Bytes gespeichert - ein Semikolon und 2 geschweifte Klammern, da diese nicht mehr benötigt werden, da nur eine Anweisung im Hauptteil vorhanden ist - die anderefor
Schleife.JavaScript ES6,
216 187 184 180174 BytesEin Byte dank Neil gespeichert. 5 Bytes gespart dank ETHproductions.
Japt , 127 Bytes
Probieren Sie es online!
2 Bytes dank obarakon gespeichert.
quelle
A: A
, der Zeichenfolge manuell voran zu stellen. Sie können jedoch immer noch ein anderes Byte speichern, indem Sie anstelle von ein Literal-Newline-Zeichen verwenden\n
.$&
s durch die Übereinstimmung, sodass Sie z. B."\n$&: $&"
für beide langs ausführen können, anstatt Funktionen zu verwenden.@"\n{X}: {X}"}
in Japt auf nur ändern"\n$&: $&"
:-)" x
und das Einfügen eines-x
Flags in die Eingabe löschen. Beachten Sie, dass das Flag 1 Byte zu den Gesamtbytes hinzufügt.PHP,
175171164162 BytesAnmerkung: Benötigt keine komprimierte Datei mehr, verwendet IBM-850-Codierung.
Laufen Sie wie folgt:
Erläuterung
Druckt jedes Zeichen einzeln (durch ODER mit einem Leerzeichen unterstrichen). Wenn ein Großbuchstabe gefunden wird, wird zuerst eine Zeichenfolge der Form "\ nA: A" gedruckt.
Optimierungen
$l
mit explode param zu kombinieren ) gespart, ohne eine führende neue Zeile zu verhindernquelle
Japt,
216214 BytesErklärung: Es gibt wahrscheinlich einen viel besseren Weg, aber da ich neu bin, weiß ich es nicht. Ich habe die Zeichenkette im Grunde mit Oc "komprimiert und diese Zeichenkette mit Od" dekomprimiert.
Wenn jemand mir helfen möchte, Bytes zu sparen, indem er etwas anderes als Zeilenumbrüche verwendet, würde ich mich freuen, das zu lernen!
edit: Speichert 2 Bytes mit `anstelle von Od"
quelle
:/
Pyke, 89 Bytes
quelle
Qbasic, 383 Bytes
Nicht beeindruckend, aber was es wert ist:
quelle
data
Anweisungread
innerhalb derfor
..next
-Schleife gespeichert werden ??"A: Alfa"
nur 360 Bytes?/// 220 Bytes
Probieren Sie es online!
-20 Bytes dank @ETHproductions.
quelle