Hướng giao thông


25

Quy tắc

Đưa ra mã quốc gia ISO3166-1-Alpha-2, nhiệm vụ của bạn là quyết định hướng lưu lượng truy cập cho quốc gia đó:

  • Đầu vào sẽ là mã quốc gia hợp lệ (hợp lệ vì đây là một yếu tố của hai danh sách được cung cấp)
  • Đầu vào có thể là một danh sách gồm hai ký tự thay vì một chuỗi nếu nó giúp
  • Bạn có thể chọn để nhập bằng chữ thường
  • Bạn sẽ chọn một giá trị, nói đúng (lựa chọn của bạn) và sẽ xuất giá trị đó nếu lưu lượng truy cập ở quốc gia đó là thuận tay phải và mọi thứ khác trong trường hợp khác
  • Bạn chỉ phải xử lý mã quốc gia có trong một trong những danh sách sau:

Đây là tất cả các quốc gia nơi giao thông thuận tay trái:

['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']

Và đây là tất cả các quốc gia nơi giao thông thuận tay phải:

['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']

Để hoàn thiện, đây là tệp CSV chứa tất cả các giá trị cùng với tên quốc gia.

Tủ thử

Giả sử bạn đã chọn đầu ra Lcho lưu lượng truy cập thuận tay trái, đây là một số trường hợp kiểm tra hợp lệ:

'PY' -> 'python'
'PN' -> 'L'
'CN' -> 33
'GY' -> 'L'

Lưu ý: Có một cơ hội nhỏ là tôi đã bỏ lỡ một quốc gia hoặc có phân loại sai và tôi sẽ không thay đổi thông số kỹ thuật vì điều đó có thể làm mất hiệu lực câu trả lời. Nếu tôi phạm lỗi, tôi thành thật xin lỗi, xin đừng phạm tội!


1
Có thể xuất ra không có gì nếu mã quốc gia không khớp?
stevefestl

3
@SteveFest: Tôi muốn nói rằng nó được tính là bất cứ điều gì khác , vâng.
ბიმო

Tôi có thể xuất "trái" cho trường hợp bên trái và bất cứ điều gì khác trong trường hợp bên phải không?
l4m2

7
Tôi đến đây với hy vọng tìm thấy một giải pháp Mathicala 10 byte được tích hợp bằng cách nào đó. Tôi vô cùng thất vọng.
Silvio Mayolo

