¡Abrevia ese estado de EE. UU.! fue divertido, pero aprendimos que abreviar eficientemente los nombres de los estados de Estados Unidos es difícil con el sistema actual. Vamos a idear un esquema de código de estado alternativo para el golf eficiente.
Tu tarea:
Escriba una función (o programa) que, dado un nombre de estado estadounidense válido (solo se requieren los 50 estados normales), devuelva un código único de dos letras en mayúsculas para identificarlo. El código debe cumplir estos requisitos:
- La primera letra debe ser la misma que la primera letra del estado.
- La segunda letra debe ser una de las otras letras del estado (no un espacio).
- Siempre debe dar la misma salida para la misma entrada, y nunca debe dar la misma salida para dos entradas válidas diferentes.
Por ejemplo, dado "Alabama", su función podría devolver "AL", "AA", "AB" o "AM", siempre que no devuelva ese valor para ninguno de Alaska, Arkansas, etc. ("AA "solo es posible porque" A "aparece más de una vez en el nombre del estado.)
Lagunas estándar prohibidas. La entrada / salida estándar está bien. Este es el código de golf, por lo que la solución más corta, en bytes, gana.
La lista completa de posibles entradas está aquí:
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
Respuestas:
Jalea ,
1312 bytesUn enlace monádico que toma y devuelve listas de personajes.
Pruébalo en línea! o ver un conjunto de pruebas
¿Cómo?
Indexing en Jelly es 1-indexado y modular, por lo que el 907 º índice de algo de longitud L es el (907-modulo-L) ésimo elemento. Por ejemplo, para "Alabama", la longitud es 7, por lo que el elemento en el índice 907 es el (907-módulo-7) th , y 907-módulo-7 es 4 (907 = 129 * 7 + 4 ), por lo que el elemento en el índice 907 es 'b'.
907 es el primer índice positivo en el que las abreviaturas de estado que usan el índice 1 y ese índice en todos los 50 estados se vuelven únicos.
Los nombres de los estados, incluidos sus espacios, tienen una longitud de 4 a 14 inclusive, y 907-módulo-6 es 1 (mientras que para todas las demás longitudes el valor no es 1). Esto significa que si tuviéramos que usar los caracteres primero y 907 para las abreviaturas de que Alaska, Hawái, Kansas, Nevada y Oregón serían AA, HH, KK, NN y OO respectivamente, esto no es aceptable para Hawái, Kansas, o Nevada; entonces se necesita hacer un ajuste; Esta es la razón de la concatenación, desduplicación, ir al índice 2 y ordenar, esto hace que Alaska, Hawai, Kansas, Nevada y Oregón se conviertan en AL, HA, KA, NA y OR respectivamente y no colisionen con las abreviaturas estatales existentes .
fuente
Ruby, 34 bytes
Comencé con
s[0]+s*99999[x].upcase
y encontré muchos valores de x hasta x = 100000 que devolvieron códigos únicos para los 50 estados. Desafortunadamente, todos tenían casos en los que la segunda letra de la abreviatura era la primera letra del estado duplicada, lo que no está permitido (a menos que la letra aparezca dos veces en el nombre del estado). Así que decidí usar la expresións[0]+s[1,8]*999[x]
y encontré el valor más pequeño de x que funcionó fue 445.Comentado en el programa de prueba y salida
fuente
The second letter must be one of the other letters of the state.
AA para Alabama está bien porque Alabama tiene dos A's. KK está bien para Kentucky, pero no para Kansas, por ejemplo.Python 2 , 39 bytes
Pruébalo en línea!
Python 2 , 39 bytes
Pruébalo en línea!
fuente
JavaScript (ES6), 46 bytes
Manifestación
Mostrar fragmento de código
fuente
Retina ,
4946 bytesPruébalo en línea! Si el estado contiene una segunda letra mayúscula, o una de las letras
flmpxz
, entonces esa se convierte en la segunda letra del código. De lo contrario, si contiene una de las letrashru
, entonces se convierte en la segunda letra del código; de lo contrario, solo use las dos primeras letras del estado.fuente
JavaScript (ES6), 52 bytes
Mostrar fragmento de código
JavaScript (ES6), 52 bytes
Mostrar fragmento de código
fuente