In tất cả các mã quốc gia


24

ISO 3166-1 là tiêu chuẩn xác định tất cả các mã quốc gia. Các mã hai chữ cái nổi tiếng (US, GB, JP, v.v.) được gọi là mã Alpha-2.

Với hai chữ cái, chỉ có 26 2 = 676 mã có thể, có thể được sắp xếp độc đáo trong một lưới. Bảng này có thể hữu ích như một tổng quan, để xem mã nào đang thực sự được sử dụng, dành riêng, v.v.

Thách thức này rất đơn giản: bạn sẽ in tất cả các mã được gán của lưới này sang STDOUT, sử dụng ASCII đơn giản, chính xác như được hiển thị bên dưới:

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ếu tôi có bất kỳ sai lầm nào khi sao chép nó xuống, bảng ở đây trong bài viết này là quy tắc cho thử thách, không phải là trên Wikipedia.)

Bạn có thể hoặc không thể sử dụng khoảng trắng theo sau trong mỗi dòng không chứa *Zmã, nhưng không vượt quá ký tự thứ 77 trong dòng đó (nghĩa là, nhiều nhất, bạn có thể biến nó thành một khối hình chữ nhật, kết thúc bằng Zs và dấu cách). Ngoài ra, bạn có thể hoặc không thể sử dụng một dòng mới duy nhất ở cuối.

Đây là mã golf, vì vậy câu trả lời ngắn nhất (tính bằng byte) sẽ thắng.


Bảng nào là ví dụ của bạn phải phù hợp? Là thiếu sót của YT(Mayotte) là một giám sát?
Greg Hewgill

@GregHewgill Có, cảm ơn bạn. Tôi sẽ khắc phục điều đó, nhưng đối với bất kỳ sự khác biệt nào nữa, bảng trong bài đăng này là quy phạm (nó không thực sự quan trọng đối với thách thức, nếu thiếu một mã hoặc quá nhiều).
Martin Ender

Câu trả lời:


7

CJam, 125 122 121 byte

"^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*

Ở trên sử dụng ký hiệu dấu mũ cho các ký tự điều khiển.

Phiên bản có thể in ( 141 byte ) cho trình thông dịch trực tuyến :

"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*

Chạy ví dụ

$ 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

10

Python 2, 240 byte

Thực hiện mã hóa nhị phân đơn giản.

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)

Kịch bản để tạo số nguyên rất nhanh và bẩn:

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)

1
Bạn lưu 4 byte bằng cách sử dụng R=range(26).
Falko

1
@Falko: Điều đó sẽ không hiệu quả vì tôi cần hai vòng lặp. Đợi đã, đây là python 2, trong đó phạm vi trả về một danh sách!
Greg Hewgill

Oh, và thêm 4 bài viết ...,36)&1<<c+r*26else.... - Bạn có phiền khi đăng tập lệnh của mình để tạo số nguyên cơ sở 36 không?
Falko

@Falko: Cảm ơn, chỉ có 3 vì 26elsekhông thể phân tích cú pháp. Tôi nghĩ rằng tôi đã cố gắng loại bỏ các dấu ngoặc đơn nhưng tôi phải có một cái gì đó sai ở điểm đó!
Greg Hewgill

Ok, nó dường như phụ thuộc vào người phiên dịch. Python 2.7.8 của tôi không cho phép 26else. (Python 2.7.6, tuy nhiên, không.)
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?$/:" "}

glà một ma trận trong đó mỗi ô có mã quốc gia là một 1và tất cả các ô khác 0. Tất cả các hàng được viết phía sau và số nhị phân kết quả đã được chuyển đổi thành đại diện 36 cơ sở. Sau đó, tôi chỉ lặp đi lặp lại trên tất cả các ô và kiểm tra xem mã sẽ được in.


2
Chào mừng đến với PPCG! Một vài lời khuyên của Ruby: bạn có thể sử dụng {|i|...}thay vì do|i|...endvà cũng bắt đầu câu lệnh đầu tiên ngay sau đó |i|(không ngắt dòng). Một cách ngắn hơn để in mà không ngắt dòng là $><<. Bạn có thể thay thế "\n"bằng $/, và "1"với ?1. Và một cách ngắn hơn để tạo bảng chữ cái là l=[*?A..?Z]*'';)
Martin Ender

