Alle Ländercodes drucken

24

ISO 3166-1 ist die Norm, die alle Ländercodes definiert. Die bekannten Zwei-Buchstaben-Codes (US, GB, JP usw.) werden als Alpha-2-Codes bezeichnet.

Mit zwei Buchstaben gibt es nur 26 2 = 676 mögliche Codes, die sich gut in einem Raster anordnen lassen. Diese Tabelle kann als Übersicht hilfreich sein, um zu sehen, welche Codes tatsächlich verwendet, reserviert usw. werden.

Diese Herausforderung ist einfach: Sie müssen alle zugewiesenen Codes dieses Rasters mit einfachem ASCII an STDOUT ausgeben, genau wie unten gezeigt:

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

(Wenn ich Fehler beim Kopieren gemacht habe, ist die Tabelle hier in diesem Beitrag für die Herausforderung normativ und nicht die auf Wikipedia.)

Sie können abschließende Leerzeichen in jeder Zeile verwenden, die den *ZCode nicht enthält , jedoch nicht hinter dem 77. Zeichen in dieser Zeile (dh Sie können höchstens einen rechteckigen Block erstellen, der mit Zs und Leerzeichen endet ). Außerdem können Sie am Ende möglicherweise eine einzelne nachgestellte neue Zeile verwenden oder nicht.

Dies ist Codegolf, daher gewinnt die kürzeste Antwort (in Bytes).

Martin Ender
quelle
Welcher Tabelle soll Ihr Beispiel entsprechen? Ist die Unterlassung von YT(Mayotte) ein Versehen?
Greg Hewgill
@ GregHewgill Ja, danke. Ich werde das in Ordnung bringen, aber für jede weitere Diskrepanz, die Tabelle in diesem Beitrag ist normativ (es nicht wirklich für die Herausforderung egal, ob ein Code fehlt oder zu viel).
Martin Ender

Antworten:

7

CJam, 125 122 121 Bytes

"^Kéÿ·^?{ÿ·¿oÂ^Ú^À:ð^×à^Cé^Dÿ^Ýú^À^K^V^G^Áïþ ,^@^K^ÍBù(^_+óÿþºMa^À^H^@#ï^\¨^@ÿÿ¦|¨ÿþ}íßÕ^Ø\"^Â^Nª^P ^D^R$?ÿÿð^À^AÂ^@!^I"256b2b'[,65>_m*]z{~S2*?}%26/Sf*N*

Oben wird die Caret-Notation für Steuerzeichen verwendet.

Druckversion ( 141 Byte ) für den Online-Dolmetscher :

"J`ki4#'Tr{$V!AcG)\d6o+rW97;#1|jN!WXL%GRuqYos0xCaaBzYgN97DOA'f@#@k'867BrCc1h?&d0LBq[st0YW^?b2Jfx.&gG:O(&"31f-95b2b'[,65>_m*]z{~S2*?}%26/Sf*N*

Beispiellauf

$ base64 -d > cc.cjam <<< Igvp/7d/e/+3v2/CmoA68JfgA+kE/536gAsWB4Hv/iAsAAuNQvkoHyvz//66TWGACAAj7xyoAP//pnyo//597d/VmFwigg6qECAEEiQ////wgAHCACEJIjI1NmIyYidbLDY1Pl9tKl16e35TMio/fSUyNi9TZipOKg==
$ LANG=en_US cjam cc.cjam
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
Dennis
quelle
10

Python 2, 240 Bytes

Einfache Implementierung der binären Codierung.

R=range(26)
print"\n".join(" ".join(chr(65+r)+chr(65+c)if int("8hfxckgq1olihfa47x3rrdkojzkklec7qk1hp4ht6avmzxfg7c4uv14xe0pzvvg93x81ag2bf88v2w0p3p08g8nwtuktbwosj9dytset3qmhdl72v5u62nepapgabdqqu7x",36)&1<<c+r*26 else"  "for c in R)for r in R)

Das Skript zum Generieren der Ganzzahl ist schnell und fehlerhaft:

codes="""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
"""
n = sum(1 << (x/3) for x in range(0, len(codes), 3) if codes[x] != " ")
def baseN(num,b,numerals="0123456789abcdefghijklmnopqrstuvwxyz"):
    return ((num == 0) and numerals[0]) or (baseN(num // b, b, numerals).lstrip(numerals[0]) + numerals[num % b])
print baseN(n, 36)
Greg Hewgill
quelle
1
Sie sparen 4 Bytes mit R=range(26).
Falko
1
@Falko: Das geht nicht, weil ich zwei Iteratoren brauche. Oh, warte, das ist Python 2, wo range eine Liste zurückgibt!
Greg Hewgill
Oh, und 4 weitere schreiben ...,36)&1<<c+r*26else.... - Würde es Ihnen etwas ausmachen, Ihr Skript zur Generierung der Base-36-Ganzzahl zu veröffentlichen?
Falko
@Falko: Danke, nur 3 ist da 26elsenicht analysierbar. Ich dachte, ich hätte versucht, die Klammern zu entfernen, aber an diesem Punkt muss noch etwas falsch gelaufen sein!
Greg Hewgill
Ok, es scheint vom Dolmetscher abhängig zu sein. Mein Python 2.7.8 erlaubt 26else. (Python 2.7.6 jedoch nicht.)
Falko
6

Ruby, 269 ​​246 241 235 227

g="b6wapsm769n90ongzuvadg5vdat6ap7v1oyyie3j5wxbq9xtycezrtt9xamn9riqnnxnsxjx0al8uk8rmk5snb7quly7t5i9rkq21r1vnns5vdm7gwzqtxwwwmj02nqxlhl".to_i 36
l=*?A..?Z
676.times{|i|print g.to_s(2)[i]==?1?l[i/26]+l[i%26]:"  ",i%26==25?$/:" "}

gist eine Matrix, in der jede Zelle mit einem Ländercode a ist 1und alle anderen eine 0. Alle Zeilen werden zurückgeschrieben und die resultierende Binärzahl wurde in eine Basis 36-Darstellung umgewandelt. Dann iteriere ich einfach über alle Zellen und überprüfe, ob der Code gedruckt werden soll.

stevecross
quelle
2
Willkommen bei PPCG! Einige Ruby-Tipps: Sie können {|i|...}anstelle von do|i|...endauch die erste Anweisung direkt danach |i|(ohne Zeilenumbruch) verwenden. Eine kürzere Möglichkeit zum Drucken ohne Zeilenumbruch ist $><<. Sie können "\n"mit $/und "1"mit ersetzen ?1. Und ein kürzerer Weg, um das Alphabet zu generieren, ist l=[*?A..?Z]*'';)
Martin Ender
2
Außerdem können Sie das Alphabet als Array verwenden, ohne es zu einer Zeichenfolge zusammenfügen zu müssen.
Manatwork
Vielen Dank! Wenn ich printmit $><<einer Matrix aus trueund ersetzt falsewird gedruckt. Wie verwende ich das richtig?
Stevecross
1
Es scheint das Problem des Vorrangs als <<ein Verfahren zur Herstellung ist $>, so dass Sie verwenden Klammern haben: $><<(1==2?3:4). Der kürzeste, den ich dabei bekommen habe, sind übrigens 231 Zeichen: pastebin.com/iabBNh6S .
Manatwork
1
Nein, ich denke nicht. Aber unabhängig davon, ob Sie printoder verwenden $><<, verwenden Sie nur eine. printAkzeptiert mehrere mit getrennte Parameter ,, da $><<Sie die beiden auszugebenden Teile verketten können.
Manatwork
4

CJam, 152 149 148 145 144 140 139 Bytes, druckbar

". QH%$ydK0]cg:WSSlFu0z>O$T1<hO)Q63@D7;\KDJ^!NQN!tFr'>x@*!nf`Ut<s=N_[\%Ec0AXXZ`hayqIi'qj)jnonEj!n(ZjpjW("31f-96b2b'[,65>_m*]z{~SS+?S}%52/N*

