Napisz program, który pobiera ciąg znaków i literuje to słowo za pomocą alfabetu fonetycznego NATO.
Mapowanie wygląda następująco:
'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'
Przykład:
'Hello World' -> ['Hotel', 'Echo', 'Lima', 'Lima', 'Oscar', 'Whiskey', 'Oscar', 'Romeo', 'Lima', 'Delta']
Dane wejściowe mogą być dowolnym ciągiem, ale zawsze będą się składać tylko z liter i spacji. Wielkość liter nie ma znaczenia w danych wyjściowych, ale dane wejściowe mogą zawierać litery pisane wielkimi i małymi literami lub oba. Spacje powinny być ignorowane w danych wyjściowych.
Możesz generować w dowolnym rozsądnym formacie, ale musi to być ograniczony zestaw znaków wywoławczych NATO.
Alpha
iJuliet
zamiast tego.Whisky
w tym przykładzie nie jest równeWhiskey
odwzorowaniu.Odpowiedzi:
sfk ,
785957 bajtówWypróbuj online!
Wystarczy użyć odpowiedniego narzędzia.
Wyjście to fonetyka oddzielona jedną lub więcej spacjami.
źródło
Zestaw IBM PC DOS 8088,
208204197194192 bajtyPobierz plik wykonywalny DOS NATO.COM:
Wypróbuj offline! (w DOSBox itp.)
Wyjście testowe:
Zaktualizowano, aby usunąć pierwszy znak z tablicy listy słów (chociaż zapisuje tylko 11 bajtów z powodu dodatkowego wymaganego kodu).
źródło
$
separatory i oddzielając słowa, zamiast tego umieszczając wielką literę w pierwszej kolejności (a przez pierwszą mam na myśli drugą, ponieważ już pominąłeś pierwszą). (Wyższy poziom kompresji może być prawdopodobnie osiągnięty przed długość kodu potrzebne do dekompresji to przewyższają korzyści z kompresją, ale prosty schemat kapitałowych-literowym ograniczników byłby dobry początek.)ML.EXE /?
wyjściowe mówiąMicrosoft (R) Macro Assembler Version 9.00.30729.01
. Tak, „LfaRavoHarlie” jest dokładnie tym, co miałem na myśli. :) Zrobiłbym „OR AL, 20H”, aby znowu był mały na wyjściu, ale to zależy od ciebie..MODEL TINY
.CODE
ORG 100H
START:
na początku iEND START
na końcu. Czy nie potrzebujesz tego, aby skompilować go z MASM 5?05AB1E ,
1029695 bajtówDane wyjściowe to lista słów NATO z tytułami.
Wypróbuj online.
Wyjaśnienie:
Zobacz moją wskazówkę 05AB1E (sekcja Jak korzystać ze słownika? ), Aby zrozumieć, dlaczego tak
”AlfaІvo¼¯¤œ®È¨›trotŠˆƒ‹Š™ÈŸtt Kilo´àma—……ÍЗŽêpa¼°«Äoµ†Çâgo¸šÉµ Whiskey Xrayµ‹nkeeâ¸lu”
jest"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"
. Credit tego sprężonego słowniku ciąg idzie @ErikTheGolfer w tym komentarzu (z dodatkowymt
dlaJuliett
zamiastJuliet
).źródło
Galaretka ,
8077 bajtówWypróbuj online! (Stopka formatuje listę, łącząc ją spacjami, aby uniknąć niejawnego rozbijania wydruku po uruchomieniu jako pełny program)
źródło
JavaScript (ES6),
181189 bajtówPonieważ wielkość wyjściowa nie ma znaczenia, możemy zapisać bajty, uruchamiając słowa razem:
Wypróbuj online!
źródło
Python 3 ,
250191 bajtów-47 bajtów dzięki @Jo King, -2 więcej dzięki @Jonathan Allen
Przechodzi przez wszystkie znaki spacji na wejściu i dla każdego z nich wybiera odpowiednią frazę dla litery, którą można nieco zmniejszyć, ponieważ pierwszą literą każdej frazy jest sam znak. Dzieli ciąg zamiast zapisywać frazy jako tablicę, aby zapisać bajty od niepotrzebnych znaków
'
s i,
s.Wypróbuj online!
Oryginalne rozwiązanie
Wypróbuj online!
źródło
if' '<c
Czerwony ,
210193 bajtówWypróbuj online!
Wyjaśnienie:
foreach
przechodzi przez ciąg po usunięciu wszystkich białych znakówtrim/all
.prin
wypisuje znak (bez nowej linii).print
wypisuje symbol,pick
ed z listy get-word! s (symbole), używając znaku zamapowanego na zakres 1..26 jako indeksu.źródło
Czysty , 218 bajtów
Wypróbuj online!
źródło
C # (interaktywny kompilator Visual C #) , 218 bajtów
Wypróbuj online!
Alternatywna wersja wykorzystująca Split (), 194 bajty
Wypróbuj online!
źródło
C ++,
229228 bajtówWypróbuj online!
Nie golfowany:
Wynik:
Wersja czystych wielkich liter ( 234 bajty ):
Wypróbuj online!
Wynik:
źródło
Język maszynowy IBM PC DOS 8088, 165 bajtów
Jest to bezpośrednio oparte na odpowiedzi gwaugh , ale ogoliłem 26 bajtów, pomijając
i tak i tak zostanie zignorowany przez program). Program ma dokładnie taką samą długość, aby móc przetwarzać tabelę w tym formacie (w którym słowa są rozdzielane tylko wielkimi literami, które służą podwójnemu celowi, będąc jednocześnie drugą literą każdego słowa) lub 2 bajtami dłużej, jeśli wielkość liter jest taka sama jak poprzednio. Tabela jest o 26 bajtów mniejsza.
$
ograniczniki z tabeli słów „NATO” i dodatkowy 1 bajt, nie pomijając pierwszego znaku ciągu parametrów wiersza poleceń (który zawsze będzie albo/
alboW poniższym zrzucie programu, konkatenacja przez
:
służy do wyświetlenia każdej sekwencji kolejnych bajtów odpowiadającej instrukcji:Pobierz plik wykonywalny DOS NATO.COM:
Z nieskorygowaną wielkimi literami (165 bajtów)
Z czystą wielkimi literami (167 bajtów)
Wersja , w której pierwsza litera każdego słowa jest (167 bajtów)
Niezmontowane:
Przykładowe dane wejściowe:
Wyjście (wersja 165-bajtowa):
Wersja czystych wielkich liter (167 bajtów):
Wersja czystych wielkich liter z taką samą wielkością jak dane wejściowe (167 bajtów):
źródło
Węgiel drzewny , 99 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjścia w odpowiednim przypadku. Wyjaśnienie:
źródło
Perl 6 ,
176 170166 bajtówWypróbuj online!
Wydruki pisane wielkimi literami z pierwszą literą w oryginalnej kopercie. Kompresuje ciąg, który zapisuje tylko 6 bajtów na prostszym zwykłym tekście:
Wypróbuj online!
Wyjaśnienie:
źródło
Japt,
108106 bajtówSpróbuj
Backticks zawiera skompresowany ciąg:
źródło
PowerShell ,
187183 bajtówWypróbuj online!
Skrypt testowy:
Wynik:
źródło
PHP ,
209205206 bajtówWypróbuj online!
Wynik:
Lub 195 bajtów, ze spacjami nie do końca usuniętymi:
Wypróbuj online!
Wynik:
źródło
[31&ord($l)]
powrót do niego[31&ord($l)-1]
, co kosztuje dwa bajty, ale można to również naprawić w jednym bajcie, całkowicie wypisującALfa
.TSQL, 313 bajtów
Gra w golfa:
Nie golfowany:
Wypróbuj to
Wyjście kończy się średnikiem
źródło
PowerShell,
228225 bajtów-3 bajty dzięki @mazzy
Wypróbuj online!
Jest to prawdopodobnie najbrzydszy fragment kodu, jaki kiedykolwiek napisałem. Ponadto z pewnością może to być znacznie krótsze. W mojej obronie wciąż dochodzę do siebie po egzaminach końcowych.
źródło
-split'lfa ravo ...'
jest krótszy, ponieważ „\ s” jest domyślniePHP, 212 bajtów
Uruchom jako potok z
-nR
lub spróbuj online .Daje ostrzeżenia w PHP 7.2; wstaw elementy tablicy w cudzysłów, aby to naprawić.
Wydrukuje znak podkreślenia dla spacji.
źródło
C (clang) , 309 bajtów
Wypróbuj online!
źródło
JavaScript, 179 bajtów
Wypróbuj online!
źródło