Abréger cet état américain! était amusant, mais nous avons appris que l'abréviation efficace des noms d'états américains est difficile avec le système actuel. Imaginons un autre schéma de code d'état pour un golf efficace.
Ta tâche:
Écrivez une fonction (ou un programme) qui, étant donné un nom d'état américain valide (seulement les 50 états normaux requis), retourne un code unique à deux lettres en majuscule l'identifiant. Le code doit répondre à ces exigences:
- La première lettre doit être la même que la première lettre de l'État.
- La deuxième lettre doit être l'une des autres lettres de l'État (pas un espace).
- Il doit toujours donner la même sortie pour la même entrée et ne doit jamais donner la même sortie pour deux entrées valides différentes.
Par exemple, étant donné "Alabama", votre fonction peut retourner "AL", "AA", "AB" ou "AM" - tant qu'elle ne renvoie pas cette valeur pour l'Alaska, l'Arkansas, etc. ("AA "n'est possible que parce que" A "apparaît plusieurs fois dans le nom de l'état.)
Failles standard interdites. L'entrée / sortie standard est correcte. C'est le golf de code, donc la solution la plus courte, en octets, gagne.
La liste complète des entrées possibles est ici:
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
Réponses:
Gelée ,
1312 octetsUn lien monadique prenant et renvoyant des listes de personnages.
Essayez-le en ligne! ou voir une suite de tests
Comment?
L'indexation dans Jelly est 1-indexée et modulaire, donc le 907 ème index de quelque chose de longueur L est le (907-modulo-L) ème item. Par exemple, pour "Alabama", la longueur est de 7, donc l'élément à l'index 907 est le (907-modulo-7) e , et 907-modulo-7 est 4 (907 = 129 * 7 + 4 ), donc l'élément à l'index 907 est «b».
907 est le premier indice positif auquel les abréviations d'état utilisant l'index 1 et cet indice sur l'ensemble des 50 états deviennent uniques.
Les noms d'états, y compris leurs espaces, sont de longueur 4 à 14 inclus, et 907-modulo-6 est 1 (tandis que pour toutes les autres longueurs, la valeur n'est pas 1). Cela signifie que si nous devions utiliser les 1er et 907e caractères pour les abréviations que l'Alaska, Hawaï, le Kansas, le Nevada et l'Oregon seraient respectivement AA, HH, KK, NN et OO - ce n'est pas acceptable pour Hawaï, Kansas, ou Nevada; un ajustement doit donc être fait; c'est la raison de la concaténation, de la déduplication, de la tête vers l'index 2 et le tri, ce qui fait que l'Alaska, Hawaï, le Kansas, le Nevada et l'Oregon deviennent respectivement AL, HA, KA, NA et OR et ne se heurtent pas aux abréviations d'état existantes .
la source
Rubis, 34 octets
J'ai commencé avec
s[0]+s*99999[x].upcase
et trouvé de nombreuses valeurs de x jusqu'à x = 100000 qui renvoyaient des codes uniques pour les 50 états. Malheureusement, ils ont tous eu des cas où la deuxième lettre de l'abréviation était la première lettre de l'état dupliqué, ce qui n'est pas autorisé (sauf si la lettre apparaît deux fois dans le nom de l'État). J'ai donc décidé d'utiliser l'expressions[0]+s[1,8]*999[x]
et trouvé la plus petite valeur de x qui a fonctionné était 445.Commenté dans le programme de test et la sortie
la source
The second letter must be one of the other letters of the state.
AA pour l'Alabama est bien parce que l'Alabama a deux A. KK est bien pour le Kentucky mais pas pour le Kansas par exemple.Python 2 , 39 octets
Essayez-le en ligne!
Python 2 , 39 octets
Essayez-le en ligne!
la source
JavaScript (ES6), 46 octets
Démo
Afficher l'extrait de code
la source
Rétine ,
4946 octetsEssayez-le en ligne! Si l'état contient une deuxième lettre majuscule ou l'une des lettres
flmpxz
, cela devient la deuxième lettre du code. Sinon, s'il contient l'une des lettreshru
, cela devient la deuxième lettre du code, sinon utilisez simplement les deux premières lettres de l'état.la source
JavaScript (ES6), 52 octets
Afficher l'extrait de code
JavaScript (ES6), 52 octets
Afficher l'extrait de code
la source