교통 방향


25

규칙

ISO3166-1-Alpha-2 국가 코드가 주어지면 해당 국가의 교통 방향을 결정해야합니다.

  • 입력은 유효한 국가 코드입니다 (제공된 두 목록의 요소 인 것처럼 유효 함)
  • 도움이된다면 입력은 문자열 대신 두 문자의 목록 일 수 있습니다
  • 소문자로 입력하도록 선택할 수 있습니다
  • 당신은 말할, 하나 개의 값을 선택합니다 바로 선택하고 해당 국가의 트래픽이 오른손이고 다른 경우에는 다른 값이 있으면 그 값을 출력합니다
  • 다음 목록 중 하나에 포함 된 국가 코드 만 처리하면됩니다.

트래픽이 왼손잡이 인 모든 국가는 다음과 같습니다.

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

그리고 트래픽이 오른 손잡이 국가는 다음과 같습니다.

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

완전성을 위해 여기 '국가 이름과 함께 모든 값을 포함하는 CSV 파일이야.

테스트 케이스

L왼손잡이 트래픽에 대해 출력 하기로 선택한 경우 다음과 같은 유효한 테스트 사례가 있습니다.

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

참고 : 국가를 놓쳤거나 분류가 잘못되었을 가능성이 적으며 답변을 무효화 할 수 있으므로 사양을 변경하지 않습니다. 내가 진심으로 사과하는 실수를 저지른 경우, 공격하지 마십시오!


1
국가 코드가 일치하지 않으면 아무 것도 출력하지 않아도됩니까?
stevefestl

3
@SteveFest : 다른 것으로 간주됩니다 .
ბიმო

왼쪽 케이스와 오른쪽 케이스에 "left"를 출력 할 수 있습니까?
l4m2

7
나는 어떻게 든 내장 된 10 바이트 Mathematica 솔루션을 찾을 것으로 기대했습니다. 나는 정말 실망했다.
Silvio Mayolo

