ISO 3166-1 adalah standar yang mendefinisikan semua kode negara. Kode dua huruf yang terkenal (AS, GB, JP, dll.) Disebut kode Alpha-2.
Dengan dua huruf, hanya ada 26 2 = 676 kode yang mungkin, yang dapat diatur dengan baik dalam kotak. Tabel ini dapat berguna sebagai gambaran umum, untuk melihat kode mana yang benar-benar digunakan, dicadangkan, dll.
Tantangan ini sederhana: Anda akan mencetak semua kode yang ditetapkan dari kisi ini ke STDOUT, menggunakan ASCII biasa, persis seperti yang ditunjukkan di bawah ini:
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
(Jika saya membuat kesalahan dengan menyalinnya, tabel di sini di posting ini adalah normatif untuk tantangan, bukan yang ada di Wikipedia.)
Anda mungkin atau mungkin tidak menggunakan spasi spasi di setiap baris yang tidak mengandung *Z
kode, tetapi tidak melebihi karakter ke-77 di baris itu (yaitu, paling banyak, Anda bisa membuatnya menjadi blok persegi panjang, berakhiran Z
s dan spasi). Juga, Anda mungkin atau mungkin tidak menggunakan satu baris baru di belakang.
Ini kode golf, jadi jawaban tersingkat (dalam byte) menang.
sumber
YT
(Mayotte) keliru?Jawaban:
CJam,
125122121 byteDi atas menggunakan notasi tanda kuret untuk karakter kontrol.
Versi yang dapat dicetak ( 141 byte ) untuk penerjemah online :
Contoh dijalankan
sumber
Python 2, 240 byte
Implementasi pengkodean biner langsung.
Script untuk menghasilkan integer cepat dan kotor:
sumber
R=range(26)
....,36)&1<<c+r*26else...
. - Apakah Anda keberatan memposting skrip Anda untuk menghasilkan integer base-36?26else
tidak dapat diuraikan. Saya pikir saya mencoba menghapus tanda kurung tetapi saya pasti memiliki sesuatu yang salah pada saat itu!26else
. (Python 2.7.6, bagaimanapun, tidak.)Ruby,
269 246 241 235227g
adalah matriks di mana setiap sel yang memiliki kode negara adalah1
dan semua lainnya0
. Semua baris ditulis di belakang dan nomor biner yang dihasilkan telah dikonversi ke representasi basis 36. Lalu saya hanya mengulangi semua sel dan memeriksa apakah kode tersebut akan dicetak.sumber
{|i|...}
sebagai gantido|i|...end
, dan juga memulai pernyataan pertama tepat setelah|i|
(tanpa jeda baris). Cara yang lebih singkat untuk mencetak tanpa tertinggal jeda baris adalah$><<
. Anda dapat mengganti"\n"
dengan$/
, dan"1"
dengan?1
. Dan cara yang lebih singkat untuk menghasilkan alfabet adalahl=[*?A..?Z]*''
;)print
dengan$><<
matrikstrue
danfalse
dicetak. Bagaimana saya menggunakan ini dengan benar?<<
adalah metode$>
, sehingga Anda harus menggunakan kurung:$><<(1==2?3:4)
. Ngomong-ngomong, yang terpendek yang saya dapatkan dari ini adalah 231 karakter: pastebin.com/iabBNh6S .print
atau$><<
, gunakan hanya satu.print
menerima beberapa parameter yang dipisahkan dengan,
, karena$><<
Anda dapat menggabungkan kedua bagian tersebut menjadi keluaran.CJam,
152 149 148 145 144 140139 bytes, dapat dicetakTerima kasih Dennis untuk petunjuknya.
Pendekatan yang cukup mudah. Bagaimana itu bekerja:
Cobalah online di sini
(Sekarang hanya jika saya tahu cara melakukan versi karakter yang tidak dapat dicetak)
sumber
:i
tidak diperlukan;b
berfungsi dengan baik dengan string sebagai argumen kedua. 2. Jika Anda menggunakan'[,
bukan91,
, Anda tidak perlu:c
.'[,65>
rute, tetapi saya masih meletakkan:c
setelah itu mengarah ke byte yang sama, sehingga tidak menggunakannya: DJavaScript ES6,
336322String besar adalah setiap baris dimasukkan ke dalam biner (
1
jika ada kode negara di sana,0
jika tidak) dan kemudian base36. Cobalah di Firefox di http://jsfiddle.net/twduhqz6/1/ .sumber
Bash + coreutils, 361
Penghapusan regex dasar dari kombo yang tidak kita inginkan. Beberapa kompresi ringan regex:
sumber
Haskell, 357
Sial, ini agak sulit.
Mencetak ke STDOUT saat dikompilasi (dengan demikian utama). Menggunakan kompresi yang tepat akan membuat ini jauh lebih pendek ... ide diterima
sumber
JavaScript (E6) 350
Bukan alat yang tepat untuk tugas ini (mungkin terima kasih kepada String.fromCharCode ?)
sumber
J, 172 karakter (dapat dicetak)
Jeda baris untuk keterbacaan. Pengepakan biner langsung, dengan enam bit per karakter string (mengimbangi 34 untuk masuk ke kisaran yang dapat dicetak serta menghindari
'
).sumber
Bahasa Wolfram, 244
255byteNomor dari jawaban fireflame241 digunakan dan dikemas ulang dalam bentuk 36-ary.
Tidak ada data negara bawaan yang digunakan.
sumber
PHP, 323 Bytes
Cobalah online!
sumber
C, 373 byte
Cobalah online
sumber
Bahasa Wolfram, 389 byte
Lebih mudah dibaca:
Wolfram memiliki daftar kode negara ISO bawaan, jadi ini harus menjadi bahasa yang sempurna untuk pekerjaan itu. Namun, itu hanya tahu tentang kode negara yang sebenarnya adalah kode untuk negara, dan bukan kode yang disediakan untuk penggunaan lain, yang masih termasuk dalam tabel ini. Karena itu kita perlu menambahkan banyak kode negara secara manual.
Penjelasan:
""<>r[r[#," "]&/@Array[CharacterRange["A","Z"][[{##}]]&,{26,26}],n="\n"]
adalah array string semua pasangan huruf dari "A" ke "Z".#~c~"CountryCode"&/@c[]
(di manac=CountryData
didefinisikan sebelumnya) memberikan daftar semua kode negara yang Wolfram Language ketahui. Beberapa di antaranyaMissing["NotApplicable"]
, jadi kami menghapusnya denganCases[...,_String]
.(""<>#&/@Partition[Characters@"AACP...AXJA",2,1])
membuat 83 dari kode negara yang tersisa secara manual menggunakan string 138 karakter, di mana pasangan karakter yang berdekatan adalah kode negara yang diperlukan. Tali ini ditemukan kurang lebih dengan tangan (dengan bantuanFindPostmanTour
fungsi!), Dan ada beberapa pengulangan, jadi ada potensi lebih banyak bermain golf yang bisa dilakukan di sini.StringReplace[ <full array> ,{"GZ"|"WE"->" ",x:("X"~~_~~" "|n)|##&@@( <known country codes> ~Join~ <extra codes> ):>x,Except@n->" "}]
pertama-tama menyingkirkan dua kode, "GZ" dan "KAMI", yang menurut Wolfram adalah kode negara tetapi tidak sesuai dengan tabel; kemudian cocok dengan semua kode yang dimulai dengan "X", ditambah kode yang dikenal dan yang kami tambahkan secara manual, dan ganti dengan mereka sendiri; lalu akhirnya segala sesuatu yang bukan baris baru dan belum dicocokkan berubah menjadi spasi.sumber
Jelly ,
121120112110 byte (tidak bersaing)Cobalah online!
-8 byte terima kasih kepada @Dennis
-2 byte berkat ide @ Dennis tentang produk Cartesian
Bagaimana itu bekerja
Sederhana: Program ini mengalikan satu daftar biner besar dengan daftar besar lainnya untuk mendapatkan sebagian besar output, kemudian memformatnya
Medium: Program mengkodekan daftar biner besar
menjadi satu nomor besar, pengodean kode negara mana yang ditugaskan. Setiap elemen dikalikan elemen-bijaksana dengan setiap elemen dari setiap kode negara yang mungkin untuk mendapatkan daftar semua kode negara yang ditugaskan, yang kemudian diformat ke daftar output.
Tingkat yang lebih rendah:
Sebagian besar program menggunakan data yang disandikan dalam:
Ini adalah bilangan bulat basis-250 yang memegang angka desimal
233462323092263584350936137603939798267906095227198731310610883427614237299604158551774020670253062350084519623333781892392013977676150946873601610983221266427394582295973500719992107281184544524840476937
, yang akan berubah menjadi daftar biner di atas.Untuk singkatnya, sebut saja nilai ini
c
dan ganti string panjang denganc
dalam penjelasansumber
;⁶$€Fs78;⁷$€
dapat diganti dengans26G
.G
akan mengisi string kosong dengan spasi.