Dado uno de los siguientes como entrada:
AK,AR,AS,AZ,CA,CT,DC,FL,GA,IL,IN,IA,KS,KY,LA,MD,MI,MN,MS,NV,NH,NJ,NM,NY,NC,ND,MP,OH,OK,OR,PA,PR,RI,SC,TN,TX,UT,VT,VA,WA,WI
(con comillas)
"AK","AR","AS","AZ","CA","CT","DC","FL","GA","IL","IN","IA","KS","KY","LA","MD","MI","MN","MS","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PA","PR","RI","SC","TN","TX","UT","VT","VA","WA","WI"
Genere y envíe una placa de licencia aleatoria (uniformemente) del formato que coincida con la entrada. Si hay múltiples formatos (separados por comas), use un formato aleatorio (uniformemente):
AK, IA, MS, MP, VT: AAA 000
AS: 0000
AZ, GA, WA: AAA0000
AR, KS, KY, LA, ND, OR: 000 AAA
CA: 0AAA000
CT: AA-00000
DC: AA-0000
FL: AAA A00
IL: AA 00000
IN: 000A,000AA,000AAA,AAA000
MD: 0AA0000
MI: AAA 0000,0AA A00,AAA 000
MN: 000-AAA
NV: 00A-000
NH: 000 0000
NJ: A00-AAA
NM: 000-AAA,AAA-000
NY, NC, PA, TX, VA, WI: AAA-0000
OH: AAA 0000
OK: 000AAA
PR: AAA-000
RI: 000-000
SC: AAA 000,000 0AA
TN: A00-00A
UT: A00 0AA
Donde A
significa un carácter aleatorio en el alfabeto en mayúscula menos IOQ
y 0
significa un número aleatorio de un solo dígito ( 0
a 9
).
Toda la información de Wikipedia . Estos (estados) fueron todos los que entendí y que no tenían reglas inestables.
Este es el código de golf , por lo que la respuesta más corta en bytes gana.
code-golf
random
generation
Stephen
fuente
fuente
IN
. ¿Elegimos uniformemente un formato (uno de 000A, 000AA, 000AAA o AAA000), luego elegimos un número de ese formato (cada formato ponderado por igual). ¿O consideramos el espacio numérico para todos los formatos para ese estado y seleccionamos ese espacio numérico completo (los formatos más grandes tienen mayor peso)?Respuestas:
Perl 6 ,
492350 bytesPruébalo en línea!
Estaba tan adelantado después de mi primer intento, que no hice un gran esfuerzo para reducir el código. Ahora tengo.
En mi codificación de los patrones de matrícula, los números 1-4 indican una serie de tantos dígitos aleatorios, y los números 5-7 indican una serie de letras permitidas al azar, de longitud cuatro menos que el número.
fuente
Python3,
861821819714678674670662661658596591561555551536 bytes.-8 bytes gracias a @DestructibleLemon (
b=a+
... yd=B
...), -15 bytes gracias a @Felipe Nardi Batista (lambda inútil y variable)¡Y gracias a todos en el chat que ayudaron a jugar golf!
Pruébalo en línea
Cualquier sugerencia de golf es bienvenida (y deseada). Y, por favor, si detecta algún error, ¡solo dígamelo a través de los comentarios!
fuente
IA
alist[0]
, o algo por el estilo (no sé pitón)b= a+"0"
? d podría ser = B [1:]?b
no puede sera+'0'
, ya que arruiné las placas.JavaScript (ES6),
374368 bytesFormateado y comentado
En el siguiente código, las secciones de datos se han truncado. Las partes faltantes están marcadas con
(...)
.Manifestación
Mostrar fragmento de código
fuente
T-SQL,
1104 1100 797657 bytesEDITAR 1: guardado más de 300 bytes cambiando
VALUES()
aSTRING_SPLIT()
(solo disponible en SQL 2016 y posterior)EDIT 2: guardó otros 140 bytes utilizando la compresión GZIP como se describe aquí . Ya nos hemos restringido a SQL 2016 y posterior, por lo que estas funciones están disponibles.
La entrada se realiza a través de la tabla t preexistente con el código de estado en la columna s , según nuestros estándares IO .
Después de expandir la cadena comprimida, aquí está el código formateado, con la lista súper larga de estados recortados:
Así que creé una gran tabla en memoria que consta de todos los pares posibles de (estado, patrón). Tenga en cuenta que no estoy combinando filas, cada estado es separado y estados como IN tendrán 4 filas, una para cada patrón.
Cuando una esa tabla en memoria a la tabla de entrada,
NEWID()
la ordeno, lo que aleatoriza el orden y devuelve un patrón de coincidencia aleatorio a la variable@
.Luego simplemente reemplazo cada uno
&
con una letra aleatoria, y cada uno#
con un dígito aleatorio y devuelvo el resultado.fuente
> <> ,
967860851 bytes¡Pruébelo en línea o mírelo en el parque de peces !
Este código tiene dos partes: hacer coincidir el estado con el patrón, luego reemplazar el patrón con los caracteres aleatorios. Ninguna de estas cosas es fácil en> <>.
En primer lugar, leemos en dos caracteres y calculamos 2 c 1 - 9 c 2 + 533, donde c 1 y c 2son los dos códigos de caracteres. El 2 y el 9 se eligieron para que la fórmula le otorgue a cada estado un valor único, y el desplazamiento de 533 se eligió para maximizar el número de estos valores que se pueden hacer usando solo 3> <> instrucciones; terminó siendo 28 de 41 de ellos. Luego enviamos el pez en zigzag hacia abajo a través del código hasta que encuentre el valor correcto, momento en el que escapa del zig-zag, lee el patrón apropiado e ingresa el flujo rápido en la columna más a la izquierda hasta la Parte 2. Algunas de las Los estados, en particular los que tienen una opción de múltiples patrones, necesitaban una consideración especial, pero logré reutilizar algunas partes del código para guardar algunos bytes.
Luego, también conocido como Parte 2, tenemos que reemplazar las "A" y "0" con letras y números aleatorios, respectivamente. El único comando aleatorio en> <> es
x
, que establece la dirección del pez aleatoriamente hacia arriba, abajo, izquierda y derecha, no es propicio para elegir algo uniformemente de 10 dígitos o 23 letras. Veamos el número de bits para ver cómo lo hace el pez:El pez entra desde la parte superior derecha. El pez establece una pila vacía
0[
- luego empuja aleatoriamente1
o0
con la misma probabilidad hasta que la pila tenga longitud 4:Luego combina los cuatro
1
sys0
como si fueran dígitos binariosl1=?\2*+
, dando un número del 0 al 15. Si el resultado es mayor que 9, descarta todo el trabajo que acaba de hacer e intenta nuevamente; de lo contrario, imprime el número y continúa:Hacer las letras al azar es muy similar, excepto que también verificamos que el resultado no sea "I", "O" o "Q"
::8-:6-:2-**
.fuente
Mathematica,
635507470 bytes-165 bytes de @JungHwanMin
formulario de entrada
fuente
\[PlusMinus]
: pastebin.com/cGHvSJRiPHP, 609 bytes
La idea principal es codificar el patrón de la placa con dígitos que indican cuántas repeticiones de un dígito o letra siguen. 1 a 5 se refieren al número de dígitos, mientras que 7, 8 y 9 se refieren a 1, 2 o 3 letras, respectivamente. Múltiples patrones están separados por una X, los espacios y guiones se mantienen tal cual. La búsqueda de estado es una simple búsqueda de clave de matriz, las cadenas redundantes se colocan en variables para ahorrar espacio.
Sin golf:
fuente
PHP ( Phar ), 495 bytes
El archivo binario Phar se puede descargar aquí y se puede ejecutar con
php uslic.phar <state code>
.El código base utilizado para generar el Phar es el siguiente (820 bytes):
Si desea generar el Phar usted mismo a partir de ese código, deberá hacer lo siguiente:
Curiosamente, esto se comprime mejor que una versión más golfizada .
El hexdump del archivo es:
fuente
Clojure,
502501 bytesEl argumento de entrada es un símbolo , no una cadena. Esto me permite evitar muchas comillas dobles.
B
-D
codificar repeticionesA
-AAA
,1
-4
codificar repeticiones0
-0000
.fuente
Python 2 , 438 bytes
Pruébalo en línea!
Versión legible: ¡ Pruébelo en línea!
Observe cómo la
states
cadena tiene solo 49 letras de largo. Doblé letras superpuestas en una tanto como sea posible (MD
→DC
→CA
→AS
→SC
...) y omitíNY, NC, PA, TX, VA, WI
todo lo que se asigna-1
.En la lista de
codes
,12345
significa que muchos dígitos y678
significa (que − 5) muchas letras.fuente
C (gcc) ,
473469 bytesGracias a ceilingcat por -4 bytes.
Un primer intento débil. Sospecho que hay una manera de acortar las cuerdas sustancialmente.
Pruébalo en línea!
fuente