Étant donné l'un des éléments suivants en entrée:
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
(avec guillemets)
"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"
Générez et sortez une plaque d'immatriculation aléatoire (uniforme) du format correspondant à l'entrée. S'il existe plusieurs formats (séparés par des virgules), utilisez un format aléatoire (uniforme):
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
Où A
signifie un caractère aléatoire dans l'alphabet majuscule moins IOQ
et 0
signifie un nombre aléatoire à un chiffre ( 0
à 9
).
Toutes les informations de Wikipedia . Ces (états) étaient tous ceux que j'ai compris et qui n'avaient pas de règles bancales.
C'est le golf de code , donc la réponse la plus courte en octets gagne!
code-golf
random
generation
Stephen
la source
la source
IN
. Choisissons-nous uniformément un format (un parmi 000A, 000AA, 000AAA ou AAA000), puis choisissons un nombre à partir de ce format (chaque format ayant la même pondération). Ou considérons-nous l'espace numérique de tous les formats pour cet état et sélectionnons-le à partir de cet espace numérique entier (les formats plus grands pondérés plus grands)?Réponses:
Perl 6 ,
492350 octetsEssayez-le en ligne!
J'étais tellement en avance après ma première tentative, je n'ai pas fait beaucoup d'efforts pour réduire le code. Maintenant j'ai.
Dans mon codage des modèles de plaque d'immatriculation, les chiffres 1-4 indiquent une série de autant de chiffres aléatoires et les chiffres 5-7 indiquent une série de lettres autorisées aléatoires, de longueur quatre de moins que le nombre.
la source
Python3,
861821819714678674670662661658596591561555551536 octets.-8 octets grâce à @DestructibleLemon (
b=a+
... etd=B
...), -15 octets grâce à @Felipe Nardi Batista (lambda inutile et variable)Et merci à tous ceux qui ont aidé à jouer au golf!
Essayez-le en ligne
Toutes les suggestions de golf sont les bienvenues (et recherchées). Et, s'il vous plaît, si vous repérez des erreurs, dites-le moi via les commentaires!
la source
IA
surlist[0]
ou quelque chose comme ça (je ne sais pas python)b= a+"0"
? d pourrait être = B [1:]?b
ne peut pas êtrea+'0'
, comme j'ai foiré les plaques d'immatriculation.JavaScript (ES6),
374368 octetsFormaté et commenté
Dans le code suivant, les sections de données ont été tronquées. Les pièces manquantes sont signalées par
(...)
.Démo
Afficher l'extrait de code
la source
T-SQL,
1104 1100 797657 octetsEDIT 1: enregistré plus de 300 octets en passant
VALUES()
àSTRING_SPLIT()
(uniquement disponible dans SQL 2016 et versions ultérieures)EDIT 2: enregistré 140 octets supplémentaires en utilisant la compression GZIP comme décrit ici . Nous nous sommes déjà limités à SQL 2016 et versions ultérieures, donc ces fonctions sont disponibles.
L'entrée se fait via la table préexistante t avec le code d'état dans la colonne s , selon nos normes IO .
Après avoir développé la chaîne compressée, voici le code formaté, avec la super longue liste d'états coupée:
J'ai donc créé une énorme table en mémoire composée de toutes les paires possibles de (état, motif). Notez que je ne combine pas de lignes, chaque état est séparé et les états comme IN auront 4 lignes, une pour chaque modèle.
Lorsque je joint cette table en mémoire à la table d'entrée, je trie par
NEWID()
, ce qui randomise l'ordre et renvoie un modèle de correspondance aléatoire à la variable@
.Je remplace ensuite simplement chacun
&
par une lettre aléatoire, et chacun#
par un chiffre aléatoire et renvoie le résultat.la source
> <> ,
967860851 octetsEssayez-le en ligne ou regardez-le au terrain de pêche !
Ce code comporte deux parties: faire correspondre l'état au modèle, puis remplacer le modèle par les caractères aléatoires. Aucune de ces choses n'est facile dans> <>.
Tout d'abord, nous lisons en deux caractères et calculons 2 c 1 - 9 c 2 + 533, où c 1 et c 2sont les deux codes de caractères. Le 2 et le 9 ont été choisis pour que la formule donne à chaque état une valeur unique, et le décalage de 533 a été choisi pour maximiser le nombre de ces valeurs qui peuvent être faites en utilisant seulement 3> <> instructions - il a fini par être 28 sur 41 d'entre eux. Nous envoyons ensuite le poisson en zigzag dans le code jusqu'à ce qu'il trouve la bonne valeur, à quel point il échappe au zig-zag, lit le modèle approprié et entre dans le flux rapide dans la colonne la plus à gauche jusqu'à la partie 2. Certains des Les états, en particulier ceux avec un choix de plusieurs modèles, avaient besoin d'une attention particulière, mais j'ai réussi à réutiliser certaines parties du code pour économiser quelques octets.
Ensuite, alias la partie 2, nous devons remplacer les «A» et les «0» par des lettres et des chiffres aléatoires respectivement. La seule commande aléatoire dans> <> est
x
, qui définit la direction du poisson au hasard de haut en bas, de gauche à droite - pas propice à choisir quelque chose uniformément sur 10 chiffres ou 23 lettres. Regardons les chiffres pour voir comment le poisson le fait:Le poisson entre par le haut à droite. Le poisson met en place une pile vide -
0[
- puis pousse au hasard1
ou0
avec une probabilité égale jusqu'à ce que la pile ait une longueur 4:Il combine ensuite les quatre
1
s et0
s ensemble comme s'il s'agissait de chiffres binaires -l1=?\2*+
- donnant un nombre de 0 à 15. Si le résultat est supérieur à 9, il rejette tout le travail qu'il vient de faire et réessaye; sinon, il imprime le numéro et continue:Faire les lettres au hasard est à peu près la même chose, sauf que nous vérifions également que le résultat n'est pas "I", "O" ou "Q" avec
::8-:6-:2-**
.la source
Mathematica,
635507470 octets-165 octets de @JungHwanMin
formulaire de saisie
la source
\[PlusMinus]
: pastebin.com/cGHvSJRiPHP, 609 octets
L'idée principale est de coder le modèle de plaque d'immatriculation avec des chiffres qui indiquent combien de répétitions d'un chiffre ou d'une lettre suivent. 1 à 5 se réfèrent au nombre de chiffres tandis que 7, 8 et 9 se réfèrent respectivement à 1, 2 ou 3 lettres. Plusieurs motifs sont séparés par un X, les espaces et les tirets sont conservés tels quels. La recherche d'état est une simple recherche de clé de tableau, des chaînes redondantes sont placées dans des variables pour économiser de l'espace.
Non golfé:
la source
PHP ( Phar ), 495 octets
Le fichier binaire Phar peut être téléchargé ici et peut être exécuté avec
php uslic.phar <state code>
.Le code de base utilisé pour générer le Phar est le suivant (820 octets):
Si vous souhaitez générer le Phar vous-même à partir de ce code, vous devrez effectuer les opérations suivantes:
Chose intéressante, cela se comprime mieux qu'une version plus golfée .
L'hexdump du fichier est:
la source
Clojure,
502501 octetsL'argument d'entrée est un symbole , pas une chaîne. Cela m'a permis d'éviter de nombreux guillemets doubles.
B
-D
encoder les répétitionsA
-AAA
,1
-4
encoder les répétitions0
-0000
.la source
Python 2 , 438 octets
Essayez-le en ligne!
Version lisible: essayez-le en ligne!
Notez que la
states
chaîne ne fait que 49 lettres. Je croisai les lettres qui se chevauchent dans un plus possible (MD
→DC
→CA
→AS
→SC
...) et omisNY, NC, PA, TX, VA, WI
qui ainsi toute carte à-1
.Dans la liste de
codes
,12345
signifie que beaucoup de chiffres et678
signifie (que − 5) beaucoup de lettres.la source
C (gcc) ,
473469 octetsMerci à plafondcat pour -4 octets.
Une première tentative faible. Je soupçonne qu'il existe un moyen de raccourcir considérablement les cordes.
Essayez-le en ligne!
la source