Kürzen Sie diesen US-Bundesstaat! hat Spaß gemacht, aber wir haben gelernt, dass es mit dem aktuellen System schwierig ist, US-Bundesstaaten effizient abzukürzen. Lassen Sie uns ein alternatives Code-Schema für effizientes Golfen entwickeln.
Deine Aufgabe:
Schreiben Sie eine Funktion (oder ein Programm), die unter Angabe eines gültigen US-Bundesstaatsnamens (nur die 50 erforderlichen Normalzustände) einen eindeutigen, aus zwei Buchstaben bestehenden Code in Großbuchstaben zurückgibt. Der Code muss diese Anforderungen erfüllen:
- Der erste Buchstabe muss mit dem ersten Buchstaben des Staates identisch sein.
- Der zweite Buchstabe muss einer der anderen Buchstaben des Staates sein (kein Leerzeichen).
- Es muss immer dieselbe Ausgabe für dieselbe Eingabe geben und darf niemals dieselbe Ausgabe für zwei verschiedene gültige Eingaben geben.
Bei "Alabama" könnte Ihre Funktion beispielsweise "AL", "AA", "AB" oder "AM" zurückgeben - sofern dieser Wert für Alaska, Arkansas usw. nicht zurückgegeben wird ("AA") "ist nur möglich, weil" A "im Statusnamen mehrmals vorkommt.)
Standardlücken verboten. Standardeingang / -ausgang sind ok. Dies ist Codegolf, daher gewinnt die kürzeste Lösung in Byte.
Die vollständige Liste der möglichen Eingaben finden Sie hier:
Alabama
Alaska
Arizona
Arkansas
California
Colorado
Connecticut
Delaware
Florida
Georgia
Hawaii
Idaho
Illinois
Indiana
Iowa
Kansas
Kentucky
Louisiana
Maine
Maryland
Massachusetts
Michigan
Minnesota
Mississippi
Missouri
Montana
Nebraska
Nevada
New Hampshire
New Jersey
New Mexico
New York
North Carolina
North Dakota
Ohio
Oklahoma
Oregon
Pennsylvania
Rhode Island
South Carolina
South Dakota
Tennessee
Texas
Utah
Vermont
Virginia
Washington
West Virginia
Wisconsin
Wyoming
Antworten:
Jelly ,
1312 BytesEine monadische Verknüpfung, die Listen von Zeichen aufnimmt und zurückgibt.
Probieren Sie es online! oder sehen Sie sich eine Testsuite an
Wie?
Indizierung in Jelly 1-indiziert und modular, so die 907 - ten Index des etwas mit der Länge L ist die (907-Modulo-L) ten Punkt. Zum Beispiel für "Alabama" ist die Länge 7, so dass das Element bei Index 907 das (907-Modulo-7) -te und 907-Modulo-7 4 ist (907 = 129 * 7 + 4 ), so dass das Element bei Index ist 907 ist 'b'.
907 ist der erste positive Index, bei dem die Zustandsabkürzungen mit Index 1 und dieser Index für alle 50 Zustände eindeutig werden.
Zustandsnamen einschließlich ihrer Leerzeichen haben die Länge 4 bis einschließlich 14, und 907-modulo-6 ist 1 (während für alle anderen Längen der Wert nicht 1 ist). Dies bedeutet, dass wenn wir das 1. und das 907. Zeichen als Abkürzungen für Alaska, Hawaii, Kansas, Nevada und Oregon verwenden würden, AA, HH, KK, NN bzw. OO - dies ist für Hawaii, Kansas nicht akzeptabel. oder Nevada; Daher muss eine Anpassung vorgenommen werden. Dies ist der Grund für die Verkettung, Deduplizierung, weiter zu Index 2 und Sortieren. Dadurch werden Alaska, Hawaii, Kansas, Nevada und Oregon zu AL, HA, KA, NA bzw. OR und kollidieren nicht mit den vorhandenen staatlichen Abkürzungen .
quelle
Ruby, 34 Bytes
Ich begann mit
s[0]+s*99999[x].upcase
und fand viele Werte von x bis zu x = 100000, die eindeutige Codes für alle 50 Zustände zurückgaben. Leider hatten alle Fälle, in denen der zweite Buchstabe der Abkürzung der erste Buchstabe des Staates war, was nicht erlaubt ist (es sei denn, der Buchstabe erscheint zweimal im Namen des Staates.) Also habe ich mich für den Ausdruck entschiedens[0]+s[1,8]*999[x]
und den kleinsten Wert von gefunden x, das funktionierte, war 445.Kommentiert im Testprogramm und ausgegeben
quelle
The second letter must be one of the other letters of the state.
AA für Alabama ist in Ordnung, weil Alabama zwei As hat. KK ist gut für Kentucky, aber nicht für Kansas zum Beispiel.Python 2 , 39 Bytes
Probieren Sie es online!
Python 2 , 39 Bytes
Probieren Sie es online!
quelle
JavaScript (ES6), 46 Byte
Demo
Code-Snippet anzeigen
quelle
Retina ,
4946 BytesProbieren Sie es online! Wenn der Bundesstaat einen zweiten Großbuchstaben oder einen der Buchstaben enthält
flmpxz
, wird dieser zum zweiten Buchstaben des Codes. Andernfalls, wenn es einen der Buchstaben enthälthru
, wird dieser zum zweiten Buchstaben des Codes. Andernfalls verwenden Sie einfach die ersten beiden Buchstaben des Bundesstaates.quelle
JavaScript (ES6), 52 Byte
Code-Snippet anzeigen
JavaScript (ES6), 52 Byte
Code-Snippet anzeigen
quelle