2
Ngoài ra, bạn có thể sử dụng bảng chữ cái dưới dạng mảng, không cần nối nó thành một chuỗi.
manatwork

Cảm ơn! Nếu tôi thay thế printbằng $><<một ma trận truefalseđược in. Làm thế nào để tôi sử dụng chính xác?
stevecross

1
Có một vấn đề về quyền ưu tiên như <<là một phương pháp $>, vì vậy bạn phải sử dụng dấu ngoặc đơn : $><<(1==2?3:4). Nhân tiện, đoạn ngắn nhất tôi nhận được từ đây là 231 ký tự: pastebin.com/iabBNh6S .
manatwork

1
Không tôi không nghĩ thế. Nhưng bất kể bạn sử dụng printhay $><<, chỉ sử dụng một. printchấp nhận nhiều tham số được phân tách bằng ,, vì $><<bạn có thể nối hai phần này với đầu ra.
manatwork

4

CJam, 152 149 148 145 144 140 139 byte, có thể in

". 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*

Cảm ơn Dennis cho con trỏ.

Cách tiếp cận khá đơn giản. Làm thế nào nó hoạt động:

". 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"

Dùng thử trực tuyến tại đây

(Bây giờ chỉ khi tôi biết cách thực hiện phiên bản ký tự không in được)


Tôi đã không chú ý đến câu trả lời của bạn trước đó. Sau lần chỉnh sửa cuối cùng, cách tiếp cận của tôi khá giống với cách của bạn (nhưng vẫn chậm một bước). 1. :ikhông cần thiết; bhoạt động tốt với một chuỗi như là đối số thứ hai của nó. 2. Nếu bạn sử dụng '[,thay vì 91,, bạn không cần :c.
Dennis

@Dennis Cảm ơn! Tôi thực sự đã thử '[,65>tuyến đường, nhưng tôi vẫn đặt :csau khi nó dẫn đến cùng một byte, do đó không sử dụng nó: D
Trình tối ưu hóa

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'))

Chuỗi lớn là mỗi hàng được đặt thành nhị phân ( 1nếu có mã quốc gia ở đó, 0nếu không) và sau đó là cơ sở36. Dùng thử trong Firefox tại http://jsfiddle.net/twduhqz6/1/ .


2

Bash + coreutils, 361

Loại bỏ regex cơ bản của các combo mà chúng tôi không muốn. Một số nén nhẹ của 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"

2

Haskell, 357

Chết tiệt, cái này hơi khó.

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]

In thành STDOUT khi được biên dịch (do đó là chính). Sử dụng nén đúng cách sẽ làm cho việc này ngắn hơn rất nhiều ...


1

JavaScript (E6) 350

Không phải là công cụ phù hợp cho nhiệm vụ này (có thể nhờ 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'}))

1

J, 172 ký tự (có thể in)

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

Ngắt dòng cho mức độ dễ đọc. Đóng gói nhị phân đơn giản, với sáu bit cho mỗi ký tự chuỗi (bù 34 để vào phạm vi có thể in cũng như tránh ').


1

Ngôn ngữ Wolfram, 244 255 byte

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

Số từ câu trả lời của fireflame241 đã được sử dụng và đóng gói lại thành dạng 36-ary.

Không có dữ liệu quốc gia dựng sẵn được sử dụng.


0

PHP, 323 byte

$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];

Hãy thử trực tuyến!


0

C, 373 byte

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);}

Dùng thử trực tuyến


0

Ngôn ngữ Wolfram, 389 byte

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->" "}]

Dễ đọc hơn:

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 có một danh sách các mã quốc gia ISO được xây dựng sẵn, vì vậy đây sẽ là ngôn ngữ hoàn hảo cho công việc. Tuy nhiên, nó chỉ biết về mã quốc gia thực sự là mã của các quốc gia chứ không phải mã dành riêng cho các mục đích sử dụng khác vẫn được bao gồm trong bảng này. Do đó, chúng tôi cần thêm rất nhiều mã quốc gia theo cách thủ công.

