Aturan
Diberi kode negara ISO3166-1-Alpha-2, tugas Anda adalah memutuskan arah lalu lintas untuk negara itu:
- Input akan menjadi kode negara yang valid (valid karena merupakan elemen dari dua daftar yang disediakan)
- Input mungkin daftar dua karakter, bukan string jika itu membantu
- Anda dapat memilih untuk mengambil input dalam huruf kecil
- Anda akan memilih satu nilai, katakan untuk hak (pilihan Anda) dan akan menampilkan nilai itu jika lalu lintas di negara itu tidak kidal dan hal lain dalam kasus lain
- Anda hanya perlu menangani kode negara yang terkandung dalam salah satu daftar ini:
Ini adalah semua negara di mana lalu lintas kidal:
['AI', 'AG', 'AU', 'BS', 'BD', 'BB', 'BM', 'BT', 'BW', 'VG', 'BN', 'KY', 'CX', 'CC', 'CK', 'CY', 'DM', 'FK', 'FJ', 'GD', 'GG', 'GY', 'HK', 'IN', 'ID', 'IE', 'IM', 'JM', 'JP', 'JE', 'KE', 'KI', 'LS', 'MO', 'MW', 'MY', 'MV', 'MT', 'MU', 'MS', 'MZ', 'NA', 'NR', 'NP', 'NZ', 'NU', 'NF', 'PK', 'PG', 'PN', 'SH', 'KN', 'LC', 'VC', 'WS', 'SC', 'SG', 'SB', 'SO', 'ZA', 'GS', 'LK', 'SR', 'SZ', 'TH', 'TL', 'TK', 'TO', 'TT', 'TC', 'TV', 'UG', 'GB', 'TZ', 'VI', 'ZM', 'ZW']
Dan di sini adalah semua negara di mana lalu lintas adalah tangan kanan:
['AF', 'AX', 'AL', 'DZ', 'AS', 'AD', 'AO', 'AQ', 'AR', 'AM', 'AW', 'AT', 'AZ', 'BH', 'BY', 'BE', 'BZ', 'BJ', 'BO', 'BA', 'BV', 'BR', 'IO', 'BG', 'BF', 'BI', 'CV', 'KH', 'CM', 'CA', 'CF', 'TD', 'CL', 'CN', 'CO', 'KM', 'CG', 'CR', 'CI', 'HR', 'CU', 'CW', 'CZ', 'KP', 'CD', 'DK', 'DJ', 'DO', 'EC', 'EG', 'SV', 'GQ', 'ER', 'EE', 'ET', 'FO', 'FI', 'FR', 'GF', 'PF', 'TF', 'GA', 'GM', 'GE', 'DE', 'GH', 'GI', 'GR', 'GL', 'GP', 'GU', 'GT', 'GW', 'GN', 'HT', 'HM', 'VA', 'HN', 'HU', 'IS', 'IR', 'IQ', 'IL', 'IT', 'JO', 'KZ', 'KW', 'KG', 'LA', 'LV', 'LB', 'LR', 'LY', 'LI', 'LT', 'LU', 'MG', 'ML', 'MH', 'MQ', 'MR', 'YT', 'MX', 'FM', 'MC', 'MN', 'ME', 'MA', 'MM', 'NL', 'NC', 'NI', 'NG', 'NE', 'MP', 'NO', 'OM', 'PW', 'PA', 'PY', 'PE', 'PH', 'PL', 'PT', 'PR', 'QA', 'KR', 'MD', 'RE', 'RO', 'RU', 'RW', 'BL', 'MF', 'PM', 'SM', 'ST', 'SA', 'SN', 'RS', 'SL', 'BQ', 'SX', 'SK', 'SI', 'SS', 'ES', 'PS', 'SD', 'SJ', 'SE', 'CH', 'SY', 'TW', 'TJ', 'MK', 'TG', 'TN', 'TR', 'TM', 'UA', 'AE', 'UM', 'US', 'UY', 'UZ', 'VU', 'VE', 'VN', 'WF', 'EH', 'YE']
Demi kelengkapan, inilah file CSV yang berisi semua nilai bersama dengan nama negara.
Testcases
Dengan asumsi Anda memilih untuk menghasilkan L
lalu lintas kidal, berikut adalah beberapa kasus uji yang valid:
'PY' -> 'python'
'PN' -> 'L'
'CN' -> 33
'GY' -> 'L'
Catatan: Ada kemungkinan kecil bahwa saya melewatkan suatu negara atau bahwa ada klasifikasi yang salah dan saya tidak akan mengubah spesifikasi karena itu mungkin membatalkan jawaban. Jika saya melakukan kesalahan, saya dengan tulus meminta maaf, tolong jangan tersinggung!
CountryData
dapat memberikan jumlah jalan dan kereta api beraspal dan tidak beraspal dll di suatu negara tetapi tidak arah lalu lintasnya :(Jawaban:
Python 2 ,
145136112109 byteCobalah online!
Output
-1
untuk lalu lintas tangan kanan.String ini dibuat secara otomatis dengan skrip Retina ini .Berkat totallyhuman untuk string pencarian 9 byte yang lebih pendek. Saya bisa mendapatkan 24 byte lebih banyak melalui saran AdmBorkBork .Punya string pencarian 3 byte lebih pendek menggunakan skrip python.
sumber
OT
tidak ada, dapatkah Anda menghilangkan beberapa ruang sepertiTO TC
pergi keTOTC
?Jelly , 61 byte
Terima kasih banyak kepada @Mr. Xcoder karena membantu saya menyusun ini
1 byte tersimpan berkat @Jonathan Allan
Pengembalian
0
untuk tangan kanan atau1
untuk tangan kiri.Cobalah online!
Bagaimana?
Kami mengonversi setiap kode negara ke integer N dengan menguraikannya sebagai basis-256 dan menerapkan fungsi hash berikut, yang bebas benturan untuk lalu lintas kidal vs kanan:
Ini mengarah ke daftar nilai berikut untuk lalu lintas kidal:
Perbedaan rata-rata antara dua entri berturut-turut dekat dengan 8. Kami delta-menyandikan daftar dengan peningkatan dalam kisaran [1 ... 16]. Ini berarti bahwa setiap kali kenaikan lebih besar dari 16, kita perlu memasukkan nilai menengah pada slot yang tidak digunakan (kita harus memastikan bahwa itu tidak terkena lalu lintas yang tidak benar). Tetapi fungsi hash dipilih sedemikian rupa sehingga kita hanya perlu melakukan itu untuk beberapa posisi. Ini memberi:
Kami mengonversi daftar ini dari bijective base-16 ke integer berikut:
yang menjadi
“ŒỴ¬Ʋ>r¤dị|®ædHẇ⁸ɗH^CŒ³ẇPḷgȤƲȥƓƑ®Ƭṅḅ4ṛḟṄ’
dalam pengkodean basis-250 Jelly.Tautan pertama membangun kembali daftar asli dari bilangan bulat ini dan yang kedua menguji apakah itu berisi hash dari input.
sumber
“ŒỴ¬Ʋ>r¤dị|®ædHẇ⁸ɗH^CŒ³ẇPḷgȤƲȥƓƑ®Ƭṅḅ4ṛḟṄ’ḃ⁴
(sehingga menghindari kenaikan) ... juga (bukan penyimpanan byte, tetapi)¢
menyebut tautan terakhir sebagai nilad.PowerShell ,
161148 byteCobalah online!
Pencocokan pola regexnaif. OutputTrue
untuk tangan kiri dan tanganFalse
kanan.Disimpan 13 byte berkat mercator golf regex.
sumber
[CFHW][CJKSXY]
(-5), I dan J menjadi[IJ][DEMNP]
(-3), mempersingkat N menjadiN[AFP-Z]
(-1), dan Z menjadiZ.
(-4), dengan total -13 byte. Regex baru =A[GIU]|B[BDMNSTW]|[CFHW][CJKSXY]|DM|G[BDGSY]|[IJ][DEMNP]|K[EINY]|L[CKS]|M[OS-WYZ]|N[AFP-Z]|P[GKN]|S[BCGHORZ]|T[CHKLOTVZ]|UG|V[CGI]|Z.
Haskell , 137 byte
-5 byte berkat ovs.
Cobalah online!
Menghasilkan string asli dengan tangan.
sumber
TTHSZWMSGSONPKNZMWVIDFKELSCYJPNFJMTVCXBNRBWSHKYAUGGYBTLCCKIMVGBSBBMZAINAGDMOBDIEJEMYMUNUPGSRLKTKTOTCTZ
SZAINAGGDMOAUGBBSCCKIMWSHKYLSBMVGSGYBDBTHBWBNRMZMTLCXSRTVCYPNFKNPKEFJMYVIDIEJPGJEMUNZWMSONULKTKTOTTCTZ
- Cobalah online!05AB1E ,
8268 byteOutput 1 untuk lalu lintas kiri dan 0 untuk lalu lintas kanan.
Cobalah online! atau sebagai Test Suite
Menggunakan string yang dihasilkan oleh manusia sepenuhnya dan ditingkatkan oleh ovs
sumber
05AB1E , 76 byte
Cobalah online!
Menghasilkan string berikut:
Jika saya membaginya pada spasi, dan interleave alfabet ke dalam setiap string, itu menghasilkan semua status yang mendorong di sisi kiri.
1 untuk kiri, 0 untuk kanan; Emigna lebih baik, tetapi ini terasa cukup berbeda untuk diposkan :).
sumber
Jelly , 69 byte
Tautan monadik yang mengambil daftar karakter dan kembali
1
jika kiri (0
jika kanan).Cobalah online!
Bagaimana?
Menggunakan metode yang diterapkan benar-benar manusia / ovs .
Juga, apa yang saya lakukan secara mandiri muncul pada 72 byte :
Juga tautan monadik yang mengambil daftar karakter dan kembali
1
jika kiri (0
jika kanan).Cobalah online!
Bagaimana?
sumber
Befunge,
155152147146 byteCobalah online!
Keluaran
80
untuk negara yang kidal, dan yang lainnya menunjukkan negara kidal.Penjelasan
Intinya kode berisi representasi dari semua negara kidal. Ini adalah daftar karakter pertama dari kode negara, dikelompokkan berdasarkan karakter kedua mereka. Akhir setiap grup ditandai dengan menurunkan karakter terakhir dalam grup.
Jadi misalnya grup pertama
Nz
,, mewakiliNA
danZA
. Kelompok kedua,BSg
, mewakiliBB
,SB
danGB
. Ada satu grup untuk setiap huruf dalam alfabet, kecuali untuk hurufQ
(tidak ada kode negara kiri yang berakhirQ
) Grup kosong itu diwakili oleh karakter{
, karena itu jelas tidak akan cocok dengan kode negara yang valid.Untuk menentukan apakah kode negara yang diberikan cocok dengan salah satu entri ini, kami beralih melalui daftar untuk memeriksa apakah ada karakter dalam daftar yang cocok dengan karakter pertama dari input kami (mod 32 untuk memperhitungkan kasus ini), dan juga bahwa grup yang sesuai , cocok dengan karakter kedua dari input. Karakter grup mulai sebagai
A
, dan bertambah setiap kali kami menemukan huruf kecil dalam daftar.Kami keluar ketika kami menemukan kecocokan, mengeluarkan nilai karakter terakhir pada tumpukan (yang akan menjadi karakter pertama dari kode negara - mungkin huruf kecil). Kalau tidak, kita akan keluar ketika kita sudah mengulangi seluruh daftar, dalam hal ini kita akan menampilkan angka terakhir pada stack, yang selalu 80.
sumber
Windows Batch,
289279199193181130118 byteMenghasilkan string ovs untuk lalu lintas kiri, jika tidak menghasilkan apa-apa.
Catatan: Saya perhatikan jika input berisi kode negara apa pun dalam daftar di atas, ia masih akan menampilkan L. Namun, ini tidak melanggar aturan tantangan karena OP menyebutkan hanya kode negara yang perlu ditangani.
Penjelasan:
sumber
C (gcc) ,
181169165 byteCobalah online!
sumber
82
menyimpan satu byte?9
, misalnya, akan menampilkan karakter tab.Python 2 , 144 byte
Cobalah online!
Mencetak
True
untuk kiri,False
untuk kanan.sumber
Retina ,
150117 byteCobalah online!
sumber
Excel VBA, 118 Bytes
Fungsi jendela langsung VBE anonim yang mengambil input dari sel
[A1]
dan keluaran0
jika negara tersebut menggunakan tangan kananmenggunakan string ovs
sumber
Japt,
12610097 byteMenggunakan string lookup
ovs benar-benarmanusiawi . Mengambil input dalam huruf kecil dan outputfalse
untuk RHD atautrue
lainnya.Cobalah
Segala sesuatu di antara backticks adalah string lookup yang lebih kecil dan terkompresi dan
ø
memeriksa apakah itu berisi inputU
,.sumber
Pyth ,
60575550474644 byteJalankan online
Mengambil input sebagai string kutipan huruf besar (
'AI'
). Kembali3
untuk kiri dan non-3
untuk kanan.Bagaimana itu bekerja
Menghasilkan string ajaib
sumber
sed,
148 + 1145 + 1143 + 1142 + 1 byteSatu byte tambahan untuk
-r
flag (POSIX extended regexes).Menghasilkan string kosong untuk lalu lintas kidal, kode negara asli untuk lalu lintas kanan.
Contoh:
Dijelaskan riwayat edit:
sed,
158 + 1155 + 1153 + 1152 + 1 byte, jawaban tidak kosongVariasi sedikit dari yang sebelumnya. Pengembalian
L
untuk lalu lintas kidal.sumber
J[^O]
bukanJ[EMP]
?[^L]B|[^EMN]C|GD|[I-K]E|[AGPSUV]G|[AKV]I|FJ|[^DMS]K|TL|JM|[KP]N|JP|SR|[BGLW]S|[BT]T|AU|TV|CX|[CGK]Y|M[OS-WYZ]|N[AFP-Z]|[BI][DMNW]|[ST][HOZ]|Z.
J[^O]
sebenarnya pernah ada dalam daftar regex saya yang lebih kecil, saya bertanya-tanya bagaimana saya melewatkannya. Terima kasih telah menunjukkan ini! Adapun pengelompokan dengan huruf kedua: selain pengelompokan oleh K Anda hanya dapat menggunakan|[AGPSUV]G
atau|[BGLW]S
tetapi tidak akan mengubah skor total sama sekali.APL (Dyalog) , 108 byte
Cobalah online!
Menggunakan string lookup oleh ovs.
Lalu lintas kidal =
1
.Lalu lintas tangan kanan =
0
.sumber
Javascript (ES6),
118116 byteDisimpan 2 byte berkat @Craig Ayre
Kembali
null
untuk lalu lintas tangan kananUji Kasus
Tampilkan cuplikan kode
sumber
String.prototype.match()
dan memiliki lalu lintas tangan kanan dilambangkan olehnull
? Akan menghemat 2 byteVim,
117109108 penekanan tombolCobalah online! (ganti
SE
di header dengan kode negara)␛
adalah kunci pelarian. Program ini mencetak teks berikut untuk lalu lintas tangan kanan:Penjelasan
sumber
MY-BASIC , 162 byte
Fungsi anonim yang mengambil input sebagai string yang tidak terbungkus (yaitu, tanpa tanda kurung) dan output ke konsol
Pengembalian
0
untuk1
lalu lintas kanan dan kiri, coba online!sumber
Yabasic , 127 byte
Fungsi anonim yang mengambil input sebagai string yang tidak terbungkus (tidak
"..."
) dan menghasilkan0
jika Negara tidak kidal dan1
jika negara kidal.Cobalah online!
sumber
C (gcc) ,
115107 byteCobalah online!
Kembali
0
jika tangan kiri. -4 Terima kasih kepada @JonathanFrechsumber
short*
sebagai parameter?K, 105 byte
Untuk informasi tentang bahasa K / Q lihat code.kx.com
Gunakan: Country-code (string 2-char, contoh "XY") setelahnya
Menghasilkan
1b
(Lalu lintas kidal) atau0b
(bukan lalu lintas kidal)Penjelasan:
5h$"XX"
menghasilkan kode ascii untuk setiap karakter dari string 2-char (kode negara), Contoh5h$"TB"
menghasilkan 84 66-65+integerList
kurangi 65 ke setiap integer dalam daftar. Contoh-65+5h$"TB"
menghasilkan 19 126/:integerList
menghitung bilangan bulat setara dengan daftar itu sebagai digit dalam basis 26. Contoh26/:-65+5h$"TB"
menghasilkan 495 (kode negara sebagai integer)in[;listOfCountryCodesAsIntegers]@x
mengembalikan nilai boolean (1b = benar, 0b = salah). Benar jika x ada dalam daftar+\-48+5h$"62<729151368=1>a1A23<6<C181A83?45;488F411112115:235Q43r141738353135247F42Tl<:"
menghitung daftar bilangan bulat untuk setiap kode negara dengan lalu lintas kidal"62<729151368=1>a1A23<6<C181A83?45;488F411112115:235Q43r141738353135247F42Tl<:"
adalah 'string jarak' (jarak antara setiap pasangan kode negara integer dalam urutan menaik, dikodifikasikan sebagai karakter). Jarak n dikodifikasikan sebagai ascii char 48 + n-48+5h$".."
menghitung nilai ascii dari setiap karakter dalam string ".." dan memulihkan jarak asli sebagai kode ascii - 48. Hasilnya adalah daftar jarak+\integerList
menghitung penjumlahan sebagian item dari daftar -> kode integer-negara-absolut dari jarak antar kode.CATATAN.-
0b
untuk kode negara non-kidal, termasuk kode negara tidak validin[26/:-65+5h$"XX";+\-48+5h$"..."]
sumber