3
@SilvioMayolo CountryData는 국가에서 포장 및 비포장 도로 및 철도 등의 양을 줄 수는 있지만 교통 방향은 아닙니다 :(
HyperNeutrino

답변:


13

파이썬 (2) , 145 (136) 112 109 바이트

'TTHSZWMSGSONPKNZMWVIDFKELSCYJPNFJMTVCXBNRBWSHKYAUGGYBTLCCKIMVGBSBBMZAINAGDMOBDIEJEMYMUNUPGSRLKTKTOTCTZ'.find

온라인으로 사용해보십시오!

-1오른 손잡이 트래픽을 출력 합니다. 문자열은 이 Retina 스크립트로 자동 생성됩니다 . 9 바이트 더 짧은 조회 문자열을위한 totallyhuman 덕분 입니다. AdmBorkBork 제안을 통해 24 바이트를 더 얻을 수있었습니다 .
파이썬 스크립트를 사용하여 조회 문자열을 3 바이트 더 짧게했습니다.


4
일을 좋아하기 때문에 OT존재하지 않는, 당신은 같은 일부 공간을 제거 할 수 TO TC간다 TOTC?
AdmBorkBork

1
@ AdmBorkBork 감사합니다, 나는 모든 공간을 확보했습니다.
ovs

줄을 전혀 설명 할 수 있습니까?
Gigaflop

12

젤리 , 61 바이트

많은 감사 @ Mr.Xcoder 이 짜고 저를 도와 주셔서
에 저장된 1 바이트 덕분에 @JonathanAllan

0오른 손잡이 또는 왼손잡이를 반환 합니다 1.

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

온라인으로 사용해보십시오!

방법?

각 국가 코드를 base-256으로 구문 분석 하여 정수 N 으로 변환 하고 다음 해시 함수를 적용합니다.이 함수는 왼손잡이 대 오른 손잡이 트래픽에 충돌이 없습니다.

((N * 6) MOD 1513) MOD 566

왼손잡이 트래픽에 대한 다음 값 목록이 나타납니다.

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

연속 된 두 항목 간의 평균 차이는 8에 가깝습니다. [1 ... 16] 범위의 증분으로 목록을 델타 인코딩합니다. 즉, 증분이 16보다 클 때마다 사용하지 않는 슬롯에 중간 값을 삽입해야합니다 (오른쪽 트래픽이 적중하지 않도록해야 함). 그러나 해시 함수는 몇 가지 위치에서만 수행해야하는 방식으로 선택되었습니다. 이것은 다음을 제공합니다.

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

이 목록을 bijective base-16에서 다음 정수로 변환합니다.

274705197430389746738026977757328941544772847257562272094076195694133371689429679543810871702

이것은 “ŒỴ¬Ʋ>r¤dị|®ædHẇ⁸ɗH^CŒ³ẇPḷgȤƲȥƓƑ®Ƭṅḅ4ṛḟṄ’Jelly의 base-250 인코딩이됩니다.

첫 번째 링크는이 정수에서 원래 목록을 다시 작성하고 두 번째 링크는 입력의 해시를 포함하는지 테스트합니다.

“ŒỴ¬Ʋ>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

정수에서 bijective base 16 으로 변환하여 바이트를 저장하십시오 . “ŒỴ¬Ʋ>r¤dị|®ædHẇ⁸ɗH^CŒ³ẇPḷgȤƲȥƓƑ®Ƭṅḅ4ṛḟṄ’ḃ⁴(따라서 증가를 피하십시오) ... 또한 바이트 저장이 아니라 ¢마지막 링크를 nilad로 호출합니다.
Jonathan Allan

@JonathanAllan 니스! 고맙습니다.
Arnauld

11

PowerShell을 , 161 148 바이트

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

온라인으로 사용해보십시오!

순진한 정규식 패턴 일치. True왼손잡이 용 및 오른손 잡 이용 출력 False.

메르카토르가 정규식을 골라서 13 바이트를 절약했습니다.


2
첫 문자 C, F, H 및 W의 대체 문자를 [CFHW][CJKSXY](-5)로, I 및 J를 [IJ][DEMNP](-3)으로, N을 N[AFP-Z](-1)로, Z를 Z.(-4) 로 대체 할 수 있습니다. -13 바이트 새로운 정규 표현식 =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 정규식 골프 주셔서 감사합니다!
AdmBorkBork

9

하스켈 , 137 바이트

ovs 덕분에 -5 바이트

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

온라인으로 사용해보십시오!

손으로 원래 문자열을 생성했습니다.


조회 문자열이 3 바이트 더 짧아 TTHSZWMSGSONPKNZMWVIDFKELSCYJPNFJMTVCXBNRBWSHKYAUGGYBTLCCKIMVGBSBBMZAINAGDMOBDIEJEMYMUNUPGSRLKTKTOTCTZ
졌습니다

또 다른 대안 -3 : SZAINAGGDMOAUGBBSCCKIMWSHKYLSBMVGSGYBDBTHBWBNRMZMTLCXSRTVCYPNFKNPKEFJMYVIDIEJPGJEMUNZWMSONULKTKTOTTCTZ온라인으로 사용해보십시오!
Mr. Xcoder


6

05AB1E , 76 바이트

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

온라인으로 사용해보십시오!


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

다음 문자열을 출력합니다.

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

공백으로 나누고 알파벳을 각 문자열에 인터리브하면 왼쪽에있는 모든 상태가됩니다.


왼쪽은 1, 오른쪽은 0; Emigna가 더 좋지만 게시 할 수있을만큼 다르게 느꼈습니다. :).


6

젤리 , 69 바이트

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

문자 목록을 가져와 1왼쪽 0이면 (오른쪽이면) 반환하는 모나드 링크 입니다.

온라인으로 사용해보십시오!

방법?

완전히 휴먼 / ovs 구현 된 방법을 사용합니다 .

ẇ“ ... ’ṃØ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?

또한, 내가 독립적으로 한 것은 72 바이트 였습니다 .

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

또한 문자 목록을 가져와 1왼쪽 0이면 (오른쪽이면) 반환하는 모나드 링크 .

온라인으로 사용해보십시오!

방법?

“ ... ’ṃ©Ø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

비 펀지, 155 152 147 146 바이트

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

온라인으로 사용해보십시오!

80오른 손잡이 국가 및 기타 모든 것에 대한 출력 은 왼손잡이 국가를 나타냅니다.

설명

코드의 맨 아래 줄에는 모든 왼손잡이 국가를 나타냅니다. 국가 코드의 첫 번째 문자 목록을 두 번째 문자로 그룹화 한 것입니다. 각 그룹의 끝은 그룹의 마지막 문자를 소문자로 표시합니다.