Danke Dennis für die Hinweise.

Ziemlich unkomplizierter Ansatz. Wie es funktioniert:

". Q .... jW("                "Push this string to stack. This is a compressed string"
                              "which results to a 26 by 26 grid of 0 and 1 representing"
                              "whether that block contains country code or empty space";
              31f-96b2b       "Remove 31 from ASCII code of each of the character,"
                              "treat the number array as of base 96 and convert it to"
                              "a base 2 number";
'[,                           "Create an array of characters of ASCII code 0 to 91";
   65>                        "Take last 26 characters, which are A to Z";
      _m*                     "Copy the array and create all combinations {XX|X ∈ [A,Z]}";
         ]z                   "zip the first 26*26 array of 1 and 0 with the above"
                              "26*26 array of XX such that the final array element"
                              "is like ([B XX]|B={0,1},X∈[A,Z])";
           {~SS+?S}%          "For element, unwrap it from array, put "  " to stack,"
                              "if first number is 1, take XX otherwise, the spaces"
                              "and put a single space after each element";
                    52/       "split the array into chunks of 52,i.e 26 XX and 26 spaces";
                       N*     "Join each chunk of 52 elements with new line"

Probieren Sie es hier online aus

(Jetzt nur, wenn ich wusste, wie man eine nicht druckbare Zeichenversion macht)

Optimierer
quelle
Ihre Antwort habe ich vorher nicht beachtet. Nach meiner letzten Bearbeitung ist mein Ansatz Ihrem sehr ähnlich (aber immer noch einen Schritt zurück). 1. :iwird nicht benötigt; bfunktioniert gut mit einem String als zweites Argument. 2. Wenn Sie '[,statt verwenden 91,, brauchen Sie nicht :c.
Dennis
@ Tennis Danke! Ich habe die '[,65>Route tatsächlich ausprobiert , aber ich habe immer noch ein " :cdanach" gesetzt, das zu denselben Bytes führt. Daher habe ich es nicht verwendet: D
Optimizer
3

JavaScript ES6, 336 322

a='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
alert(r='tr20d,yxurj,soeyn,1migz,rbh14,5hqc,13w82y,z1c,iqx33,l8dmo,1swln,zokqa,tukfz,r8voh,jzd34,mflqi,jzjen,10gn1k,13ycc7,sn0bd,kbb0j,qm2hs,mvf4,13ydj3,18y9c,jzdah'.split(',').map((n,i)=>(1e10+(parseInt(n,36).toString(2))).slice(-26).replace(/./g,(m,j)=>+m?a[i]+a[j]+' ':'   ')).join('\n'))

Die große Zeichenfolge wird in jede Zeile binär geschrieben ( 1wenn es dort einen Ländercode gab, 0wenn nicht) und dann base36. Probieren Sie es in Firefox unter http://jsfiddle.net/twduhqz6/1/ aus .

NinjaBearMonkey
quelle
2

Bash + Coreutils, 361

Grundlegende Regex-Entfernung der Combos, die wir nicht wollen. Eine leichte Kompression des Regex:

a=({A..Z})
f=(BHJKVY CKP BEJQT A-DFHILNP-X BDI-LNOQX-Z A-HNPQS-WYZ JKOVXZ A-JLO-QSV-Z AF-KP B-DF-LNQ-Z A-DFJ-LOQS-VX DEGHJL-QWXZ BIJ BDHJKMNQSV-Y B-LN-Z B-DJO-QUVXZ B-L DFGJKQRTVX-Z PQW BEIQSUXY B-FH-JLN-RT-X BDFHJ-MO-TV-Z A-EG-KMNP-RTUW-Z _ A-DF-SW-Z B-LN-QS-VXY)
for i in ${!a[@]};{
s+="${a[i]}[${f[i]}]|"
}
echo {A..Z}{A..Z}|sed -r "s/Z /Z\n/g;s/${s%|}/  /g"
Digitales Trauma
quelle
2

