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 L
fü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!
CountryData
kann die Anzahl der asphaltierten und nicht asphaltierten Straßen und Eisenbahnen usw. in einem LandAntworten:
Python 2 ,
145136112109 BytesProbieren Sie es online!
Ausgänge
-1
fü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.
quelle
OT
nicht existieren", können Sie Leerzeichen wie "TO TC
Geht zu"TOTC
entfernen?Jelly , 61 Bytes
Vielen Dank an @ Mr.Xcoder für die Zusammenstellung von
Saved 1 Byte dank @JonathanAllan
Rückgabe
0
für Rechts- oder1
Linkshänder.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:
Daraus ergibt sich folgende Werteliste für den Linksverkehr:
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:
Wir konvertieren diese Liste von der bijektiven Basis 16 in die folgende Ganzzahl:
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.
quelle
“ŒỴ¬Ʋ>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.PowerShell ,
161 bis148 ByteProbieren Sie es online!
NaiveRegex-Mustererkennung. AusgängeTrue
für Linkshänder undFalse
für Rechtshänder.13 Bytes gespart dank Mercator Golfing der Regex.
quelle
[CFHW][CJKSXY]
(-5), I und J zu[IJ][DEMNP]
(-3), N zuN[AFP-Z]
(-1) und Z zuZ.
(-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.
Haskell , 137 Bytes
-5 Bytes dank ovs.
Probieren Sie es online!
Erzeugte die ursprüngliche Zeichenfolge von Hand.
quelle
TTHSZWMSGSONPKNZMWVIDFKELSCYJPNFJMTVCXBNRBWSHKYAUGGYBTLCCKIMVGBSBBMZAINAGDMOBDIEJEMYMUNUPGSRLKTKTOTCTZ
SZAINAGGDMOAUGBBSCCKIMWSHKYLSBMVGSGYBDBTHBWBNRMZMTLCXSRTVCYPNFKNPKEFJMYVIDIEJPGJEMUNZWMSONULKTKTOTTCTZ
- Probieren Sie es online!05AB1E ,
8268 BytesAusgänge 1 für Linksverkehr und 0 für Rechtsverkehr.
Probieren Sie es online! oder als Testsuite
Verwendet die Zeichenfolge, die von totalhuman generiert und von ovs verbessert wurde
quelle
05AB1E , 76 Bytes
Probieren Sie es online!
Gibt den folgenden String aus:
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 :).
quelle
Jelly , 69 Bytes
Ein monadischer Link, der eine Liste von Zeichen aufnimmt und zurückgibt,
1
wenn links (0
wenn rechts).Probieren Sie es online!
Wie?
Verwendet die Methode als vollständig human / ovs implementiert .
Was ich unabhängig gemacht habe, kam mit 72 Bytes :
Auch ein monadischer Link, der eine Liste von Zeichen aufnimmt und zurückgibt,
1
wenn er links ist (0
wenn er rechts ist).Probieren Sie es online!
Wie?
quelle
Befunge,
155152147146 BytesProbieren Sie es online!
Ausgaben
80
fü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
Nz
repräsentiert zum Beispiel die erste Gruppe,NA
undZA
. Die zweite GruppeBSg
,,BB
steht fürSB
, undGB
. Es gibt eine Gruppe für jeden Buchstaben im Alphabet, mit Ausnahme des BuchstabensQ
(keine Ländercodes für die linke Hand enden mitQ
). 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
A
und 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.
quelle
Windows Batch,
289279199193181130118 BytesGibt 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:
quelle
C (gcc) ,
181169165 BytesProbieren Sie es online!
quelle
82
ein Byte zu speichern?9
Beispielsweise würde ein Tabulatorzeichen ausgegeben.Python 2 , 144 Bytes
Probieren Sie es online!
Druckt
True
für links,False
für rechts.quelle
Retina ,
150 bis117 BytesProbieren Sie es online!
quelle
Excel VBA, 118 Bytes
Anonyme VBE-Direktfensterfunktion, die Eingaben von Zellen
[A1]
und Ausgaben entgegennimmt,0
wenn das Land rechtshändig istverwendet die Zeichenfolge von ovs
quelle
Japt,
12610097 BytesVerwendet die
Suchzeichenfolge von totalhuman'sovs . Nimmt Eingaben in Kleinbuchstaben und Ausgabenfalse
für RHD oder auftrue
andere Weise.Versuch es
Alles zwischen den Backticks ist die Suchzeichenfolge, die in Kleinbuchstaben und komprimiert angegeben ist, und
ø
prüft, ob sie die Eingabe enthältU
.quelle
Pyth ,
60575550474644 BytesOnline ausführen
Nimmt die Eingabe als Zeichenfolge in Großbuchstaben (
'AI'
). Gibt3
für links und nicht3
für rechts zurück.Wie es funktioniert
Den magischen String generieren
quelle
sed,
148 + 1145 + 1143 + 1142 + 1 BytesEin zusätzliches Byte für
-r
Flag (POSIX-erweiterte reguläre Ausdrücke).Gibt eine leere Zeichenfolge für Linksverkehr und die ursprüngliche Landesvorwahl für Rechtsverkehr aus.
Beispiel:
Erklärter Bearbeitungsverlauf:
sed,
158 + 1155 + 1153 + 1152 + 1 Byte, nicht leere AntwortLeichte Abweichung von der vorherigen. Rückgabe
L
für Linkshänder.quelle
J[^O]
anstelle von verwendenJ[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]
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]G
oder verwenden,|[BGLW]S
aber die Gesamtpunktzahl ändert sich überhaupt nicht.APL (Dyalog) , 108 Bytes
Probieren Sie es online!
Verwenden der Suchzeichenfolge von ovs.
Linksverkehr =
1
.Rechtsverkehr =
0
.quelle
Javascript (ES6),
118116 Bytes2 Bytes gespart dank @Craig Ayre
Rückgabe
null
für RechtshänderTestfälle
Code-Snippet anzeigen
quelle
String.prototype.match()
Rechtsverkehr verwenden und mit angeben lassennull
? Würde 2 Bytes sparenVim,
117109108 TastenanschlägeProbieren Sie es online! (Ersetzen Sie
SE
in der Kopfzeile mit dem Ländercode)␛
ist die Escape-Taste. Das Programm druckt folgenden Text für Rechtshänder:Erläuterung
quelle
MY-BASIC , 162 Bytes
Anonyme Funktion, die Eingaben als nicht umbrochene Zeichenfolge (dh ohne Klammern) annimmt und an die Konsole ausgibt
Retoure
0
für Rechts- und1
Linkshänder, online testen!quelle
Yabasic , 127 Bytes
Anonyme Funktion, die Eingaben als nicht umbrochene Zeichenfolge (Nein
"..."
) akzeptiert und ausgibt,0
wenn das Land für Rechtshänder und1
das Land für Linkshänder bestimmt ist.Probieren Sie es online!
quelle
C (GCC) ,
115107 BytesProbieren Sie es online!
Gibt zurück,
0
wenn Sie linkshändig sind. -4 danke an @JonathanFrechquelle
short*
als Parameter verwendet werden soll?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")
Erzeugt
1b
(Linkshänder Verkehr) oder0b
(nicht Linkshänder Verkehr)Erläuterung:
5h$"XX"
generiert ASCII-Codes für jedes Zeichen des 2-Zeichen-Strings (Ländercode), Beispiel5h$"TB"
generiert 84 66-65+integerList
subtrahieren Sie 65 zu jeder Ganzzahl in der Liste. Beispiel-65+5h$"TB"
generiert 19 126/:integerList
Berechnet eine dieser Liste entsprechende Ganzzahl als Ziffern mit 26 Basen. Beispiel26/:-65+5h$"TB"
generiert 495 (Ländercode als Ganzzahl)in[;listOfCountryCodesAsIntegers]@x
gibt 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.-
0b
für nicht-linkshändige Ländercodes, einschließlich ungültiger Ländercodesin[26/:-65+5h$"XX";+\-48+5h$"..."]
quelle