그래서 예를 들어 첫 번째 그룹은 Nz, 대표 NAZA. 두 번째 그룹은 BSg나타내고 BB, SB, 및 GB. 알파벳을 제외한 각 글자마다 하나의 그룹이 있습니다 Q(왼쪽 국가 코드는로 끝나지 않습니다 Q). 빈 그룹은 문자로 표시됩니다. {왜냐하면 유효한 국가 코드와 일치하지 않기 때문입니다.

주어진 국가 코드가 이러한 항목 중 하나와 일치하는지 확인하기 위해 목록의 문자 중 하나가 입력의 첫 번째 문자 (경우를 설명하기 위해 mod 32)와 일치하는지 여부와 해당 그룹이 일치하는지 확인하는 목록을 반복합니다. , 입력의 두 번째 문자와 일치합니다. 그룹 문자는A 하며 목록에서 소문자가 나타날 때마다 증가합니다.

우리는 일치하는 것을 찾으면 종료하고 스택의 마지막 문자 값을 출력합니다 (국가 코드의 첫 문자가 될 것입니다-아마도 소문자). 그렇지 않으면 우리는 전체 목록을 반복 할 때 종료됩니다.이 경우 스택의 마지막 숫자가 항상 80입니다.


6

윈도우 배치, 289 279 199 193 181 130 118 바이트

@echo TTHSZWMSGSONPKNZMWVIDFKELSCYJPNFJMTVCXBNRBWSHKYAUGGYBTLCCKIMVGBSBBMZAINAGDMOBDIEJEMYMUNUPGSRLKTKTOTCTZ|find "%1"

왼쪽 트래픽에 대한 ovs 문자열을 출력하고, 그렇지 않으면 아무것도 출력하지 않습니다.

참고 : 입력 위 목록에 국가 코드가 포함되어 있으면 여전히 L을 출력합니다. 그러나 OP가 국가 코드 만 처리하면되므로 도전 규칙을 위반하지 않습니다.


설명:

@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

Excel VBA, 118 바이트

국가가 오른손 인 경우 셀에서 입력을 [A1]받고 출력 하는 익명의 VBE 즉시 창 기능0

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

사용의 OVS '문자열


4

JAPT, 126 100 97 바이트

totallyhuman ' s ovs 'lookup string을 사용 합니다 . falseRHD 등을 위해 소문자로 입력하고 출력 합니다 true.

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

시도 해봐

백틱 사이의 모든 것은 소문자 및 압축 된 조회 문자열이며 ø입력이 포함되어 있는지 확인합니다 U.


2
ovs의 문자열은 지금 훨씬 짧습니다 :-)
ETHproductions

3

Pyth , 60 57 55 50 47 46 44 바이트

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

온라인으로 실행

입력을 대문자로 인용 된 문자열 ( 'AI') 로 가져옵니다 . 3왼쪽 및 3오른쪽이 아닌 값 을 반환 합니다 .

작동 원리

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

마법의 문자열을 생성

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 + 1145 + 1143 + 1 1142 + 1 바이트

-r플래그에 대한 추가 바이트 1 개 (POSIX 확장 정규식).

왼쪽 트래픽의 경우 빈 문자열을 출력하고 오른쪽 트래픽의 원래 국가 코드를 출력합니다.

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//

예:

$ 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

$

설명 된 편집 기록 :

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 바이트, 비어 있지 않은 응답

이전의 약간의 변형. L왼손잡이 트래픽을 반환 합니다.

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
J[^O]대신 사용할 수 있습니까 J[EMP]?
Neil

