ISO 3166-1 to standard, który określa wszystkie kody krajów. Znane dwuliterowe kody (US, GB, JP itp.) Nazywane są kodami Alpha-2.
Za pomocą dwóch liter jest tylko 26 2 = 676 możliwych kodów, które można ładnie ułożyć w siatkę. Ten stół może być przydatna jako przegląd, aby zobaczyć, które kody są aktualnie używane, zarezerwowane itp.
Wyzwanie jest proste: musisz wydrukować wszystkie przypisane kody tej siatki do STDOUT, używając zwykłego ASCII, dokładnie tak jak pokazano poniżej:
AA AC AD AE AF AG AI AL AM AN AO AP AQ AR AS AT AU AW AX AZ
BA BB BD BE BF BG BH BI BJ BL BM BN BO BQ BR BS BT BU BV BW BX BY BZ
CA CC CD CF CG CH CI CK CL CM CN CO CP CR CS CU CV CW CX CY CZ
DE DG DJ DK DM DO DY DZ
EA EC EE EF EG EH EM EP ER ES ET EU EV EW
FI FJ FK FL FM FO FR FX
GA GB GC GD GE GF GG GH GI GL GM GN GP GQ GR GS GT GU GW GY
HK HM HN HR HT HU
IB IC ID IE IL IM IN IO IQ IR IS IT IU IV IW IX IY IZ
JA JE JM JO JP
KE KG KH KI KM KN KP KR KW KY KZ
LA LB LC LF LI LK LR LS LT LU LV LY
MA MC MD ME MF MG MH MK ML MM MN MO MP MQ MR MS MT MU MV MW MX MY MZ
NA NC NE NF NG NI NL NO NP NR NT NU NZ
OA OM
PA PE PF PG PH PI PK PL PM PN PR PS PT PW PY
QA QM QN QO QP QQ QR QS QT QU QV QW QX QY QZ
RA RB RC RE RH RI RL RM RN RO RP RS RU RW
SA SB SC SD SE SF SG SH SI SJ SK SL SM SN SO SR SS ST SU SV SX SY SZ
TA TC TD TF TG TH TJ TK TL TM TN TO TP TR TT TV TW TZ
UA UG UK UM US UY UZ
VA VC VE VG VI VN VU
WF WL WO WS WV
XA XB XC XD XE XF XG XH XI XJ XK XL XM XN XO XP XQ XR XS XT XU XV XW XX XY XZ
YE YT YU YV
ZA ZM ZR ZW ZZ
(Jeśli popełniłem jakieś błędy podczas kopiowania, tabela tutaj w tym poście jest normatywna dla wyzwania, nie ta z Wikipedii).
Możesz użyć końcowych białych znaków w każdym wierszu, który nie zawiera *Z
kodu, ale nie może przekraczać 77. znaku w tym wierszu (tzn. Co najwyżej możesz zrobić z niego prostokątny blok, kończący się na Z
s i spacje). Ponadto możesz, ale nie musisz używać jednej końcowej nowej linii na końcu.
To jest kod golfowy, więc wygrywa najkrótsza odpowiedź (w bajtach).
źródło
YT
(Majotta) jest niedopatrzeniem?Odpowiedzi:
CJam,
125122121 bajtówPowyższe używa notacji doczołowej dla znaków kontrolnych.
Wersja do druku ( 141 bajtów ) dla tłumacza online :
Przykładowy przebieg
źródło
Python 2, 240 bajtów
Prosta implementacja kodowania binarnego.
Skrypt do generowania liczby całkowitej jest szybki i brudny:
źródło
R=range(26)
....,36)&1<<c+r*26else...
. - Czy miałbyś coś przeciwko opublikowaniu skryptu służącego do generowania liczby całkowitej base-36?26else
nie można go przeanalizować. Myślałem, że próbowałem usunąć nawiasy, ale w tym momencie musiałem mieć coś innego!26else
. (Python 2.7.6 jednak nie.)Rubin,
269 246 241 235227g
to macierz, w której każda komórka z kodem kraju jest1
i wszystkie inne0
. Wszystkie wiersze są zapisane z tyłu, a wynikowa liczba binarna została przekonwertowana na podstawową reprezentację 36. Następnie powtarzam wszystkie komórki i sprawdzam, czy kod ma zostać wydrukowany.źródło
{|i|...}
zamiastdo|i|...end
, a także rozpocząć pierwszą instrukcję zaraz po|i|
(bez podziału wiersza). Krótszy sposób drukowania bez przerywania linii to$><<
. Można wymienić"\n"
z$/
, i"1"
z?1
. Krótszy sposób na wygenerowanie alfabetu tol=[*?A..?Z]*''
;)print
z$><<
matrycytrue
ifalse
jest drukowana. Jak korzystać z tego poprawnie?<<
to metoda$>
, więc trzeba użyć nawiasu:$><<(1==2?3:4)
. Nawiasem mówiąc, najkrótsze, jakie mam z tego, to 231 znaków: pastebin.com/iabBNh6S .print
czy$><<
używaj tylko jednego.print
akceptuje wiele parametrów oddzielonych za pomocą,
, ponieważ$><<
można połączyć dwa elementy w wynik.CJam,
152 149 148 145 144 140139 bajtów, do wydrukuDzięki Dennis za wskazówki.
Całkiem proste podejście. Jak to działa:
Wypróbuj online tutaj
(Teraz tylko, gdybym wiedział, jak wykonać wersję do wydruku)
źródło
:i
nie jest potrzebne;b
działa dobrze z ciągiem jako drugim argumentem. 2. Jeśli używasz'[,
zamiast91,
, nie potrzebujesz:c
.'[,65>
trasę, ale wciąż wstawiałem:c
po niej tę samą bajt, więc jej nie użyłem : DJavaScript ES6,
336322Duży ciąg jest zapisywany w każdym wierszu w formacie binarnym (
1
jeśli był tam kod kraju,0
jeśli nie), a następnie base36. Wypróbuj w przeglądarce Firefox pod adresem http://jsfiddle.net/twduhqz6/1/ .źródło
Bash + coreutils, 361
Podstawowe usuwanie wyrażeń regularnych kombinacji, których nie chcemy. Pewna łagodna kompresja wyrażenia regularnego:
źródło
Haskell, 357
Cholera, to trochę trudne.
Po skompilowaniu drukuje do STDOUT (czyli główny). Zastosowanie odpowiedniej kompresji sprawi, że będzie to o wiele krótsze ... pomysły są mile widziane
źródło
JavaScript (E6) 350
Niewłaściwe narzędzie do tego zadania (może dzięki String.fromCharCode ?)
źródło
J, 172 znaki (do wydruku)
Podziały linii dla czytelności. Proste pakowanie binarne, z sześcioma bitami na znak łańcucha (przesunięcie 34, aby dostać się do zakresu wydruku i uniknąć
'
).źródło
Język Wolfram, 244
255bajtówNumer z odpowiedzi fireflame241 został wykorzystany i przepakowany do postaci 36-arytowej.
Nie użyto danych z wbudowanego kraju.
źródło
PHP, 323 bajtów
Wypróbuj online!
źródło
C, 373 bajtów
Wypróbuj online
źródło
Język wolfram, 389 bajtów
Bardziej czytelny:
Wolfram ma wbudowaną listę kodów krajów ISO, więc powinien to być idealny język do pracy. Jednak wie tylko o kodach krajów, które w rzeczywistości są kodami krajów, a nie o kodach zarezerwowanych do innych zastosowań, które są nadal zawarte w tej tabeli. Dlatego musimy ręcznie dodać wiele kodów krajów.
Wyjaśnienie:
""<>r[r[#," "]&/@Array[CharacterRange["A","Z"][[{##}]]&,{26,26}],n="\n"]
to tablica ciągów wszystkich par liter od „A” do „Z”.#~c~"CountryCode"&/@c[]
(gdziec=CountryData
zdefiniowano wcześniej) zawiera listę wszystkich kodów krajów, o których wie język Wolfram. Kilka z nichMissing["NotApplicable"]
, więc usuwamy te zCases[...,_String]
.(""<>#&/@Partition[Characters@"AACP...AXJA",2,1])
wykonuje 83 pozostałe kody krajów ręcznie, używając ciągu 138 znaków, gdzie pary sąsiednich znaków są wymaganymi kodami kraju. Ciąg ten został znaleziony mniej więcej ręcznie (za pomocąFindPostmanTour
funkcji!) I jest kilka powtórzeń, więc potencjalnie można tu grać w golfa.StringReplace[ <full array> ,{"GZ"|"WE"->" ",x:("X"~~_~~" "|n)|##&@@( <known country codes> ~Join~ <extra codes> ):>x,Except@n->" "}]
najpierw pozbywa się dwóch kodów, „GZ” i „WE”, które Wolfram uważa za kody krajów, ale nie są zgodne z tabelą; następnie dopasowuje wszystkie kody zaczynające się od „X”, a także znane kody i te, które dodaliśmy ręcznie, i zastępuje je sobą; w końcu wszystko inne, co nie jest nowym wierszem i nie zostało jeszcze dopasowane, zamienia się w spację.źródło
Galaretka ,
121120112110 bajtów (niekonkurujące)Wypróbuj online!
-8 bajtów dzięki @Dennis
-2 bajty dzięki pomysłowi @ Dennisa na produkty kartezjańskie
Jak to działa
Proste: program mnoży jedną dużą listę binarną przez inną dużą listę, aby uzyskać większość danych wyjściowych, a następnie formatuje ją
Medium: program koduje dużą listę binarną
w jedną dużą liczbę, kodującą kody krajów, które są przypisane. Każdy element jest mnożony elementarnie przez każdy element każdego możliwego kodu kraju, aby uzyskać listę wszystkich przypisanych kodów krajów, które są następnie formatowane do listy wyników.
Niższy poziom:
Większość programu wykorzystuje dane zakodowane w:
Jest to liczba całkowita 250, która zawiera liczbę dziesiętną
233462323092263584350936137603939798267906095227198731310610883427614237299604158551774020670253062350084519623333781892392013977676150946873601610983221266427394582295973500719992107281184544524840476937
, która zostaje przekształcona w powyższą listę binarną.Dla zwięzłości nazwijmy tę wartość
c
i zamień długi ciąg znakówc
na wyjaśnienieźródło
;⁶$€Fs78;⁷$€
można zastąpićs26G
.G
wstawi puste ciągi spacjami.