3
@SilvioMayolo CountryDatacó thể cung cấp số lượng đường và đường sắt được trải nhựa, v.v. trong một quốc gia nhưng không phải là hướng giao thông của nó :(
HyperNeutrino

Câu trả lời:


13

Python 2 , 145 136 112 109 byte

'TTHSZWMSGSONPKNZMWVIDFKELSCYJPNFJMTVCXBNRBWSHKYAUGGYBTLCCKIMVGBSBBMZAINAGDMOBDIEJEMYMUNUPGSRLKTKTOTCTZ'.find

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

Đầu ra -1cho giao thông thuận tay phải. Chuỗi được tự động tạo với tập lệnh Retina này . Cảm ơn hoàn toàn về chuỗi tìm kiếm ngắn hơn 9 byte. Tôi đã có thể nhận được thêm 24 byte thông qua đề xuất của admBorkBork .
Có chuỗi tra cứu ngắn hơn 3 byte bằng cách sử dụng tập lệnh python.


4
Vì những thứ như OTkhông tồn tại, bạn có thể thoát khỏi một số không gian như TO TCđi đến TOTCkhông?
admBorkBork

1
@AdmBorkBork cảm ơn rất nhiều, tôi đã có tất cả các khoảng trống.
trứng

Bạn có thể giải thích chuỗi nào không?
Gigaflop

12

Thạch , 61 byte

Rất cám ơn đến @ Mr.Xcoder vì đã giúp tôi đặt này lại với nhau
đã lưu 1 byte nhờ @JonathanAllan

Trả về 0cho người thuận tay phải hoặc 1cho người thuận tay trái.

“ŒỴ¬Ʋ>r¤dị|®ædHẇ⁸ɗH^CŒ³ẇPḷgȤƲȥƓƑ®Ƭṅḅ4ṛḟṄ’ḃ⁴+\
Oḅ⁹×6%⁽£€%566e¢

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

Làm sao?

Chúng tôi chuyển đổi từng mã quốc gia thành số nguyên N bằng cách phân tích cú pháp dưới dạng cơ sở 256 và áp dụng hàm băm sau đây, không va chạm cho lưu lượng thuận tay trái so với lưu lượng truy cập thuận tay phải:

((N * 6) MOD 1513) MOD 566

Điều này dẫn đến danh sách các giá trị sau đây cho lưu lượng truy cập thuận tay trái:

[   8,  14,  27,  37,  52,  60,  62,  68,  71,  84,  85,  88, 103, 105, 114, 119, 135,
  166, 167, 180, 187, 190, 195, 196, 202, 207, 208, 211, 214, 225, 226, 229, 232, 255,
  256, 262, 285, 301, 302, 303, 304, 309, 322, 325, 327, 337, 357, 369, 370, 381, 393,
  401, 408, 413, 420, 430, 453, 467, 473, 478, 492, 503, 509, 513, 516, 527, 528, 541,
  546, 547, 556, 562 ] (72 entries)

Chênh lệch trung bình giữa hai mục liên tiếp gần bằng 8. Chúng tôi mã hóa danh sách bằng các bước tăng trong phạm vi [1 ... 16]. Điều đó có nghĩa là bất cứ khi nào mức tăng lớn hơn 16, chúng ta cần chèn một giá trị trung gian vào một vị trí không sử dụng (chúng ta phải đảm bảo rằng nó không bị ảnh hưởng bởi lưu lượng truy cập thuận tay phải). Nhưng hàm băm được chọn theo cách mà chúng ta chỉ phải làm điều đó cho một vài vị trí. Điều này mang lại:

[  8,  6, 13, 10, 15,  8,  2,  6,  3, 13,  1,  3, 15,  2,  9,  5, 16, 15, 16,  1, 13,
   7,  3,  5,  1,  6,  5,  1,  3,  3, 11,  1,  3,  3, 16,  7,  1,  6, 16,  7, 16,  1,
   1,  1,  5, 13,  3,  2, 10, 16,  4, 12,  1, 11, 12,  8,  7,  5,  7, 10, 16,  7, 14,
   6,  5, 14, 11,  6,  4,  3, 11,  1, 13,  5,  1,  9,  6 ] (77 entries)

Chúng tôi chuyển đổi danh sách này từ cơ sở bijective-16 sang số nguyên sau:

274705197430389746738026977757328941544772847257562272094076195694133371689429679543810871702

mà trở thành “ŒỴ¬Ʋ>r¤dị|®ædHẇ⁸ɗH^CŒ³ẇPḷgȤƲȥƓƑ®Ƭṅḅ4ṛḟṄ’mã hóa cơ sở 250 của Jelly.

Liên kết đầu tiên xây dựng lại danh sách ban đầu từ số nguyên này và liên kết thứ hai kiểm tra xem nó có chứa hàm băm của đầu vào hay không.

“ŒỴ¬Ʋ>r¤dị|®ædHẇ⁸ɗH^CŒ³ẇPḷgȤƲȥƓƑ®Ƭṅḅ4ṛḟṄ’ḃ⁴+\      - 1st link: takes no input
“ŒỴ¬Ʋ>r¤dị|®ædHẇ⁸ɗH^CŒ³ẇPḷgȤƲȥƓƑ®Ƭṅḅ4ṛḟṄ’          - our big integer
                                         ḃ⁴        - convert it to bijective base-16
                                           +\      - apply delta-decoding

Oḅ⁹×6%⁽£€%566e¢                  - 2nd link: takes the country code  -> e.g. 'GB'
O                                - get ASCII codes                   -> [71, 66]
 ḅ⁹                              - convert from base-256 to integer  -> 18242
   ×6                            - multiply by 6                     -> 109452
     %⁽£€                        - modulo 1513                       -> 516
         %566                    - modulo 566                        -> 516
             e                   - look for it in the decoded list,
              ¢                  - using the first link as a nilad   -> 1

Lưu một byte bằng cách chuyển đổi từ một số nguyên sang cơ sở phỏng đoán 16: “ŒỴ¬Ʋ>r¤dị|®ædHẇ⁸ɗH^CŒ³ẇPḷgȤƲȥƓƑ®Ƭṅḅ4ṛḟṄ’ḃ⁴(do đó tránh tăng) ... cũng (không phải là lưu byte, nhưng) ¢gọi liên kết cuối cùng là một nilad.
Jonathan Allan

@Jonathan ALLan Đẹp! Cảm ơn bạn.
Arnauld

11

PowerShell , 161 148 byte

"$args"-match'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.'

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

Phù hợp với mô hình regex Naïve . Đầu ra Truecho người thuận tay trái và Falsetay phải.

Đã lưu 13 byte nhờ trình đánh bóng regex.


2
Bạn có thể nối các từ thay thế cho các chữ cái đầu tiên C, F, H và W thành [CFHW][CJKSXY](-5), I và J thành [IJ][DEMNP](-3), rút ​​ngắn N thành N[AFP-Z](-1) và Z thành Z.(-4), với tổng số -13 byte. Regex mới =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.
Mercator

@mercator Cảm ơn bạn đã chơi golf regex!
admBorkBork

9

Haskell , 137 byte

-5 byte nhờ vào các lò nướng.

import Data.List
(`isInfixOf`"MSOBTVGBSBBMZAINAGDMOAUGGYBDBWSHKYBNRJPNFJMVCKIMTLCCXLSCYFKEVIDIEJELSGSOLKNZMWMYMUPKNPGSRNUTKTOTCTZSZWTTH")

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

Tạo chuỗi gốc bằng tay.


nhận được chuỗi tra cứu ngắn hơn 3 byte một lần nữa:TTHSZWMSGSONPKNZMWVIDFKELSCYJPNFJMTVCXBNRBWSHKYAUGGYBTLCCKIMVGBSBBMZAINAGDMOBDIEJEMYMUNUPGSRLKTKTOTCTZ
ovs

Một cách khác -3: SZAINAGGDMOAUGBBSCCKIMWSHKYLSBMVGSGYBDBTHBWBNRMZMTLCXSRTVCYPNFKNPKEFJMYVIDIEJPGJEMUNZWMSONULKTKTOTTCTZ- Hãy thử trực tuyến!
Ông Xcoder


6

05AB1E , 76 byte

.•B6L>õKвΩ~#ëΓnĀÿι–öß/çĸ’Û´äηÅÚ‚zĨe÷ö#YʒƒʒjªêKΩoúö‰Öe¡₄Æ∞¤iY¥•#vySANèì})åZ

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


.•B6L>õKвΩ~#ëΓnĀÿι–öß/çĸ’Û´äηÅÚ‚zĨe÷ö#YʒƒʒjªêKΩoúö‰Öe¡₄Æ∞¤iY¥•

Xuất ra chuỗi sau:

GIU BDMNSTW CKXY M  JK BDGSY K DEMN EMP EINY CKS OSTUVWYZA FPRUZ  GKN   BCGHORZ CHKLOTVZ G CGI S   AMW

Nếu tôi chia nó trên các khoảng trắng và xen kẽ bảng chữ cái vào mỗi chuỗi, nó sẽ dẫn đến tất cả các trạng thái lái ở phía bên trái.


1 cho trái, 0 cho phải; Emigna là tốt hơn, nhưng điều này cảm thấy đủ khác nhau để đăng :).