Haskell, 357

Verdammt, das ist irgendwie schwer.

import Data.List.Split
az=['A'..'Z']
k=0x9084004380010ffffffc24482004085570414419abfbb7be7fff153e65ffff001538f7c400100186b25d7fffcfd4f8149f42b1d00034047ff781e068d0015fb9ff2097c007e90f5c015943f6fdedffdefeedff97d
l i (a:b)|i`mod`2>0=a:l(i`div`2)b|1>0="  ":l(i`div`2)b
l _ _=[]
main=putStr$unlines$chunksOf 78$unwords$l k[a:[b]|a<-az,b<-az]

Druckt beim Kompilieren auf STDOUT (also auf das Hauptverzeichnis). Die richtige Komprimierung würde dies viel kürzer machen. Ideen sind willkommen

michi7x7
quelle
1

JavaScript (E6) 350

Nicht das richtige Werkzeug für diese Aufgabe (vielleicht dank String.fromCharCode ?)

r=0,Q=x=>String.fromCharCode(x+64),
console.log("2dff97d 3ff7bfb 3f6fded 3005650 7e90f5 825f00 15fb9ff 1a3400 3ff781e d011 342b1d0 13e0527 3fffcfd 21ac975 1001 14e3df1 3fff001 54f997 3be7fff 26afeed 3041441 102155 244820 3ffffff 380010 2421001"
.replace(/\w+./g,x=>{for(x='0x'+x,s=c=o='',++r;++c<27;s=' ',x/=2)o+=s+(x&1?Q(r)+Q(c):'  ');return o+'\n'}))
edc65
quelle
1

J, 172 Zeichen (druckbar)

echo}:"1,.u:32+(26 26$,(6#2)#:34-~3 u:
'QKa]?a@a`YQXa$HJ"\^+AB"`F&a[Y\B"N8#Z)QaD"N""P/2QFJ)TQUaa\\58("$""E]STJ"1aaKITJaa[_]?a7H$,$%LJ2*"24+%aaaa$"">*"*2F'
)*0,"1~33+,"0/~i.26

