พิมพ์รหัสประเทศทั้งหมด


24

ISO 3166-1เป็นมาตรฐานที่กำหนดรหัสประเทศทั้งหมด รหัสตัวอักษรสองตัวที่รู้จักกันดี (US, GB, JP และอื่น ๆ ) เรียกว่ารหัส Alpha-2

ด้วยตัวอักษรสองตัวมีเพียง 26 2 = 676 รหัสที่เป็นไปได้ซึ่งสามารถจัดเรียงอย่างเป็นตาราง ตารางนี้มีประโยชน์เป็นภาพรวมเพื่อดูว่ามีการใช้รหัสใดถูกสงวนไว้ ฯลฯ

ความท้าทายนี้ง่ายมาก: คุณจะพิมพ์รหัสที่กำหนดทั้งหมดของกริดนี้ไปยัง STDOUT โดยใช้ ASCII ธรรมดาดังที่แสดงด้านล่าง:

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

(หากฉันทำผิดพลาดในการคัดลอกมันลงมาตารางที่นี่ในโพสต์นี้เป็นบรรทัดฐานสำหรับความท้าทายไม่ใช่ตารางบน Wikipedia)

คุณสามารถหรือไม่ใช้ช่องว่างต่อท้ายในแต่ละบรรทัดที่ไม่มี*Zรหัส แต่ไม่เกินอักขระที่ 77 ในบรรทัดนั้น (เช่นมากที่สุดคุณสามารถทำให้เป็นบล็อกสี่เหลี่ยมสิ้นสุดในZs และเว้นวรรค) นอกจากนี้คุณอาจใช้หรือไม่ใช้บรรทัดใหม่ต่อท้ายบรรทัดเดียวในตอนท้าย

นี่คือรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุด (เป็นไบต์) ชนะ


ตัวอย่างของคุณควรตรงกับตารางใด การละเลยYT(Mayotte) การกำกับดูแลหรือไม่?
Greg Hewgill

@ GregHewgill ใช่ขอบคุณ ฉันจะแก้ไขนั้น แต่ความแตกต่างใด ๆ เพิ่มเติมตารางในโพสต์นี้เป็นบรรทัดฐาน (มันไม่ได้จริงๆสำคัญสำหรับความท้าทายถ้ารหัสหนึ่งหายไปหรือมากเกินไป)
Martin Ender

คำตอบ:


7

CJam, 125 122 121 ไบต์

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

ด้านบนใช้เครื่องหมายรูปหมวกสำหรับตัวควบคุม

เวอร์ชันที่พิมพ์ได้ ( 141 ไบต์ ) สำหรับล่ามออนไลน์ :

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

ตัวอย่างการวิ่ง

$ 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 ไบต์

การใช้การเข้ารหัสไบนารีที่ตรงไปตรงมา

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)

สคริปต์สำหรับสร้างจำนวนเต็มนั้นรวดเร็วและสกปรก:

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
คุณประหยัด 4 R=range(26)ไบต์ใช้
Falko

1
@Falko: มันไม่ทำงานเพราะฉันต้องการตัววนซ้ำสองตัว โอ้เดี๋ยวก่อนนี่คือ python 2 ที่ range ส่งคืนรายการ!
Greg Hewgill

Oh, และ 4 ...,36)&1<<c+r*26else...การเขียนมากขึ้น - คุณจะโพสต์สคริปต์เพื่อสร้างจำนวนเต็ม -36 หรือไม่
Falko

@Falko: ขอบคุณเพียง 3 เพราะ26elseไม่สามารถแยกวิเคราะห์ได้ ฉันคิดว่าฉันพยายามลบวงเล็บ แต่ฉันต้องมีอะไรผิดปกติ ณ จุดนั้น!
Greg Hewgill

ตกลงมันขึ้นอยู่กับล่าม ฉัน Python 2.7.8 26elseไม่อนุญาตให้ (Python 2.7.6 ไม่เป็นเช่นนั้น)
Falko

6

ทับทิม, 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?$/:" "}

gเป็นเมทริกซ์ที่เซลล์ที่มีรหัสประเทศแต่ละคนเป็น1และคนอื่น ๆ 0มี แถวทั้งหมดจะถูกเขียนไว้ด้านหลังและเลขฐานสองที่ได้จะถูกแปลงเป็นรูปแบบฐาน 36 จากนั้นฉันก็วนซ้ำทุกเซลล์และตรวจสอบว่ารหัสจะถูกพิมพ์


2
ยินดีต้อนรับสู่ PPCG! เคล็ดลับ Ruby สองสามข้อ: คุณสามารถใช้{|i|...}แทนdo|i|...endและเริ่มคำสั่งแรกได้ทันที|i|(โดยไม่ต้องขึ้นบรรทัดใหม่) วิธีที่สั้นกว่าในการพิมพ์โดยไม่ต้องขึ้นบรรทัด$><<ใหม่ คุณสามารถแทนที่"\n"ด้วย$/และมี"1" ?1และวิธีที่สั้นกว่าในการสร้างตัวอักษรคือl=[*?A..?Z]*'')
Martin Ender

