Esto es esencialmente lo contrario de Generar una matrícula de EE. UU.
Desafío: dada una cadena que coincide con uno de los formatos de matrícula siguientes, genera todos los estados posibles que coinciden con ese formato. En la tabla a continuación 0
representa un solo dígito 0
hasta el 9
inclusivo y A
representa una sola letra A
hasta el Z
inclusivo Para los propósitos de este desafío, ignoramos los estados con reglas de formato complejas (como Delaware, que tiene un número variable de dígitos) e ignoramos la eliminación de letras similares (por ejemplo, I
y 1
).
AAA 000: AK, IA, MS, MP, VT
0000: AS
AAA0000: AZ, GA, WA
000 AAA: AR, KS, KY, LA, ND, OR
0AAA000: CA
AA-00000: CT
AA-0000: DC
AAA A00: FL
AA 00000: IL
000A,000AA,000AAA,AAA000: IN
0AA0000: MD
AAA 0000,0AA A00,AAA 000: MI
000-AAA: MN
00A-000: NV
000 0000: NH
A00-AAA: NJ
000-AAA,AAA-000: NM
AAA-0000: NY, NC, PA, TX, VA, WI
AAA 0000: OH
000AAA: OK
AAA-000: PR
000-000: RI
AAA 000,000 0AA: SC
A00-00A: TN
A00 0AA: UT
Ejemplos:
B32 9AG
[UT]
1YUC037
[CA]
285 LOR
[AR, KS, KY, LA, ND, OR] (in any order)
285-LOR
[MN, NM] (in any order)
285LOR
[IN, OK] (in any order)
Reglas y aclaraciones
- La cadena de entrada está garantizada como no vacía y se garantiza que sea de uno de los formatos anteriores
- El comportamiento si se le da un formato diferente al anterior no está definido
- La entrada y salida se pueden dar por cualquier método conveniente
- Puede imprimir el resultado en STDOUT o devolverlo como resultado de una función
- Un programa completo o una función son aceptables
- Las lagunas estándar están prohibidas
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf, y gana el código más corto (en bytes)
fuente
[A-Z]*.
en lugar de.*?[a-z]
debería guardar un byteT-SQL, 475 bytes
Los saltos de línea son solo para legibilidad.
Limitado a SQL 2017 o superior mediante el uso de la
TRIM
función. SQL 2016 (requerido paraSTRING_SPLIT
), es posiblemente sustituyendoRTRIM
al costo de 1 byte.Básicamente estoy haciendo una
LIKE
coincidencia inversa : expando el patrón de cada placa a una cadena de coincidencia de patrón comodín completa como'[A-Z][0-9][0-9] [0-9][A-Z][A-Z]'
, luego comparo con el valor de entrada y devuelvo los estados coincidentes (que se combinan en un solo campo).Podría ahorrar algo más de espacio GZIP'ing la larga cadena; Veré si eso ayuda ...
fuente
Perl 5
(-p)
, 165 bytesLa respuesta Javascript del puerto de @ Arnauld, también lo votó.
Pruébalo en línea!
fuente
Carbón , 177 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
¡Pruebe todos los casos de prueba!El enlace es a la versión detallada del código. (Se necesita un código ligeramente diferente para procesar múltiples casos).
Como era de esperar, un puerto de la solución de @ Arnauld es mucho más corto con solo 121 bytes:
Pruébalo en línea! El enlace es a la versión detallada del código. El segundo módulo por 30 está implícito en la indexación en la matriz.
fuente
Python 3 ,
382378 bytesPruébalo en línea!
Reemplaza números con
0
y letras con1
, luego busca en la cadena el plato seguido de una cadena de letras. Luego, simplemente devuelve cada par de letras que no se superponen en esa cadena.No es el byte más eficiente, pero es un buen comienzo (tal vez).
Disfruto de los desafíos basados en información que no se puede generar.
fuente
05AB1E , 176 bytes
Pruébalo en línea!
fuente