Verkehrsrichtung


25

Regeln

Angesichts eines ISO3166-1-Alpha-2-Ländercodes müssen Sie die Verkehrsrichtung für dieses Land festlegen:

  • Die Eingabe ist ein gültiger Ländercode (gültig wie in einem Element der beiden angegebenen Listen).
  • Die Eingabe kann eine Liste mit zwei Zeichen anstelle einer Zeichenfolge sein, wenn dies hilfreich ist
  • Sie können festlegen, dass die Eingabe in Kleinbuchstaben erfolgen soll
  • Sie wählen einen Wert, sagen wir für richtig (Ihre Wahl), und geben diesen Wert aus, wenn der Verkehr in diesem Land rechtshändig ist und in dem anderen Fall alles andere
  • Sie müssen nur die Ländercodes bearbeiten, die in einer dieser Listen enthalten sind:

Dies sind alle Länder, in denen der Verkehr für Linkshänder bestimmt ist:

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

Und hier sind alle Länder, in denen der Verkehr rechtshändig ist:

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

Der Vollständigkeit halber hier eine CSV-Datei, die alle Werte zusammen mit den Ländernamen enthält.

Testfälle

Angenommen, Sie haben sich für die Ausgabe Lfür Linkshänder entschieden, dann sind hier einige gültige Testfälle:

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

Hinweis: Es besteht eine geringe Wahrscheinlichkeit, dass ich ein Land verpasst habe oder dass eine falsche Klassifizierung vorliegt, und ich werde die technischen Daten nicht ändern, da dies möglicherweise die Antworten ungültig macht. Wenn ich einen Fehler gemacht habe, entschuldige ich mich aufrichtig, bitte nicht beleidigen!


1
Ist es in Ordnung, nichts auszugeben, wenn der Ländercode nicht übereinstimmt?
Stevefestl

3
@SteveFest: Ich würde sagen, dass das alles andere ist , ja.
6.

darf ich "left" für left case und alles andere für right case ausgeben?
14 m²,

7
Ich bin hierher gekommen und habe erwartet, eine 10-Byte-Mathematica-Lösung zu finden, die irgendwie integriert ist. Ich bin sehr enttäuscht.
Silvio Mayolo

3
@SilvioMayolo CountryDatakann die Anzahl der asphaltierten und nicht asphaltierten Straßen und Eisenbahnen usw. in einem Land
angeben,

Antworten:


13

Python 2 , 145 136 112 109 Bytes

'TTHSZWMSGSONPKNZMWVIDFKELSCYJPNFJMTVCXBNRBWSHKYAUGGYBTLCCKIMVGBSBBMZAINAGDMOBDIEJEMYMUNUPGSRLKTKTOTCTZ'.find

Probieren Sie es online!

Ausgänge -1für Rechtsverkehr. Die Zeichenfolge wird mit diesem Retina-Skript automatisch generiert . Danke an totalhuman für den 9 Bytes kürzeren Lookup-String. Durch den Vorschlag von AdmBorkBork konnte ich 24 Bytes mehr sparen .
Die Suchzeichenfolge wurde mithilfe eines Python-Skripts um 3 Byte kürzer.


4
Da Dinge wie " OTnicht existieren", können Sie Leerzeichen wie " TO TCGeht zu" TOTCentfernen?
AdmBorkBork

1
@AdmBorkBork vielen Dank, ich habe alle Räume raus.
Ovs

Können Sie die Zeichenfolge überhaupt erklären?
Gigaflop

12

Jelly , 61 Bytes

Vielen Dank an @ Mr.Xcoder für die Zusammenstellung von
Saved 1 Byte dank @JonathanAllan

Rückgabe 0für Rechts- oder 1Linkshänder.

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

Probieren Sie es online!

Wie?

Wir konvertieren jeden Ländercode in eine Ganzzahl N, indem wir ihn als base-256 analysieren, und wenden die folgende Hash-Funktion an, die für Links- und Rechtsverkehr kollisionsfrei ist:

((N * 6) MOD 1513) MOD 566

Daraus ergibt sich folgende Werteliste für den Linksverkehr:

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

Die durchschnittliche Differenz zwischen zwei aufeinanderfolgenden Einträgen liegt nahe bei 8. Wir deltacodieren die Liste mit Inkrementen im Bereich [1 ... 16]. Wenn ein Inkrement größer als 16 ist, müssen wir einen Zwischenwert in einen nicht verwendeten Steckplatz einfügen (wir müssen sicherstellen, dass dieser nicht vom rechtshändigen Verkehr getroffen wird). Die Hash-Funktion wurde aber so gewählt, dass wir das nur für wenige Positionen tun müssen. Das gibt:

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

Wir konvertieren diese Liste von der bijektiven Basis 16 in die folgende Ganzzahl:

274705197430389746738026977757328941544772847257562272094076195694133371689429679543810871702

das wird “ŒỴ¬Ʋ>r¤dị|®ædHẇ⁸ɗH^CŒ³ẇPḷgȤƲȥƓƑ®Ƭṅḅ4ṛḟṄ’in Jellys Base-250-Codierung.

Die erste Verknüpfung erstellt die ursprüngliche Liste aus dieser Ganzzahl neu und die zweite prüft, ob sie den Hash der Eingabe enthält.

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

Speichern Sie ein Byte, indem Sie von einer Ganzzahl in eine bijektive Basis 16 konvertieren : “ŒỴ¬Ʋ>r¤dị|®ædHẇ⁸ɗH^CŒ³ẇPḷgȤƲȥƓƑ®Ƭṅḅ4ṛḟṄ’ḃ⁴(um das Inkrement zu vermeiden) ... ¢ruft auch (nicht ein Byte speichern, sondern) die letzte Verknüpfung als Null auf.
Jonathan Allan

@ JonathanAllan Schön! Vielen Dank.
Arnauld

11

PowerShell , 161 bis 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.'

Probieren Sie es online!

Naive Regex-Mustererkennung. Ausgänge Truefür Linkshänder und Falsefür Rechtshänder.

13 Bytes gespart dank Mercator Golfing der Regex.


2
Sie können die Alternativen für die Anfangsbuchstaben C, F, H und W zu [CFHW][CJKSXY](-5), I und J zu [IJ][DEMNP](-3), N zu N[AFP-Z](-1) und Z zu Z.(-4) zusammenfassen -13 Bytes. Neuer Regex =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 Danke für das Regex-Golfen!
AdmBorkBork

9

Haskell , 137 Bytes

-5 Bytes dank ovs.

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

Probieren Sie es online!

Erzeugte die ursprüngliche Zeichenfolge von Hand.


Die Suchzeichenfolge wurde wieder um 3 Bytes kürzer:TTHSZWMSGSONPKNZMWVIDFKELSCYJPNFJMTVCXBNRBWSHKYAUGGYBTLCCKIMVGBSBBMZAINAGDMOBDIEJEMYMUNUPGSRLKTKTOTCTZ
ovs

Eine weitere Alternative -3: SZAINAGGDMOAUGBBSCCKIMWSHKYLSBMVGSGYBDBTHBWBNRMZMTLCXSRTVCYPNFKNPKEFJMYVIDIEJPGJEMUNZWMSONULKTKTOTTCTZ- Probieren Sie es online!
Mr. Xcoder

8

05AB1E , 82 68 Bytes

Ausgänge 1 für Linksverkehr und 0 für Rechtsverkehr.