6

Thạch , 69 byte

ẇ“h¦¤$>Xø3¬I_°Ḷd⁺+ç*p¢7"FU]#x⁹ĿAxḷŻbCȦ]$ḣẒẓST¬ȥ¬ṆṠ®æ÷©#ḄS#MĠỤ4ɱ5’ṃØA¤

Một liên kết đơn âm lấy một danh sách các ký tự và trả về 1nếu trái ( 0nếu phải).

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

Làm sao?

Sử dụng phương pháp như được thực hiện hoàn toàn con người / lò nướng .

ẇ“ ... ’ṃØA¤ - Link: list of characters
           ¤ - nilad followed by link(s) as a nilad:
 “ ... ’     -   base 250 number = 19752831477605543488091668410027486265612829758468833715947215534967455540194888181580207621675010690833131726534873382634884974263558670694315853304
         ØA  -   list of characters = "ABCDEFGHIJKLMNPQRSUVWXZ"
        ṃ    -   base decompress = "MSOBTVGBSBBNZAINAGDMOAUGGYBDBWSHKYBNRJPNFJMVCKIMTLCCXLSCYFKEVIDIEJELSGSOLKOZMWMYMUPKNPGSRNUTKTOTCUZTZWTTH"
ẇ            - is a sublist of?

Ngoài ra, những gì tôi đã làm độc lập đến ở 72 byte :

“¦w/ḳœBẒḂṡẏ,©ḷĿdẎq⁸4ṙ^|ṂỌʋ:vkɱF#ẊṠµd¤w,ḋhn|ȯ24ɦm|×ỵ’ṃ©ØAO0;I<0œṗ®ṭ€"ØAẎċ

Ngoài ra một liên kết đơn âm lấy một danh sách các ký tự và trở về 1nếu trái ( 0nếu phải).

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

Làm sao?