2
นอกจากนี้คุณสามารถใช้ตัวอักษรเป็นอาร์เรย์ได้โดยไม่จำเป็นต้องรวมเข้าไปในสตริง
จัดการ

ขอบคุณ! ถ้าฉันแทนที่printด้วย$><<เมทริกซ์ของtrueและfalseถูกพิมพ์ ฉันจะใช้สิ่งนี้อย่างถูกต้องได้อย่างไร
สตีฟ

1
มีปัญหาของความเป็นผู้นำจะปรากฏเป็น<<เป็นวิธีการของคุณจึงต้องใช้วงเล็บ:$> $><<(1==2?3:4)โดยวิธีการที่สั้นที่สุดที่ผมได้จากนี้คือ 231 ตัวอักษร: pastebin.com/iabBNh6S
จัดการ

1
ไม่ฉันไม่คิด แต่ไม่ว่าคุณจะใช้printหรือ$><<ใช้เพียงครั้งเดียว printยอมรับพารามิเตอร์หลายตัวคั่นด้วย,สำหรับ$><<คุณสามารถต่อสองชิ้นเข้าด้วยกัน
จัดการ

4

CJam, 152 149 148 145 144 140 139 ไบต์สามารถพิมพ์ได้

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

ขอบคุณเดนนิสสำหรับพอยน์เตอร์

วิธีการตรงไปตรงมาสวย มันทำงานอย่างไร:

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

ลองออนไลน์ได้ที่นี่

(ตอนนี้ก็ต่อเมื่อฉันรู้วิธีการทำตัวละครที่ไม่สามารถพิมพ์ได้)


ฉันไม่ได้ใส่ใจกับคำตอบของคุณก่อนหน้านี้ หลังจากการแก้ไขครั้งล่าสุดของฉันวิธีการของฉันค่อนข้างคล้ายกับของคุณ (แต่ยังคงเป็นขั้นตอนหลัง) 1. :iไม่จำเป็น bทำงานได้ดีกับสตริงเป็นอาร์กิวเมนต์ที่สอง 2. ถ้าคุณใช้'[,แทน91,, :cคุณไม่จำเป็นต้อง
เดนนิส

@ เดนนิสขอบคุณ! ฉันลองใช้'[,65>เส้นทางจริงแต่ฉันก็ยังคงใส่:cหลังจากที่มันนำไปสู่ไบต์เดียวกันดังนั้นจึงไม่ได้ใช้: D
เครื่องมือเพิ่มประสิทธิภาพ

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

สตริงใหญ่คือแต่ละแถวที่ใส่ลงในไบนารี่ ( 1ถ้ามีรหัสประเทศที่นั่น0ถ้าไม่ใช่) จากนั้นเบส 36 พยายามที่จะออกใน Firefox ที่http://jsfiddle.net/twduhqz6/1/


2

Bash + coreutils, 361

การกำจัดคอมโบพื้นฐานที่เราไม่ต้องการ การบีบอัดเบา ๆ ของ 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

นี่มันช่างยากเหลือเกิน

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]

พิมพ์ไปยัง STDOUT เมื่อรวบรวม (ดังนั้นหลัก) การใช้การบีบอัดที่เหมาะสมจะทำให้สั้นลง ... ยินดีต้อนรับแนวคิด


1

JavaScript (E6) 350