Zeilenumbrüche zur besseren Lesbarkeit. Einfaches binäres Packen mit sechs Bits pro Zeichenkette (Offset 34, um in den druckbaren Bereich zu gelangen sowie zu vermeiden ').

FireFly
quelle
1

Wolfram-Sprache, 244 255 Bytes

Table[Table[If[BitGet[36^^b6wapsm769n90ongzuvadg5vdat6ap7v1oyyie3j5wxbq9xtycezrtt9xam\n9riqnnxnsxjx0al8uk8rmk5snb7quly7t5i9rkq21r1vnns5vdm7gwzqtxwwwmj02nqxl\hl,675-i*26-j]==1,FromCharacterCode[{i,j}+65]<>" ","   "],{j,0,25}]<>"\n",{i,0,25}]<>""

Die Nummer aus der Antwort von fireflame241 wurde verwendet und in eine 36-stellige Form umgepackt.

Es wurden keine eingebauten Länderdaten verwendet.

Sauron
quelle
0

PHP, 323 Bytes

$p=explode(_,"^BHJKVY_^CKP_^BEJQT_EGJKMOYZ_ACE-HMPR-W_I-MORX_^JKOVXZ_KMNRTU_^AF-KP_AEMOP_EGHIMNPRWYZ_ABCFIKR-VY_^BIJ_ACEFGILOPRTUZ_AM_AE-IK-NR-TWY_AM-Z_A-CEHIL-PSUW_^PQW_^BEIQSUXY_AGKMSYZ_ACEGINU_FLOSV_\w_ETUV_AMRWZ");
foreach($r=range(A,Z)as$k=>$v)
foreach($r as$w)echo preg_match("#[{$p[$k]}]#",$w)?$v.$w:"  "," 
"[$w>Y];

Probieren Sie es online!

Jörg Hülsermann
quelle
0

C 373 Bytes

main(i,j){char e[]="0BHJKVY|0CKP|0BEJQT|EGJKLMOYZ|0BDIJKLNOQXYZ|IJKLMORX|0JKOVXZ|KMNRTU|0AFGHIJKP|AEMOP|EGHIMNPRWYZ|ABCFIKRSTUVY|0BIJ|0BDHJKMNQSVWXY|AM|0BCDJOPQUVXZ|0BCDEFGHIJKL|0DFGJKQRTVXYZ|0PQW|0BEIQSUXY|AGKMSYZ|ACEGINU|FLOSV|0|ETUV|AMRWZ",*t,*p=e,*s="|";for(i=0;t=strtok(p,s);p=0,i++)for(j=0;j<27;j++)printf(j-26?!strchr(t,65+j)^(*t!=48)?"%c%c ":"   ":"\n",65+i,65+j);}

Probieren Sie es online aus

Johan du Toit
quelle
0

Wolfram-Sprache, 389 Bytes

c=CountryData;r=Riffle;StringReplace[""<>r[#~r~" "&/@Array[CharacterRange["A","Z"][[{##}]]&,{26,26}],n="
"],{"GZ"|"WE"->"  ",x:("X"~~_~~" "|n)|##&@@(Cases[#~c~"CountryCode"&/@c[],_String]~Join~(""<>#&/@Partition[Characters@"AACPSXQNICRANTAPEAQPEPEUMQQRCSXQXDGCWLRNTPEVAQUMQVEWLRPIXDYUMQSUMQWVEFRBQYVIBXEMQMQOAQZRBLFRBUKRLIBVIUKGSSFXHRMQTFLIVIWOARIYVIZZRHMFIOAXJA",2,1])):>x,Except@n->" "}]

Besser lesbar:

c = CountryData; r = Riffle; StringReplace[
 "" <> r[#~r~" " & /@ 
    Array[CharacterRange["A", "Z"][[{##}]] &, {26, 26}], 
   n = "\n"], {"GZ" | "WE" -> "  ", 
  x : ("X" ~~ _ ~~ " " | n) | ## & @@ (Cases[#~c~"CountryCode" & /@ 
        c[], _String]~
      Join~("" <> # & /@ 
        Partition[
         Characters@
          "AACPSXQNICRANTAPEAQPEPEUMQQRCSXQXDGCWLRNTPEVAQUMQVEWLRPIXDY\
UMQSUMQWVEFRBQYVIBXEMQMQOAQZRBLFRBUKRLIBVIUKGSSFXHRMQTFLIVIWOARIYVIZZR\
HMFIOAXJA", 2, 1])) :> x, Except@n -> " "}]

Wolfram verfügt über eine integrierte Liste von ISO-Ländercodes, daher sollte dies die perfekte Sprache für den Job sein. Es sind jedoch nur die Ländercodes bekannt, die tatsächlich die Codes für Länder sind, und nicht die Codes, die für andere Zwecke reserviert sind, die in dieser Tabelle noch enthalten sind. Wir müssen daher viele Ländercodes manuell hinzufügen.

Erläuterung:

  • ""<>r[r[#," "]&/@Array[CharacterRange["A","Z"][[{##}]]&,{26,26}],n="\n"] ist ein String-Array aller Buchstabenpaare von "A" bis "Z".
  • #~c~"CountryCode"&/@c[](wo c=CountryDatafrüher definiert) gibt eine Liste aller Ländercodes an, die Wolfram Language kennt. Ein paar davon sind Missing["NotApplicable"], also entfernen wir diese mit Cases[...,_String].
  • (""<>#&/@Partition[Characters@"AACP...AXJA",2,1])83 der verbleibenden Ländercodes werden manuell mithilfe einer 138-stelligen Zeichenfolge erstellt, wobei die Paare benachbarter Zeichen die erforderlichen Ländercodes sind. Diese Saite wurde mehr oder weniger von Hand gefunden (mit Hilfe der FindPostmanTourFunktion!), Und es gibt einige Wiederholungen, so dass hier möglicherweise mehr Golf gespielt werden muss.
  • StringReplace[ <full array> ,{"GZ"|"WE"->" ",x:("X"~~_~~" "|n)|##&@@( <known country codes> ~Join~ <extra codes> ):>x,Except@n->" "}]Zuerst werden die beiden Codes "GZ" und "WE" beseitigt, die laut Wolfram Ländercodes sind, aber nicht der Tabelle entsprechen. Dann werden alle mit "X" beginnenden Codes sowie die bekannten und manuell hinzugefügten Codes abgeglichen und durch ihre eigenen ersetzt. dann wird schließlich alles andere, was kein Zeilenumbruch ist und noch nicht abgeglichen wurde, in ein Leerzeichen umgewandelt.
Kein Baum
quelle
1
Es stellt sich heraus, dass die fremden "GZ" und "WE" für Gazastreifen und Westjordanland stehen. Ist dies das erste Mal, dass der Konflikt in Israel eine Code-Golf-Herausforderung betrifft?
Kein Baum
0

Jelly , 121 120 112 110 Bytes (nicht konkurrierend)

“VV&ØṖgḳeƘKo⁾lc<Ṗɗẋ⁾ÆȤ¡rżQ5¤ø^k&`v®tḊẒḂṁz®ṙṂþ°~7<¹ṢƝƒ4ṇæÇZt9ẈÇḞƲY!u`İŀo0*dḅḥmȯḊȧṛƓXĠƈṾ’Bx2ða»32øØAp`OFµỌs2s26G

Probieren Sie es online!

-8 Bytes dank @Dennis

-2 Bytes dank der Idee von @ Dennis von kartesischen Produkten

Wie es funktioniert

Einfach: Das Programm multipliziert eine große Binärliste mit einer anderen großen Liste, um den größten Teil der Ausgabe zu erhalten, und formatiert sie dann

Mittel: Das Programm codiert die große Binärliste

1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1

in eine große Zahl, die codiert, welche Ländercodes zugewiesen sind. Jedes Element wird elementweise mit jedem Element jedes möglichen Ländercodes multipliziert, um eine Liste aller zugewiesenen Ländercodes zu erhalten, die dann in die Ausgabeliste formatiert werden.

Niedrigeres Level:

Der Großteil des Programms verwendet Daten, die codiert sind in:

“VV&ØṖgḳeƘKo⁾lc<Ṗɗẋ⁾ÆȤ¡rżQ5¤ø^k&`v®tḊẒḂṁz®ṙṂþ°~7<¹ṢƝƒ4ṇæÇZt9ẈÇḞƲY!u`İŀo0*dḅḥmȯḊȧṛƓXĠƈṾ’

Es ist eine Basis-250-Ganzzahl, die die Dezimalzahl enthält 233462323092263584350936137603939798267906095227198731310610883427614237299604158551774020670253062350084519623333781892392013977676150946873601610983221266427394582295973500719992107281184544524840476937, die in die obige Binärliste umgewandelt wird.

Nennen wir der Kürze halber diesen Wert cund ersetzen Sie die lange Zeichenfolge cin der Erläuterung durch

cBx2ða»32øØAp`OFµỌs2s26G   - main link, takes no input
c                          -  literal value
 B                         -  convert this to binary to get a list
                                       representing which codes are assigned
  x2                       -   repeat each element twice
    ða»32                  - element-wise product (dealing with 
                                       spaces) with...
         øØAp`OF           -  every possible country code in ASCII codes.
                µỌs2s26G   - format the output to be correct
fireflame241
quelle
;⁶$€Fs78;⁷$€kann durch ersetzt werden s26G.
Dennis
Tipps: Schauen Sie sich kartesische Produkte an. Sie brauchen keine Leerzeichen; Gfüllt leere Zeichenketten mit Leerzeichen auf.
Dennis
Ich denke, das ist nicht konkurrierend.
Erik der Outgolfer
Ja, die Sprache ist neuer als die Herausforderung.
mbomb007