Als Eingabe wird eine der folgenden Angaben verwendet:
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
(mit Anführungszeichen)
"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"
Erzeugen Sie ein (einheitlich) zufälliges Kennzeichen mit dem zur Eingabe passenden Format und geben Sie es aus. Wenn es mehrere (durch Kommas getrennte) Formate gibt, verwenden Sie ein (einheitliches) Zufallsformat:
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
Wobei A
ein zufälliges Zeichen im Großbuchstaben minus IOQ
und 0
eine zufällige einstellige Zahl ( 0
bis 9
) bedeutet.
Alle Informationen aus Wikipedia . Dies waren alles diejenigen, die ich verstand und die keine Wonky-Regeln hatten.
Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes!
code-golf
random
generation
Stephen
quelle
quelle
IN
. Wählen wir einheitlich ein Format aus (eines von 000A, 000AA, 000AAA oder AAA000) und wählen dann eine Zahl aus diesem Format aus (jedes Format wird gleich gewichtet). Oder betrachten wir den Nummernraum für alle Formate für diesen Zustand und wählen aus dem gesamten Nummernraum (größere Formate werden stärker gewichtet)?Antworten:
Perl 6 ,
492350 BytesProbieren Sie es online!
Nach meinem ersten Versuch war ich so weit vorne, dass ich mich nicht sehr bemühte, den Code zu reduzieren. Jetzt habe ich.
Bei meiner Kodierung der Nummernschildmuster geben die Zahlen 1 bis 4 eine Folge von so vielen zufälligen Ziffern an, und die Zahlen 5 bis 7 geben eine Folge von zufällig zulässigen Buchstaben an, die vier weniger lang sind als die Zahl.
quelle
Python3,
861821819714678674670662661658596591561555551536 Bytes.-8 Bytes dank @DestructibleLemon (
b=a+
... undd=B
...), -15 Bytes dank @Felipe Nardi Batista (nutzloses Lambda und Variable)Und danke an alle im Chat, die beim Golfen geholfen haben!
Probieren Sie es online aus
Anregungen zum Golfen sind willkommen (und erwünscht). Und wenn Sie Fehler entdecken, teilen Sie mir dies bitte über die Kommentare mit!
quelle
IA
zulist[0]
oder so ähnlich (ich weiß nicht , Python)b= a+"0"
? d könnte sein = B [1:]?b
kann nicht seina+'0'
, da ich die Nummernschilder vermasselt habe.JavaScript (ES6),
374368 ByteFormatiert und kommentiert
Im folgenden Code wurden Datenabschnitte abgeschnitten. Fehlende Teile sind mit gekennzeichnet
(...)
.Demo
Code-Snippet anzeigen
quelle
T-SQL,
1104 1100 797657 BytesEDIT 1: Über 300 Bytes durch Ändern
VALUES()
von gespeichertSTRING_SPLIT()
(nur in SQL 2016 und höher verfügbar)BEARBEITEN 2: Weitere 140 Bytes mit der hier beschriebenen GZIP-Komprimierung gespeichert . Wir haben uns bereits auf SQL 2016 und höher beschränkt, daher sind diese Funktionen verfügbar.
Die Eingabe erfolgt über die bereits vorhandene Tabelle t mit dem Statuscode in Spalte s . je unsere IO - Standards .
Nach dem Erweitern der komprimierten Zeichenfolge sehen Sie den formatierten Code mit der superlangen Liste der Status, die weggelassen wurden:
Also habe ich eine riesige In-Memory-Tabelle erstellt, die aus allen möglichen Paaren von (state, pattern) besteht. Beachten Sie, dass ich keine Zeilen kombiniere, jeder Status separat ist und dass Status wie IN 4 Zeilen haben, eine für jedes Muster.
Wenn ich diese speicherinterne Tabelle mit der Eingabetabelle verbinde, sortiere ich nach
NEWID()
, wodurch die Reihenfolge randomisiert wird und ein zufälliges Übereinstimmungsmuster für die Variable zurückgegeben wird@
.Ich ersetze dann einfach jedes
&
mit einem zufälligen Buchstaben und jedes#
mit einer zufälligen Ziffer und gebe das Ergebnis zurück.quelle
> <> ,
967860851 BytesProbieren Sie es online aus oder schauen Sie es sich auf dem Fischspielplatz an !
Dieser Code besteht aus zwei Teilen: Anpassen des Status an das Muster und Ersetzen des Musters durch die zufälligen Zeichen. Keines dieser Dinge ist in> <> einfach.
Zunächst lesen wir zwei Zeichen ein und berechnen 2 c 1 - 9 c 2 + 533, wobei c 1 und c 2sind die beiden Zeichencodes. Die 2 und die 9 wurden so gewählt, dass die Formel jedem Zustand einen eindeutigen Wert verleiht, und der Versatz von 533 wurde gewählt, um die Anzahl dieser Werte zu maximieren, die mit nur 3> <> Anweisungen vorgenommen werden können - am Ende waren es 28 von 41 von ihnen. Wir schicken den Fisch dann im Zick-Zack durch den Code, bis er den richtigen Wert findet. An diesem Punkt verlässt er den Zick-Zack, liest das entsprechende Muster und tritt in den schnellen Strom in der äußersten linken Spalte bis zu Teil 2 ein Zustände, insbesondere diejenigen mit einer Auswahl von mehreren Mustern, erforderten einige besondere Überlegungen, aber ich konnte einige Teile des Codes wiederverwenden, um ein paar Bytes zu sparen.
Als nächstes, auch bekannt als Teil 2, müssen wir die "A" und "0" durch zufällige Buchstaben bzw. Zahlen ersetzen. Der einzige zufällige Befehl in> <> ist
x
, der die Richtung des Fisches nach dem Zufallsprinzip nach oben, unten, links und rechts festlegt - was nicht dazu beiträgt, aus 10 Ziffern oder 23 Buchstaben einheitlich etwas auszuwählen. Schauen wir uns das Zahlenbit an, um zu sehen, wie der Fisch das macht:Der Fisch kommt von oben rechts herein. Der Fisch baut einen leeren Stapel auf -
0[
- dann drückt er zufällig1
oder0
mit gleicher Wahrscheinlichkeit, bis der Stapel die Länge 4 hat:Es kombiniert dann die vier
1
s und0
s miteinander, als wären sie Binärziffern -l1=?\2*+
- und gibt eine Zahl von 0 bis 15. Wenn das Ergebnis größer als 9 ist, verwirft es alle gerade geleistete Arbeit und versucht es erneut. Andernfalls wird die Nummer gedruckt und fortgesetzt:Die Zufallsbuchstaben sind ähnlich, außer dass wir überprüfen, ob das Ergebnis nicht "I", "O" oder "Q" ist
::8-:6-:2-**
.quelle
Mathematica,
635507470 Bytes-165 Bytes von @JungHwanMin
Eingabeformular
quelle
\[PlusMinus]
von : pastebin.com/cGHvSJRiPHP, 609 Bytes
Die Hauptidee besteht darin, das Nummernschildmuster mit Ziffern zu codieren, die angeben, wie viele Wiederholungen einer Ziffer oder eines Buchstabens folgen. 1 bis 5 beziehen sich auf die Anzahl der Ziffern, während 7, 8 und 9 sich auf 1, 2 oder 3 Buchstaben beziehen. Mehrere Muster werden durch ein X getrennt, Leerzeichen und Bindestriche bleiben unverändert. Die Statussuche ist eine einfache Suche nach Array-Schlüsseln. Aus Platzgründen werden redundante Zeichenfolgen in Variablen eingefügt.
Ungolfed:
quelle
PHP ( Phar ), 495 Bytes
Die binäre Phar - Datei kann heruntergeladen werden hier und kann mit ausgeführt werden
php uslic.phar <state code>
.Der zur Generierung des Phar verwendete Basiscode lautet wie folgt (820 Byte):
Wenn Sie den Phar selbst aus diesem Code generieren möchten, müssen Sie Folgendes tun:
Interessanterweise komprimiert dies besser als eine Golfversion .
Der Hexdump der Datei lautet:
quelle
Clojure,
502501 BytesDas Eingabeargument ist ein Symbol , keine Zeichenfolge. So vermeide ich viele Anführungszeichen.
B
-D
Wiederholungen codierenA
-AAA
,1
-4
Wiederholungen codieren0
-0000
.quelle
Python 2 , 438 Bytes
Probieren Sie es online!
Lesbare Version: Probieren Sie es online!
Beachten Sie, dass die
states
Zeichenfolge nur 49 Buchstaben lang ist. Ich habe überlappende Buchstaben so weit wie möglich zu einem zusammengefaltet (MD
→DC
→CA
→AS
→SC
…) und ausgelassen,NY, NC, PA, TX, VA, WI
was damit alle abbilden-1
.In der Liste der
codes
,12345
bedeutet , dass viele Stellen und678
Mittel (das-5) viele Briefe.quelle
C (gcc) ,
473469 BytesDanke an ceilingcat für -4 Bytes.
Ein erster schwacher Versuch. Ich vermute, dass es eine Möglichkeit gibt, die Saiten erheblich zu verkürzen.
Probieren Sie es online!
quelle