.•6uγ)₅₄вwÔívtÎĆ–≠5βI·{!ÅÇΔ›íÕ(1.€ò“Ѧ_£äß₂Ë‹ûÚм2±rrÇQ=ÅÔζ)B†š¢¡ε•så

Probieren Sie es online! oder als Testsuite

Verwendet die Zeichenfolge, die von totalhuman generiert und von ovs verbessert wurde


6

05AB1E , 76 Bytes

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

Probieren Sie es online!


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

Gibt den folgenden String aus:

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

Wenn ich das auf Leerzeichen aufteile und das Alphabet in die einzelnen Zeichenfolgen verschachtele, werden alle Status angezeigt, die auf der linken Seite angezeigt werden.


1 für links, 0 für rechts; Emigna's ist besser, aber das fühlte sich anders an, als es zu posten :).


6

Jelly , 69 Bytes

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

Ein monadischer Link, der eine Liste von Zeichen aufnimmt und zurückgibt, 1wenn links ( 0wenn rechts).

Probieren Sie es online!

Wie?

Verwendet die Methode als vollständig human / ovs implementiert .

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

Was ich unabhängig gemacht habe, kam mit 72 Bytes :

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

Auch ein monadischer Link, der eine Liste von Zeichen aufnimmt und zurückgibt, 1wenn er links ist ( 0wenn er rechts ist).

Probieren Sie es online!

Wie?

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

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

Probieren Sie es online!

Ausgaben 80für ein Land für Rechtshänder und alles andere deutet auf ein Land für Linkshänder hin.

Erläuterung

Die unterste Zeile des Codes enthält eine Darstellung aller Länder für Linkshänder. Dies ist eine Liste der ersten Zeichen der Ländercodes, gruppiert nach ihrem zweiten Zeichen. Das Ende jeder Gruppe wird durch Absenken des letzten Zeichens in der Gruppe markiert.

So Nzrepräsentiert zum Beispiel die erste Gruppe, NAund ZA. Die zweite Gruppe BSg,, BBsteht für SB, und GB. Es gibt eine Gruppe für jeden Buchstaben im Alphabet, mit Ausnahme des Buchstabens Q(keine Ländercodes für die linke Hand enden mit Q). Diese leere Gruppe wird durch das Zeichen dargestellt {, da dies offensichtlich keinem gültigen Ländercode entspricht.

Um festzustellen, ob ein gegebener Ländercode mit einem dieser Einträge übereinstimmt, durchlaufen wir die Liste und prüfen, ob eines der Zeichen in der Liste mit dem ersten Zeichen unserer Eingabe übereinstimmt (Mod 32, um den Fall zu berücksichtigen), sowie mit der entsprechenden Gruppe , stimmt mit dem zweiten Zeichen der Eingabe überein. Das Gruppenzeichen beginnt mit Aund wird jedes Mal erhöht, wenn ein Kleinbuchstabe in der Liste angezeigt wird.

Wir beenden das Programm, wenn wir eine Übereinstimmung finden, und geben den letzten Zeichenwert auf dem Stapel aus (der das erste Zeichen des Ländercodes ist - möglicherweise in Kleinbuchstaben). Andernfalls beenden wir das Programm, wenn wir die gesamte Liste durchlaufen haben. In diesem Fall geben wir die letzte Zahl auf dem Stapel aus, die immer 80 ist.


6

Windows Batch, 289 279 199 193 181 130 118 Bytes

@echo TTHSZWMSGSONPKNZMWVIDFKELSCYJPNFJMTVCXBNRBWSHKYAUGGYBTLCCKIMVGBSBBMZAINAGDMOBDIEJEMYMUNUPGSRLKTKTOTCTZ|find "%1"

Gibt den String des Ovs für Linksverkehr aus, sonst nichts.

Hinweis: Wenn die Eingabe einen Ländercode in der obigen Liste enthält , wird dennoch L ausgegeben. Dies verstößt jedoch nicht gegen die Abfrageregel, da in OP nur die genannten Ländercodes behandelt werden müssen.


Erläuterung:

@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 Bytes

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

Probieren Sie es online!


2
Könnten Sie eine einzelne Ziffer verwenden, anstatt 82ein Byte zu speichern? 9Beispielsweise würde ein Tabulatorzeichen ausgegeben.
Shaggy

5

Python 2 , 144 Bytes

lambda l:l[1]in'GIU,BDMNSTW,CKXY,M,,JK,BDGSY,K,DEMN,EMP,EINY,CKS,OSTUVWYZ,AFPRUZ,,GKN,,,BCGHORZ,CHKLOTVZ,G,CGI,S,,,AMW'.split(',')[ord(l[0])-65]

Probieren Sie es online!

Druckt Truefür links, Falsefür rechts.



5

Excel VBA, 118 Bytes

Anonyme VBE-Direktfensterfunktion, die Eingaben von Zellen [A1]und Ausgaben entgegennimmt, 0wenn das Land rechtshändig ist

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

verwendet die Zeichenfolge von ovs


4

Japt, 126 100 97 Bytes

Verwendet die Suchzeichenfolge von totalhuman's ovs . Nimmt Eingaben in Kleinbuchstaben und Ausgaben falsefür RHD oder auf trueandere Weise.

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

Versuch es

Alles zwischen den Backticks ist die Suchzeichenfolge, die in Kleinbuchstaben und komprimiert angegeben ist, und øprüft, ob sie die Eingabe enthält U.


2
Die Saite von ovs ist jetzt viel kürzer :-)
ETHproductions

3

Pyth , 60 57 55 50 47 46 44 Bytes

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

Online ausführen

Nimmt die Eingabe als Zeichenfolge in Großbuchstaben ( 'AI'). Gibt 3für links und nicht 3für rechts zurück.

Wie es funktioniert

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

Den magischen String generieren

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 Bytes

Ein zusätzliches Byte für -rFlag (POSIX-erweiterte reguläre Ausdrücke).

Gibt eine leere Zeichenfolge für Linksverkehr und die ursprüngliche Landesvorwahl für Rechtsverkehr aus.

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

Beispiel:

$ 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

$

Erklärter Bearbeitungsverlauf:

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, nicht leere Antwort

Leichte Abweichung von der vorherigen. Rückgabe Lfür Linkshänder.

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
Können Sie J[^O]anstelle von verwenden J[EMP]?
Neil

Zu Ihrer Information Ich habe versucht, nach zweitem Buchstaben zu gruppieren, aber das Beste, was ich tun konnte, war 3 Bytes länger:[^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]war eigentlich mal auf meiner Liste der kleineren Regexes, ich frage mich, wie ich es verpasst habe. Vielen Dank für den Hinweis! Was die Gruppierung nach dem zweiten Buchstaben angeht: Zusätzlich zur Gruppierung nach K können Sie einfach |[AGPSUV]Goder verwenden, |[BGLW]Saber die Gesamtpunktzahl ändert sich überhaupt nicht.
Thriller


2

Javascript (ES6), 118 116 Bytes

2 Bytes gespart dank @Craig Ayre

s=>"SZAINAGGDMOAUGBBSCCKIMWSHKYLSBMVGSGYBDBTHBWBNRMZMTLCXSRTVCYPNFKNPKEFJMYVIDIEJPGJEMUNZWMSONULKTKTOTTCTZ".match(s)

Rückgabe nullfür Rechtshänder

Testfälle


Könnten Sie String.prototype.match()Rechtsverkehr verwenden und mit angeben lassen null? Würde 2 Bytes sparen
Craig Ayre

1

Vim, 117 109 108 Tastenanschläge

oSZAINAGGDMOAUGBBSCCKIMWSHKYLSBMVGSGYBDBTHBWBNRMZMTLCXSRTVCYPNFKNPKEFJMYVIDIEJPGJEMUNZWMSONULKTKTOTTCTZ␛kg*D

Probieren Sie es online! (Ersetzen Sie SEin der Kopfzeile mit dem Ländercode)

ist die Escape-Taste. Das Programm druckt folgenden Text für Rechtshänder:

SZAINAGGDMOAUGBBSCCKIMWSHKYLSBMVGSGYBDBTHBWBNRMZMTLCXSRTVCYPNFKNPKEFJMYVIDIEJPGJEMUNZWMSONULKTKTOTTCTZ

Erläuterung

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

Ich weiß es zu schätzen, dass Sie in meinem bevorzugten Texteditor antworten und klugerweise einen richtigen Wert auswählen !
6.

1

MY-BASIC , 162 Bytes

Anonyme Funktion, die Eingaben als nicht umbrochene Zeichenfolge (dh ohne Klammern) annimmt und an die Konsole ausgibt

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

Retoure 0für Rechts- und 1Linkshänder, online testen!


1

Yabasic , 127 Bytes

Anonyme Funktion, die Eingaben als nicht umbrochene Zeichenfolge (Nein "...") akzeptiert und ausgibt, 0wenn das Land für Rechtshänder und 1das Land für Linkshänder bestimmt ist.

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

Probieren Sie es online!


1

C (GCC) , 115 107 Bytes

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

Probieren Sie es online!

Gibt zurück, 0wenn Sie linkshändig sind. -4 danke an @JonathanFrech


Könnten Sie nicht definieren, welche Funktion short*als Parameter verwendet werden soll?
Jonathan Frech

1

K, 105 Bytes

Informationen zu K / Q-Sprachen finden Sie unter code.kx.com

Verwenden Sie danach den Ländercode (2-stellige Zeichenfolge, Beispiel "XY")

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

Erzeugt 1b(Linkshänder Verkehr) oder 0b(nicht Linkshänder Verkehr)

Erläuterung:

  • 5h$"XX"generiert ASCII-Codes für jedes Zeichen des 2-Zeichen-Strings (Ländercode), Beispiel 5h$"TB"generiert 84 66

  • -65+integerListsubtrahieren Sie 65 zu jeder Ganzzahl in der Liste. Beispiel -65+5h$"TB"generiert 19 1

  • 26/:integerListBerechnet eine dieser Liste entsprechende Ganzzahl als Ziffern mit 26 Basen. Beispiel 26/:-65+5h$"TB"generiert 495 (Ländercode als Ganzzahl)

  • in[;listOfCountryCodesAsIntegers]@xgibt einen booleschen Wert zurück (1b = wahr, 0b = falsch). Wahr, wenn x in der Liste ist

  • +\-48+5h$"62<729151368=1>a1A23<6<C181A83?45;488F411112115:235Q43r141738353135247F42Tl<:" Berechnet die Liste der Ganzzahlen für jeden Ländercode mit Linksverkehr

    • "62<729151368=1>a1A23<6<C181A83?45;488F411112115:235Q43r141738353135247F42Tl<:"ist die "Entfernungszeichenfolge" (Entfernung zwischen jedem Paar von Ganzzahl-Ländercodes in aufsteigender Reihenfolge, als Zeichen codiert). Der Abstand n wird als ASCII-Zeichen 48 + n codiert

    • -48+5h$".." Berechnet den ASCII-Wert jedes Zeichens in der Zeichenfolge ".." und stellt den ursprünglichen Abstand als ASCII-Code - 48 wieder her. Das Ergebnis ist die Liste der Abstände

    • +\integerList Berechnet eine Teilsumme von Elementen aus der Liste -> absolute Ganzzahl-Ländercodes aus den Entfernungen zwischen den Codes.

ANMERKUNGEN.-

  • Rückgabe 0bfür nicht-linkshändige Ländercodes, einschließlich ungültiger Ländercodes
  • Wir können ein Zeichen zur Neuformatierung des Codes speichern, müssen jedoch den Ländercode "XX" in den Code eingeben (ich weiß nicht, ob er gültig ist, aber ich bin mir ziemlich sicher, dass er nicht elegant ist). in[26/:-65+5h$"XX";+\-48+5h$"..."]
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.