참고로 두 번째 문자로 그룹화를 시도했지만 내가 할 수있는 최선은 3 바이트 더 길었습니다.[^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

허, J[^O]실제로 한 번 작은 정규식 목록에 있었는데 어떻게 그리웠는지 궁금합니다. 이것을 지적 해 주셔서 감사합니다! 두 번째 문자로 그룹화하는 경우 : K로 그룹화하는 것 외에도 사용 |[AGPSUV]G하거나 |[BGLW]S총 점수를 전혀 변경하지는 않습니다.
스릴러


2

자바 스크립트 (ES6), 118 116 바이트

@Craig Ayre 덕분에 2 바이트 절약

s=>"SZAINAGGDMOAUGBBSCCKIMWSHKYLSBMVGSGYBDBTHBWBNRMZMTLCXSRTVCYPNFKNPKEFJMYVIDIEJPGJEMUNZWMSONULKTKTOTTCTZ".match(s)

보고 null오른 손잡이 트래픽에 대한

테스트 사례


String.prototype.match()오른쪽 트래픽 을 사용 하고 표시 할 수 null있습니까? 2 바이트를 절약 할 것
Craig Ayre

1

빔, 117 109 108 키

oSZAINAGGDMOAUGBBSCCKIMWSHKYLSBMVGSGYBDBTHBWBNRMZMTLCXSRTVCYPNFKNPKEFJMYVIDIEJPGJEMUNZWMSONULKTKTOTTCTZ␛kg*D

온라인으로 사용해보십시오! ( SE헤더에서 국가 코드로 교체 )

이스케이프 키입니다. 이 프로그램은 오른 손잡이 트래픽에 대해 다음 텍스트를 인쇄합니다.

SZAINAGGDMOAUGBBSCCKIMWSHKYLSBMVGSGYBDBTHBWBNRMZMTLCXSRTVCYPNFKNPKEFJMYVIDIEJPGJEMUNZWMSONULKTKTOTTCTZ

설명

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

내가 가장 좋아하는 텍스트 편집기에서 대답하고 있으며 올바른 값을 선택하는 영리한 사용에 감사드립니다 !
ბიმო

1

내 기본 , 162 바이트

랩핑되지 않은 문자열로 입력 (즉, 괄호없이)하여 콘솔로 출력하는 익명 함수

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

반환 0-오른 손잡이 및 1왼손잡이 트래픽, 온라인 그것을 시도!


1

Yabasic , 127 바이트

래핑되지 않은 문자열 (no "...") 로 입력을 받고 0Country가 오른손이고 1국가가 왼손잡이이면 출력 하는 익명 함수

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

온라인으로 사용해보십시오!


1

C (gcc) , 115107 바이트

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

온라인으로 사용해보십시오!

0왼손잡이 인 경우 반환 합니다. @JonathanFrech 덕분에 -4


short*매개 변수로 사용할 함수를 정의 할 수 없습니까?
Jonathan Frech

1

K, 105 바이트

K / Q 언어에 대한 자세한 내용은 code.kx.com을 참조하십시오.

사용 : 이후 국가 코드 (2 자 문자열, 예 : "XY")

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

1b(왼손잡이 트래픽)을 생성 하거나0b (하지 왼손잡이 트래픽)

설명:

  • 5h$"XX"2 자 문자열 (국가 코드)의 각 문자에 대해 ASCII 코드를 5h$"TB"생성합니다 . 예 는 84 66을 생성합니다.

  • -65+integerList목록의 각 정수에 65를 뺍니다. 예제 -65+5h$"TB"생성 19 1

  • 26/:integerList26-base에서 해당 목록에 해당하는 정수를 숫자로 계산합니다. 예제 26/:-65+5h$"TB"는 495 (국가 코드를 정수로)를 생성합니다.

  • in[;listOfCountryCodesAsIntegers]@x부울 값을 반환합니다 (1b = true, 0b = false). x가 목록에 있으면 참

  • +\-48+5h$"62<729151368=1>a1A23<6<C181A83?45;488F411112115:235Q43r141738353135247F42Tl<:" 왼손잡이 트래픽으로 각 국가 코드의 정수 목록을 계산합니다.

    • "62<729151368=1>a1A23<6<C181A83?45;488F411112115:235Q43r141738353135247F42Tl<:"'거리 문자열'(각 정수 국가 코드 쌍 사이의 오름차순으로 char로 코드화 된 거리)입니다. 거리 n은 ASCII 문자 48 + n으로 체계화됩니다.

    • -48+5h$".." 문자열 ".."에서 각 문자의 아스키 값을 계산하고 원래 거리를 아스키 코드-48로 복구합니다. 결과는 거리 목록입니다.

    • +\integerList 목록에서 항목의 부분 합을 계산합니다-> 코드 사이의 거리에서 절대 정수 국가 코드.

노트.-

  • 0b유효하지 않은 국가 코드를 포함하여 왼손잡이가 아닌 국가 코드에 대한 반환
  • 코드를 다시 포맷하는 문자를 저장할 수는 있지만 국가 코드 "XX"를 코드 안에 작성해야합니다 (유효한지 모르겠지만 우아하지는 않습니다) in[26/:-65+5h$"XX";+\-48+5h$"..."]
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.