“ ... ’ṃ©ØAO0;I<0œṗ®ṭ€"ØAẎċ - Link: list of characters
“ ... ’                     - base 250 number = 20449742094039418439524274048234013619715377161457577389098927787850535557806494274193349238496252074719534810320317229
         ØA                 - list of characters = "ABCDEFGHIJKLMNPQRSUVWXZ"
       ṃ                    - base decompress = "GIUBDMNSTWCKXYMKJKBDGSYKDEMNEMPEINYCKSOSTUVXZZAFPRVZHGKNDCBCGHOSZCHKLOTWZGCGIASCBAMW"
        ©                   - copy to register
           O                - cast to ordinals = [71,73,85,66,68,77,78,83,84,87,67,75,88,89,77,75,74,75,66,68,71,83,89,75,68,69,77,78,69,77,80,69,73,78,89,67,75,83,79,83,84,85,86,88,90,90,65,70,80,82,86,90,72,71,75,78,68,67,66,67,71,72,79,83,90,67,72,75,76,79,84,87,90,71,67,71,73,65,83,67,66,65,77,87]
            0               - literal zero
             ;              - concatenate = [0,71,73,85,66,68,77,78,83,84,87,67,75,88,89,77,75,74,75,66,68,71,83,89,75,68,69,77,78,69,77,80,69,73,78,89,67,75,83,79,83,84,85,86,88,90,90,65,70,80,82,86,90,72,71,75,78,68,67,66,67,71,72,79,83,90,67,72,75,76,79,84,87,90,71,67,71,73,65,83,67,66,65,77,87]
              I             - incremental differences = [71,2,12,-19,2,9,1,5,1,3,-20,8,13,1,-12,-2,-1,1,-9,2,3,12,6,-14,-7,1,8,1,-9,8,3,-11,4,5,11,-22,8,8,-4,4,1,1,1,2,2,0,-25,5,10,2,4,4,-18,-1,4,3,-10,-1,-1,1,4,1,7,4,7,-23,5,3,1,3,5,3,3,-19,-4,4,2,-8,18,-16,-1,-1,12,10]
                0           - literal zero
               <            - less than (vectorises) = [0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1,1,0,1,0,0,0,0,1,1,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,1,0,1,1,1,0,0]
                   ®        - recall from register = "GIUBDMNSTWCKXYMKJKBDGSYKDEMNEMPEINYCKSOSTUVXZZAFPRVZHGKNDCBCGHOSZCHKLOTWZGCGIASCBAMW"
                 œṗ         - partition at truthy indexes = ["GIU","BDMNSTW","CKXY","M","K","JK","BDGSY","K","DEMN","EMP","EINY","CKS","OSTUVXZZ","AFPRVZ","H","GKN","D","C","BCGHOSZ","CHKLOTWZ","G","CGI","AS","C","B","AMW"]
                       ØA   - list of characters = "ABCDEFGHIJKLMNPQRSUVWXZ"
                      "     - zip with:
                    ṭ€      -   tack for €ach = [["AG","AI","AU"],["BB","BD","BM","BN","BS","BT","BW"],["CC","CK","CX","CY"],["DM"],["EK"],["FJ","FK"],["GB","GD","GG","GS","GY"],["HK"],["ID","IE","IM","IN"],["JE","JM","JP"],["KE","KI","KN","KY"],["LC","LK","LS"],["MO","MS","MT","MU","MV","MX","MZ","MZ"],["NA","NF","NP","NR","NV","NZ"],["OH"],["PG","PK","PN"],["QD"],["RC"],["SB","SC","SG","SH","SO","SS","SZ"],["TC","TH","TK","TL","TO","TT","TW","TZ"],["UG"],["VC","VG","VI"],["WA","WS"],["XC"],["YB"],["ZA","ZM","ZW"]]
                         Ẏ  - tighten = ["AG","AI","AU","BB","BD","BM","BN","BS","BT","BW","CC","CK","CX","CY","DM","EK","FJ","FK","GB","GD","GG","GS","GY","HK","ID","IE","IM","IN","JE","JM","JP","KE","KI","KN","KY","LC","LK","LS","MO","MS","MT","MU","MV","MX","MZ","MZ","NA","NF","NP","NR","NV","NZ","OH","PG","PK","PN","QD","RC","SB","SC","SG","SH","SO","SS","SZ","TC","TH","TK","TL","TO","TT","TW","TZ","UG","VC","VG","VI","WA","WS","XC","YB","ZA","ZM","ZW"]
                            - ...this is the left list plus EK, OH, QC, RC, WA, XC, and YB
                            -    (which are not in the right list)
                          ċ - count

