Dużą część komunikacji radiowej stanowi alfabet fonetyczny NATO , który koduje litery jako słowa, aby ułatwić ich zrozumienie przez komunikatory. Twoim zadaniem, jeśli chcesz to zaakceptować, jest wydrukowanie ich jeden po drugim.
Musisz wydrukować ten dokładny ciąg na standardowe wyjście:
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
Zasady:
- Twój program nie przyjmuje danych wejściowych
- Standardowe luki są niedozwolone .
- Jeśli w twoim języku są jakieś wbudowane elementy, które zmieniają litery w ekwiwalenty NATO, nie możesz ich użyć (patrzę na ciebie Mathematica).
- Możesz mieć końcowe spacje i jedną końcową nową linię.
code-golf
kolmogorov-complexity
alphabet
sagiksp
źródło
źródło
A: Alpha
?Juliett
,Juliet
a nieX-ray
zamiastXray
.Odpowiedzi:
Python 2 ,
189186 bajtówWypróbuj online!
Poprzedni: (to było fajne, ale zdałem sobie sprawę, że prostsza wersja może być krótsza o bajt)
źródło
Galaretka , 76 bajtów
Wypróbuj online!
W jaki sposób?
Prawie tylko wartości słownikowe i kompresja. Kod pomiędzy
“
i»
jest tylko skompresowaną wartością, która utworzy ciąg"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"
, wyszukując wszystkie słowa (z pojedynczymi prefiksami spacji, z wyjątkiem"Alfa"
) w słowniku Jelly (z wyjątkiem" Xray"
których nie ma w słowniku, więc bezpośrednia wartość ciągu" X"
i słownik"ray"
zamiast tego używane są wpisy ).Reszta kodu zajmuje się resztą:
źródło
Siatkówka , 156 bajtów
Liczba bajtów zakłada kodowanie ISO 8859-1.
Wypróbuj online!
źródło
05AB1E ,
10298 bajtówZaoszczędzono 4 bajty dzięki Erikowi Outgolfer
Wypróbuj online!
Wyjaśnienie
Używa kompresji słownika dla słów w słowniku 05AB1E.
Używa częściowej kompresji słownika, gdy jest to możliwe dla innych słów.
Słowa w postaci zwykłego tekstu, gdy żadne z nich nie jest możliwe.
źródło
”AlfaІvo¼¯¤œ®È¨›trotŠˆƒ‹Š™ÈŸt Kilo´àma—……ÍЗŽêpa¼°«Äoµ†Çâgo¸šÉµ Whiskey Xrayµ‹nkeeâ¸lu”
.pa
ili
w słowniku, ale musi je przegapić. Nie zastanawiałem sięya
izu
jak słowa :)Ruby, 169 znaków
(Mocno oparty na Jonathan Allan „s Python 2 rozwiązania. Jeśli podoba Ci się pomysł, proszę upvote oryginalną odpowiedź.)
Przykładowy przebieg:
źródło
Java 7,
242225222217 bajtówWyjaśnienie:
Kod testowy:
Wypróbuj tutaj.
źródło
Oktawa,
215210209 bajtówZaoszczędź 5 bajtów dzięki Luisowi Mendo.Zaoszczędziłem 4 bajty dzięki Luisowi Mendo, ale zmiana podejścia pomaga mi uratować jeszcze jedenWypróbuj online!
Gdybym pozbył się spacji, zapisałbym 25 bajtów, alemusiałbym użyć wyrażenia regularnego. Sam regex kosztowałby sporo bajtów, a także usunąłby wielką literę wszystkich słów, pozostawiając mnie ze słowamilfa, ravo
itp. W związku z tym musiałbym połączyć nowe ciągi z wiodącymi znakami. Wszystkie te koszty bajtów.Stare wyjaśnienie:
źródło
'split'
byłoby tu dłużej'split'
był krótszy: 209 :)PHP,
202227196187 bajtówDzięki Dewi Morgan za oszczędność 9 bajtów
https://repl.it/GMkH/1
starsza wersja
Dzięki manatwork i inserttusernamethere do zaoszczędzenia 31 bajtów!
https://eval.in/749541
Dzięki inserttusernamehere za zauważenie, że dane wyjściowe były nieprawidłowe w poprzedniej wersji.
https://repl.it/GKS8/3
https://repl.it/GKS8/2
źródło
$a
? Wystarczy przenieść całepreg_split()
wywołanie wforeach
parametrze. Wówczas żadna przestrzeń dookołaas
nie będzie już potrzebna.PREG_SPLIT_NO_EMPTY
, lepsze wykorzystanie jego wartości:1
. Ale osobiście chciałbym podkręcić wyrażenie regularne zamiast:/\B(?=[A-Z])/
.:D
Nadal przyzwyczajam się do codegolfingpreg_split
.echo preg_replace('/([A-Z])[a-z]+/',"$1 = $0\n",Alfa...Zulu);
Brachylog , 178 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
PHP,
188186180174 bajtówbrak spacji końcowych, jedna wiodąca nowa linia
po prostu zamienia wszystkie wielkie litery w skompresowanym ciągu na
<newline><letter><colon><space><letter>
źródło
gzinflate
-ing wynikugzdeflate(Alfa...Zulu)
.and for your other question, yes, but just one.
Zestaw x86, 512 bajtów
Skompilowany z NASM i przetestowany z QEMU. Aby uruchomić, musisz umieścić 2-bajtową sygnaturę rozruchową na końcu bootsectora (510 bajtów w pliku), więc straciłem 317 bajtów, wypełniając skompilowany kod zerami. To jest mój pierwszy golf, więc muszę przeprosić za gigantyczne błędy.
Wydajność
To właśnie wyświetla powyższy kod. Jak widać A: Alfa brakuje, a to dlatego, że podpowiedź ma 25 linii wysokości ...
Aby udowodnić, że drukowane A: Alfa Wymieniłem
0,"ulu"
z32,"Z: Zulu"
tak, że Zulu jest na tej samej linii co Yankee.Byłbym wdzięczny, gdyby ktoś powiedział mi, czy będę w stanie odjąć 317 bajtów zerofill od mojego kodu, więc byłoby to 195 bajtów. Również jeśli jest to ważne, ponieważ wyjście nie zmieści się na ekranie.
źródło
Python 2 ,
186182 bajtówWypróbuj online!
źródło
C (MinGW, Clang), 218 bajtów
Dzięki @gastropner!
Wypróbuj online!
C,
259236 bajtówWypróbuj online!
źródło
gcc src.c
lubclang src.c
. Oto przykładowy przebieg z dodaną funkcją główną, dzięki czemu kod faktycznie się połączy i uruchomi: ideone.com/4Eowlhf
go zastępować,main
aby kod był prawidłowy, czy też brakuje mi jakiejś konwencji golfa.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,":"));}
jasne, czy działa wszędzie: TIO segfaultuje, ale działa przynajmniej w MinGW. Nie widzę powodu, dla którego to nie działałoby.Gema, 168 znaków
Przykładowy przebieg:
źródło
Bash ,
224205188180 bajtówDzięki Digital Trauma za usunięcie 17 bajtów i manatwork na 8 bajtów.
Wypróbuj online!
źródło
a
jest za długa.set {A..Z};for i in lfa … ulu;{ echo $1: $1$i;shift;}
Python 2 , 198 bajtów
Wypróbuj online!
Nie ekscytujące ani sprytne. Po prostu przegląda listę i wypisuje pierwszą literę, a następnie „:”, a następnie całe słowo.
źródło
PHP,
184 bajty179 bajtów178zapisał jeden bajt za pomocą preg_filter zamiast preg_replace.
Oryginalna odpowiedź
184 bajty179 bajtówwykorzystuje fakt, że jest posortowany, aby wygenerować pierwszy znak w locie.
5 bajtów zapisanych przez @Titus.
źródło
for($c=A;$s=[lfa,...,ulu][+$i++];$c++)echo"$c: $c$s\n";
. Ładne wyrażenie regularne.SOGL , 91 bajtów
Wyjaśnienie:
źródło
GNU sed , 165 bajtów
Ten skrypt jest oparty na odpowiedzi Retiny autorstwa Martina Endera.
Wypróbuj online!
Wyjaśnienie:
źródło
Bash , 184 bajty
Wypróbuj online!
źródło
{,}
Trik w interpretacji nawiasów jest bardzo sprytny sposób, aby podwoić każdy członek listy!Lua,
278260 bajtówJeszcze raz dziękuję Manatwork za uratowanie 18 bajtów!
Wypróbuj online
starsza wersja
https://repl.it/GK8J
First time doing Lua, do probably can golf more, but thought I'd add it as an answer anyways.
źródło
a
? ;) You can move the entire array declaration inside thefor
. And thefor
..in
syntax helps to avoid writing those long array indices: pastebin.com/rxck79md Weird Lua thing: if you declare a function and call it 26 times “manually” (I mean, not in a loop) is shorter: pastebin.com/FMF9GmLJ¯\_(ツ)_/¯
for the simple reason that I never used Lua before so I was just following the manual to try make it work, aha. Thanks @manatwork for the info, I didn't know about that.Lua, 177 bytes
Try it online!
Without trailing newline, 180 bytes:
Explanation
It uses Lua's string.gsub substitution function to pattern match the uppercase letters. The letters are then replaced with the requested format (plus the letters themselves). Newlines are also added on the same pass.
The sub-function at the end just trims out newline from the beginning and also works nicely to hide the second return value of gsub, which would have been the amount of replacements.
źródło
PowerShell,
187185 bytesTry it online!
Loops from
0
to25
, each iteration forming$a
of the corresponding capitalchar
. Then string-concatenated with: $a
(i.e., the colon-space-letter). Then that string is string-concatenated with an string that's formed by indexing into an array created by-split
ting the phonetic string on spaces. Each of those 26 strings is left on the pipeline, and an implicitWrite-Output
happens at program completion, inserting a newline between elements.Saved two bytes thanks to @Matt.
źródło
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 bytesTry it online!
A detailed, human readable, well commented and perfectly valid (no compiler warnings) version of the program can be found below:
źródło
char*s
but theprintf
could go in there too. Thus saving another 3 bytes - a semicolon and 2 curly braces as we no longer need them since there is only one instruction in it's body - the otherfor
loop.JavaScript ES6,
216 187 184 180174 bytesSaved a byte thanks to Neil. Saved 5 bytes thanks to ETHproductions.
Japt, 127 bytes
Try it online!
Saved 2 bytes thanks to obarakon.
źródło
A: A
to the string. But you can still save another byte by using a literal newline character instead of\n
.$&
s in it with the match, so you can do e.g"\n$&: $&"
for both langs instead of using functions.@"\n{X}: {X}"}
in Japt to just"\n$&: $&"
:-)" x
and inserting a-x
flag into the input. Note that the flag adds 1 byte to the total bytes.PHP,
175171164162 bytesNote: no longer requires compressed file, uses IBM-850 encoding.
Run like this:
Explanation
Prints every character individually (lowercased by OR with a space). If an uppercase character is encountered, it first prints a string of the form "\nA: A".
Tweaks
$l
with explode param), and not preventing a leading newlineźródło
Japt,
216214 bytesExplaination: There is most likely a much better way to do it, but since i'm new I don't know it. I basically compressed the string with Oc" and put that string to be decompressed using Od"
If someone wants to help me save bytes by using something different from line breaks, I'd be happy to learn!
edit: Saved 2 bytes using ` instead of Od"
źródło
:/
Pyke, 89 bytes
źródło
Qbasic, 383 bytes
Not impressive, but for what it's worth:
źródło
data
statement thenread
inside thefor
..next
loop??"A: Alfa"
and so on be only 360 bytes?///, 220 bytes
Try it online!
-20 bytes thanks to @ETHproductions.
źródło