Giải trình:

  • ""<>r[r[#," "]&/@Array[CharacterRange["A","Z"][[{##}]]&,{26,26}],n="\n"] là một chuỗi chuỗi của tất cả các cặp chữ cái từ "A" đến "Z".
  • #~c~"CountryCode"&/@c[](nơi c=CountryDatađược xác định trước đó) đưa ra danh sách tất cả các mã quốc gia mà Ngôn ngữ Wolfram biết. Một vài trong số này làMissing["NotApplicable"] , vì vậy chúng tôi loại bỏ những người có Cases[...,_String].
  • (""<>#&/@Partition[Characters@"AACP...AXJA",2,1])tạo 83 mã quốc gia còn lại theo cách thủ công bằng cách sử dụng chuỗi 138 ký tự, trong đó các cặp ký tự liền kề là mã quốc gia bắt buộc. Chuỗi này được tìm thấy ít nhiều bằng tay (với sự trợ giúp củaFindPostmanTour chức năng!), Và có một số sự lặp lại, do đó, có khả năng nhiều môn đánh gôn sẽ được thực hiện ở đây.
  • StringReplace[ <full array> ,{"GZ"|"WE"->" ",x:("X"~~_~~" "|n)|##&@@( <known country codes> ~Join~ <extra codes> ):>x,Except@n->" "}]đầu tiên loại bỏ hai mã, "GZ" và "WE", mà Wolfram nghĩ là mã quốc gia nhưng không theo bảng; sau đó khớp với tất cả các mã bắt đầu bằng "X", cộng với các mã đã biết và các mã chúng tôi đã thêm thủ công và thay thế chúng bằng chính chúng; rồi cuối cùng mọi thứ khác không phải là một dòng mới và chưa được khớp sẽ được chuyển thành một khoảng trắng.

1
Nó chỉ ra rằng "GZ" và "WE" bên ngoài là viết tắt của Dải Gaza và Bờ Tây. Đây có phải là lần đầu tiên cuộc xung đột ở Israel ảnh hưởng đến một thách thức golf mã?
Không phải là cây

0

Jelly , 121 120 112 110 byte (không cạnh tranh)

“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

Hãy thử trực tuyến!

-8 byte nhờ @Dennis

-2 byte nhờ ý tưởng của @ Dennis về các sản phẩm của Cartesian

Làm thế nào nó hoạt động

Đơn giản: Chương trình nhân một danh sách nhị phân lớn với một danh sách lớn khác để có hầu hết đầu ra, sau đó định dạng nó

Trung bình: Chương trình mã hóa danh sách nhị phân lớn

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

thành một số lớn, mã hóa mã quốc gia nào được gán. Mỗi yếu tố được nhân lên theo từng yếu tố theo từng yếu tố của mỗi mã quốc gia có thể để có được danh sách tất cả các mã quốc gia được gán, sau đó được định dạng vào danh sách đầu ra.

Mức độ thấp hơn:

Phần lớn chương trình sử dụng dữ liệu được mã hóa trong:

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

Nó là một số nguyên cơ sở 250 chứa số thập phân 233462323092263584350936137603939798267906095227198731310610883427614237299604158551774020670253062350084519623333781892392013977676150946873601610983221266427394582295973500719992107281184544524840476937, được chuyển thành danh sách nhị phân ở trên.

Để cho ngắn gọn, hãy gọi giá trị này cvà thay thế chuỗi dài bằng ctrong phần giải thích

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

;⁶$€Fs78;⁷$€có thể được thay thế bằng s26G.
Dennis

Gợi ý: Nhìn vào các sản phẩm của Cartesian. Bạn không cần khoảng trống để trống; Gsẽ đệm chuỗi trống với không gian.
Dennis

Tôi nghĩ rằng điều này là không cạnh tranh.
Erik the Outgolfer

Vâng, ngôn ngữ mới hơn thách thức.
mbomb007
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.