6

Befunge, 155 152 147 146 byte

~48*%10p~20pv
\"`"`"A"+61p>:2g:48*%10g-!20g61g-!#@*#,_\1+:"O"#@`#._
NzBSgCLVStBGiIJknAVGPSuStAKvfCFHPLttBDIJzBIPkMStJn{NsBLMWgBMtAMnMtBMzcKCGmMNSt

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

Đầu ra 80cho một quốc gia thuận tay phải và bất cứ điều gì khác cho thấy một quốc gia thuận tay trái.

Giải trình

Dòng dưới cùng của mã chứa một đại diện của tất cả các quốc gia thuận tay trái. Đây là danh sách các ký tự đầu tiên của mã quốc gia, được nhóm theo ký tự thứ hai của chúng. Sự kết thúc của mỗi nhóm được đánh dấu bằng cách hạ thấp ký tự cuối cùng trong nhóm.

Vì vậy, ví dụ nhóm đầu tiên Nz, đại diện NAZA. Nhóm thứ hai, BSg, đại diện BB, SBGB. Có một nhóm cho mỗi chữ cái trong bảng chữ cái, ngoại trừ chữ cái Q(không có mã quốc gia bên trái kết thúc Q). Nhóm trống đó được đại diện bởi ký tự {, vì điều đó rõ ràng sẽ không khớp với bất kỳ mã quốc gia hợp lệ nào.

Để xác định xem một mã quốc gia nhất định có khớp với một trong các mục này hay không, chúng tôi lặp qua danh sách kiểm tra xem có bất kỳ ký tự nào trong danh sách khớp với ký tự đầu tiên của đầu vào của chúng tôi không (mod 32 cho tài khoản) và cả nhóm tương ứng , khớp với ký tự thứ hai của đầu vào. Ký tự nhóm bắt đầu là Avà được tăng lên mỗi khi chúng ta bắt gặp một chữ cái viết thường trong danh sách.

Chúng tôi thoát khi tìm thấy kết quả khớp, xuất giá trị ký tự cuối cùng trên ngăn xếp (sẽ là ký tự đầu tiên của mã quốc gia - có thể là chữ thường). Nếu không, chúng tôi sẽ thoát khi chúng tôi lặp lại toàn bộ danh sách, trong trường hợp đó chúng tôi sẽ xuất số cuối cùng trên ngăn xếp, luôn là 80.


6

Windows Batch, 289 279 199 193 181 130 118 byte

@echo TTHSZWMSGSONPKNZMWVIDFKELSCYJPNFJMTVCXBNRBWSHKYAUGGYBTLCCKIMVGBSBBMZAINAGDMOBDIEJEMYMUNUPGSRLKTKTOTCTZ|find "%1"

Đầu ra chuỗi của ovs cho lưu lượng bên trái, không có kết quả nào khác.

Lưu ý: Tôi nhận thấy nếu đầu vào chứa bất kỳ mã quốc gia nào trong danh sách trên, nó vẫn sẽ xuất ra L. Tuy nhiên, điều này không vi phạm quy tắc thách thức vì OP chỉ đề cập đến mã quốc gia.


Giải trình:

@echo TTHSZ...OTCTZ            :: List all country code.(compressed by ovs)
                   |           :: Pipe the result to the find command.

                    find "%1"  :: Find the first argument in the country code list,
                               :: and output the ovs string if found.

                               :: By default, FIND returns the piped string when
                               :: a match is found.

5

C (gcc) , 181 169 165 byte

f(x){x=strstr("AIAUBSBDBBMBTBWVGBNKYCXCCKCYDMFKFJGDGGYHKINIDIEIMJMJPJEKELSMOMWMYMVMTMUMZNANRNPNZNUNFPKPGPNSHKNLCVCWSSCSGSOZAGSLKSRSZTHTLTKTOTTCTVUGTZVIZMZW",x)?:82;}

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


2
Bạn có thể sử dụng một chữ số thay vì 82để lưu một byte không? 9, ví dụ, sẽ xuất ra một ký tự tab.
Xù xì



5

VBA Excel, 118 byte

Hàm cửa sổ ngay lập tức VBE ẩn danh lấy đầu vào từ ô [A1]và đầu ra 0nếu quốc gia thuận tay phải

?InStr(1,"TTHSZWMSGSONPKNZMWVIDFKELSCYJPNFJMTVCXBNRBWSHKYAUGGYBTLCCKIMVGBSBBMZAINAGDMOBDIEJEMYMUNUPGSRLKTKTOTCTZ",[A1])

sử dụng chuỗi của ovs


4

Japt, 126 100 97 byte

Sử dụng chuỗi tra cứu ovs hoàn toàn của con người . Đưa đầu vào bằng chữ thường và đầu ra falsecho RHD hoặc truecách khác.

`tszwmsgspknzmwvidfkelscyjpnfjmtvcxbnrbw¢kyauggybtlc×Svgbsbbmzaagd¶b¹ejemymunupgsrlktktctz`øU

Thử nó

Tất cả mọi thứ giữa các backticks là chuỗi tra cứu được hạ thấp và nén và økiểm tra xem nó có chứa đầu vào không U.


2
Chuỗi của ovs bây giờ ngắn hơn nhiều :-)
Sản phẩm ETH

3

Pyth , 60 57 55 50 47 46 44 byte

00000000: 736d 406a 4322 579f 235e 804c c3eb 6f49  sm@jC"W.#^.L..oI
00000010: aee5 1f3d be3d 4e13 f326 1934 a181 a210  ...=.=N..&.4....
00000020: 7158 3f94 2232 2f43 5164 5336            qX?."2/CQdS6

Chạy trên đường

Lấy đầu vào là một chuỗi trích dẫn chữ hoa ( 'AI'). Trả về 3cho bên trái và không 3cho bên phải.

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

sm@jC"…"2/CQdS6
 m           S6   map for d in [1, …, 6]:
     "…"            string literal
    C               convert to integer from base 256
   j    2           digits in base 2
  @                 wrapping index at:
           Q          input string
          C           convert to integer from base 256
         /  d         integer division by d
s                 sum

Tạo chuỗi ma thuật

import binascii
import z3
n, k, c = 239, 6, 3
a = [z3.Bool('a{}'.format(i)) for i in range(n)]
def f(s0, s1):
    return z3.Sum([z3.If(a[(ord(s0) * 256 + ord(s1)) // j % n], 1, 0) for j in range(1, k + 1)]) == c
solver = z3.Solver()
solver.add(a[0])
for s0, s1 in ['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']:
    solver.add(f(s0, s1))
for s0, s1 in ['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']:
    solver.add(z3.Not(f(s0, s1)))
res = solver.check()
print(res)
if res == z3.sat:
    m = solver.model()
    print('n={} k={} c={} a={!r}'.format(n, k, c, binascii.unhexlify('{:0{}x}'.format(
        int(''.join('01'[z3.is_true(m[x])] for x in a), 2), n // 8 * 2))))

3

sed, 148 + 1 145 + 1 143 + 1 142 + 1 byte

Thêm một byte cho -rcờ (biểu thức mở rộng POSIX).

Xuất chuỗi trống cho lưu lượng truy cập thuận tay trái, mã quốc gia gốc cho lưu lượng truy cập thuận tay phải.

s/A[GIU]|B[BDMNSTW]|C[CXY]|DM|FJ|G[BDGSY]|I[DEMN]|J[^O]|K[EINY]|L[CS]|M[OS-WYZ]|N[AFP-Z]|P[GN]|S[BCGHORZ]|T[CHLOTVZ]|UG|V[CGI]|WS|Z.|[^DMS]K//

Thí dụ:

$ echo -e 'PY\nPN\nCN\nGY' | sed -re 's/A[GIU]|B[BDMNSTW]|C[CXY]|DM|FJ|G[BDGSY]|I[DEMN]|J[^O]|K[EINY]|L[CS]|M[OS-WYZ]|N[AFP-Z]|P[GN]|S[BCGHORZ]|T[CHLOTVZ]|UG|V[CGI]|WS|Z.|[^DMS]K//'
PY

CN

$

Giải thích lịch sử chỉnh sửa:

148 s/A[GIU]|B[BDMNSTW]|C[CKXY]|DM|F[JK]|G[BDGSY]|HK|I[DEMN]|J[EMP]|K[EINY]|L[CKS]|M[OSTUVWYZ]|N[AFPRUZ]|P[GKN]|S[BCGHORZ]|T[CHKLOTVZ]|UG|V[CGI]|WS|Z.//
    naïve regexp; the only optimization here is 'Z.'
145 s/A[GIU]|B[BDMNSTW]|C[CKXY]|DM|F[JK]|G[BDGSY]|HK|I[DEMN]|J[EMP]|K[EINY]|L[CKS]|M[OS-WYZ]|N[AFP-Z]|P[GKN]|S[BCGHORZ]|T[CHKLOTVZ]|UG|V[CGI]|WS|Z.//
    M[OSTUVWYZ] → M[OS-WYZ]
    N[AFPRUZ] → N[AFP-Z]
    the replacements can match inexistent coutries, which is totally fine
143 s/A[GIU]|B[BDMNSTW]|C[CXY]|DM|FJ|G[BDGSY]|I[DEMN]|J[EMP]|K[EINY]|L[CS]|M[OS-WYZ]|N[AFP-Z]|P[GN]|S[BCGHORZ]|T[CHLOTVZ]|UG|V[CGI]|WS|Z.|[^DMS]K//
    |[^DMS]K (which also matches impossible country codes) allows these changes:
    C[CKXY] → C[CXY]
    F[JK] → FJ
    |HK → ∅
    L[CKS] → L[CS]
    P[GKN] → P[GN]
    T[CHKLOTVZ] → T[CHLOTVZ]
142 s/A[GIU]|B[BDMNSTW]|C[CXY]|DM|FJ|G[BDGSY]|I[DEMN]|J[^O]|K[EINY]|L[CS]|M[OS-WYZ]|N[AFP-Z]|P[GN]|S[BCGHORZ]|T[CHLOTVZ]|UG|V[CGI]|WS|Z.|[^DMS]K//
    J[EMP] → J[^O] (thanks @Neil)

sed, 158 + 1 155 + 1 153 + 1 152 + 1 byte, câu trả lời không trống

Biến thể nhẹ của cái trước. Trả về Lcho giao thông thuận tay trái.

s/[GIU]|B[BDMNSTW]|C[CXY]|DM|FJ|G[BDGSY]|I[DEMN]|J[^O]|K[EINY]|L[CS]|M[OS-WYZ]|N[AFP-Z]|P[GN]|S[BCGHORZ]|T[CHLOTVZ]|UG|V[CGI]|WS|Z.|[^DMS]K/&L/;s/^..//

1
Bạn có thể sử dụng J[^O]thay vì J[EMP]?
Neil

FYI Tôi đã thử nhóm bằng chữ cái thứ hai nhưng điều tốt nhất tôi có thể làm là dài hơn 3 byte:[^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.
Neil

Huh, J[^O]thực sự là một lần trong danh sách các regex nhỏ hơn của tôi, tôi tự hỏi làm thế nào tôi bỏ lỡ nó. Cảm ơn đã chỉ ra điều này! Đối với việc phân nhóm theo chữ cái thứ hai: ngoài việc phân nhóm theo K, bạn chỉ có thể sử dụng |[AGPSUV]Ghoặc |[BGLW]Skhông thay đổi tổng số điểm.
Phim kinh dị


2

Javascript (ES6), 118 116 byte

Đã lưu 2 byte nhờ @Craig Ayre

s=>"SZAINAGGDMOAUGBBSCCKIMWSHKYLSBMVGSGYBDBTHBWBNRMZMTLCXSRTVCYPNFKNPKEFJMYVIDIEJPGJEMUNZWMSONULKTKTOTTCTZ".match(s)

Trả về nullcho giao thông thuận tay phải

Các trường hợp thử nghiệm


Bạn có thể sử dụng String.prototype.match()và có lưu lượng truy cập thuận tay phải biểu thị bởi null? Sẽ tiết kiệm được 2 byte
Craig Ayre

1

Vim, 117 109 108 tổ hợp phím

oSZAINAGGDMOAUGBBSCCKIMWSHKYLSBMVGSGYBDBTHBWBNRMZMTLCXSRTVCYPNFKNPKEFJMYVIDIEJPGJEMUNZWMSONULKTKTOTTCTZ␛kg*D

Hãy thử trực tuyến! (thay thế SEtrong tiêu đề bằng mã quốc gia)

là chìa khóa thoát. Chương trình in văn bản sau cho giao thông thuận tay phải:

SZAINAGGDMOAUGBBSCCKIMWSHKYLSBMVGSGYBDBTHBWBNRMZMTLCXSRTVCYPNFKNPKEFJMYVIDIEJPGJEMUNZWMSONULKTKTOTTCTZ

Giải trình

oSZAINA...OTTCTZ␛ Input the lookup-string on a new line
kg*D              Delete the everything after the last occurence of the country code
                   on the same line

Tôi đánh giá cao rằng bạn đang trả lời trong trình soạn thảo văn bản yêu thích của tôi, sử dụng thông minh để chọn một giá trị cho đúng !
ბიმო

1

CƠ BẢN CỦA TÔI , 162 byte

Hàm ẩn danh nhận đầu vào dưới dạng một chuỗi chưa được mở (nghĩa là không có dấu ngoặc đơn) và đầu ra cho bàn điều khiển

Input"",x$,
For y=0 To 100
z=z+(Mid("TTHSZWMSGSONPKNZMWVIDFKELSCYJPNFJMTVCXBNRBWSHKYAUGGYBTLCCKIMVGBSBBMZAINAGDMOBDIEJEMYMUNUPGSRLKTKTOTCTZ",y,2)=x$)
Next
Print z

Trả về 0cho người thuận tay phải và 1giao thông thuận tay trái, hãy thử trực tuyến!


1

Yabasic , 127 byte

Hàm ẩn danh nhận đầu vào dưới dạng chuỗi không được bao bọc (không "...") và đầu ra 0nếu Quốc gia thuận tay phải và 1nếu quốc gia thuận tay trái.

Input""A$
?InStr("TTHSZWMSGSONPKNZMWVIDFKELSCYJPNFJMTVCXBNRBWSHKYAUGGYBTLCCKIMVGBSBBMZAINAGDMOBDIEJEMYMUNUPGSRLKTKTOTCTZ",A$)>0

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


1

C (gcc) , 115 107 byte

f(short*x){x=!wcschr(L"䥁䝁啁卂䑂䉂䵂呂坂䝖乂奋塃䍃䭃奃䵄䭆䩆䑇䝇奇䭈义䑉䕉䵉䵊偊䕊䕋䥋卌位坍奍噍呍啍卍婍䅎剎偎婎啎䙎䭐䝐乐䡓之䍌䍖南䍓䝓䉓体䅚升䭌剓婓䡔䱔䭔佔呔䍔噔䝕䉇婔䥖䵚坚",*x);}

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

Trả về 0nếu thuận tay trái. -4 cảm ơn @JonathanFrech


Bạn có thể không xác định chức năng của bạn để lấy một short*tham số?
Jonathan Frech

1

K, 105 byte

Để biết thông tin về các ngôn ngữ K / Q, xem code.kx.com

Sử dụng: Mã quốc gia (chuỗi 2 ký tự, ví dụ "XY") sau

in[;+\-48+5h$"62<729151368=1>a1A23<6<C181A83?45;488F411112115:235Q43r141738353135247F42Tl<:"]@26/:-65+5h$

Tạo 1b(lưu lượng truy cập thuận tay trái) hoặc 0b(không lưu lượng truy cập thuận tay trái)

Giải trình:

  • 5h$"XX"tạo mã ascii cho mỗi char của chuỗi 2 char (mã quốc gia), Ví dụ 5h$"TB"tạo 84 66

  • -65+integerListtrừ 65 cho mỗi số nguyên trong danh sách. Ví dụ -65+5h$"TB"tạo 19 1

  • 26/:integerListtính số nguyên tương đương với danh sách đó dưới dạng các chữ số trong 26 cơ sở. Ví dụ 26/:-65+5h$"TB"tạo 495 (mã quốc gia dưới dạng số nguyên)

  • in[;listOfCountryCodesAsIntegers]@xtrả về giá trị boolean (1b = true, 0b = false). Đúng nếu x nằm trong danh sách

  • +\-48+5h$"62<729151368=1>a1A23<6<C181A83?45;488F411112115:235Q43r141738353135247F42Tl<:" tính toán danh sách số nguyên cho mỗi mã quốc gia với lưu lượng truy cập thuận tay trái

    • "62<729151368=1>a1A23<6<C181A83?45;488F411112115:235Q43r141738353135247F42Tl<:"là 'chuỗi khoảng cách' (khoảng cách giữa mỗi cặp mã số nguyên quốc gia theo thứ tự tăng dần, được mã hóa thành char). Khoảng cách n được mã hóa là ascii char 48 + n

    • -48+5h$".." tính giá trị ascii của mỗi char trong chuỗi ".." và khôi phục khoảng cách ban đầu dưới dạng mã ascii - 48. Kết quả là danh sách khoảng cách

    • +\integerList tính toán tổng các phần của các mục từ danh sách -> mã số nguyên quốc gia tuyệt đối từ khoảng cách giữa các mã.

GHI CHÚ

  • Trả về 0b cho bất kỳ mã quốc gia không thuận tay trái, bao gồm cả mã quốc gia không hợp lệ
  • Chúng ta có thể lưu một char định dạng lại mã, nhưng yêu cầu phải viết mã quốc gia "XX" bên trong mã (tôi không biết nó có hợp lệ không, nhưng tôi khá chắc chắn rằng nó không thanh lịch) in[26/:-65+5h$"XX";+\-48+5h$"..."]
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.