ไม่ใช่เครื่องมือที่เหมาะสมสำหรับงานนี้ (อาจต้องขอบคุณ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 ตัวอักษร (พิมพ์ได้)

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

การขึ้นบรรทัดใหม่เพื่อความชัดเจน การบรรจุไบนารีแบบตรงไปตรงมาพร้อมกับหกบิตต่ออักขระสตริง (ชดเชย 34 เพื่อเข้าสู่ช่วงที่พิมพ์ได้และหลีกเลี่ยง')


1

ภาษา Wolfram, 244 255ไบต์

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

หมายเลขจากคำตอบของ fireflame241 ถูกใช้และบรรจุใหม่ในรูปแบบ 36 ary

ไม่มีการใช้ข้อมูลประเทศในตัว


0

PHP, 323 ไบต์

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

ลองออนไลน์!


0

C, 373 ไบต์

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

ลองออนไลน์


0

ภาษา Wolfram ขนาด 389 ไบต์

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

อ่านเพิ่มเติมได้:

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 มีรายการรหัสประเทศ ISO ที่สร้างขึ้นดังนั้นนี่จึงเป็นภาษาที่สมบูรณ์แบบสำหรับงานนี้ อย่างไรก็ตามจะรู้ได้เฉพาะเกี่ยวกับรหัสประเทศที่เป็นรหัสสำหรับประเทศไม่ใช่รหัสที่สงวนไว้สำหรับการใช้งานอื่นซึ่งยังคงอยู่ในตารางนี้ เราต้องเพิ่มรหัสประเทศจำนวนมากด้วยตนเอง

คำอธิบาย:

  • ""<>r[r[#," "]&/@Array[CharacterRange["A","Z"][[{##}]]&,{26,26}],n="\n"] เป็นอาร์เรย์สตริงของตัวอักษรทุกคู่ตั้งแต่ "A" ถึง "Z"
  • #~c~"CountryCode"&/@c[](ที่c=CountryDataมีการกำหนดไว้ก่อนหน้านี้) แสดงรายการรหัสประเทศทั้งหมดที่ Wolfram Language รู้ คู่ของเหล่านี้อยู่ดังนั้นเราจึงเอาผู้ที่มีMissing["NotApplicable"]Cases[...,_String]
  • (""<>#&/@Partition[Characters@"AACP...AXJA",2,1])ทำให้ 83 ของรหัสประเทศที่เหลือด้วยตนเองโดยใช้สตริง 138 อักขระซึ่งคู่ของอักขระที่อยู่ติดกันเป็นรหัสประเทศที่ต้องการ สตริงนี้พบมากขึ้นหรือน้อยลงด้วยมือ (ด้วยความช่วยเหลือของFindPostmanTourฟังก์ชั่น!) และมีการทำซ้ำบางส่วนดังนั้นจึงอาจมีการตีกอล์ฟมากขึ้นที่นี่
  • StringReplace[ <full array> ,{"GZ"|"WE"->" ",x:("X"~~_~~" "|n)|##&@@( <known country codes> ~Join~ <extra codes> ):>x,Except@n->" "}]ก่อนอื่นให้กำจัดสองรหัสคือ "GZ" และ "WE" ซึ่ง Wolfram คิดว่าเป็นรหัสประเทศ แต่ไม่เป็นไปตามตาราง จากนั้นจับคู่รหัสทั้งหมดที่ขึ้นต้นด้วย "X" รวมถึงรหัสที่ทราบและรหัสที่เราเพิ่มด้วยตนเองและแทนที่ด้วยรหัสเอง ในที่สุดทุกอย่างอื่นที่ไม่ใช่บรรทัดใหม่และยังไม่ได้รับการจับคู่จะกลายเป็นพื้นที่

1
ปรากฎว่า "GZ" และ "WE" ที่ไม่เกี่ยวข้องกับ Gaza Strip และ West Bank นี่เป็นครั้งแรกที่ความขัดแย้งในอิสราเอลส่งผลกระทบต่อการแข่งขันกอล์ฟหรือไม่?
ไม่ใช่ต้นไม้

0

เยลลี่ , 121 120 112 110 ไบต์ (ไม่แข่งขัน)

“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

ลองออนไลน์!

-8 ไบต์ขอบคุณ @Dennis

-2 ไบต์ขอบคุณแนวคิดของ @ Dennis เกี่ยวกับผลิตภัณฑ์คาร์ทีเซียน

มันทำงานอย่างไร

ง่าย:โปรแกรมทวีคูณรายการไบนารีขนาดใหญ่หนึ่งรายการกับรายการใหญ่อีกรายการหนึ่งเพื่อให้ได้ผลลัพธ์มากที่สุด

ปานกลาง:โปรแกรมเข้ารหัสรายการเลขฐานสองขนาดใหญ่

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

เป็นตัวเลขขนาดใหญ่หนึ่งตัวซึ่งเข้ารหัสรหัสประเทศที่ได้รับมอบหมาย แต่ละองค์ประกอบถูกคูณด้วยองค์ประกอบที่ชาญฉลาดโดยแต่ละองค์ประกอบของรหัสประเทศที่เป็นไปได้ทุกรายการเพื่อรับรายการรหัสประเทศที่ได้รับมอบหมายทั้งหมดจากนั้นจะถูกจัดรูปแบบไปยังรายการผลลัพธ์

ระดับต่ำ:

กลุ่มของโปรแกรมใช้ข้อมูลที่เข้ารหัสใน:

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

มันเป็นจำนวนเต็มฐาน 250 ซึ่งถือจำนวนทศนิยม233462323092263584350936137603939798267906095227198731310610883427614237299604158551774020670253062350084519623333781892392013977676150946873601610983221266427394582295973500719992107281184544524840476937ซึ่งได้กลายเป็นรายการไบนารีข้างต้น

เพื่อความกะทัดรัดขอเรียกค่านี้cและแทนที่สตริงยาวด้วยcในคำอธิบาย

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;⁷$€s26Gสามารถถูกแทนที่ด้วย
Dennis

คำแนะนำ: ดูเป็นผลิตภัณฑ์คาร์ทีเซียน คุณไม่ต้องการที่ว่างสำหรับช่องว่าง Gจะแผ่นสตริงว่างด้วยช่องว่าง
Dennis

ฉันคิดว่านี่ไม่ใช่การแข่งขัน
Erik the Outgolfer

ใช่ภาษานั้นใหม่กว่าความท้าทาย
mbomb007
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.