Powerball ist eine amerikanische Lotterie, die in letzter Zeit auf sich aufmerksam gemacht hat, da der aktuelle Jackpot (Stand: 11. Januar 2016) mit rund 1,5 Mrd. USD der größte Lottopreis in der Geschichte ist .
Powerball-Spieler wählen aus 69 nummerierten weißen Bällen 5 verschiedene Zahlen und aus 26 nummerierten roten Bällen eine "Powerball" -Nummer. Sie gewinnen den Jackpot, wenn ihre fünf weißen Ballwahlen mit der gezogenen Reihenfolge übereinstimmen und wenn sie die richtige "Powerball" -Nummer gewählt haben.
Also die Chancen, den Jackpot zu gewinnen sind 1 in (69 choose 5)*(26 choose 1)
oder ((69*68*67*66*65)/(5*4*3*2*1))*26
, das ist 1 in 292.201.338
Niemand hat den Jackpot in der letzten Ziehung am 9. Januar 2016 gewonnen, aber vielleicht gewinnt jemand die nächste Ziehung am 13. Januar 2016, 22:59 Uhr ET.
Herausforderung
Schreiben Sie ein Programm oder eine Funktion, die eine Powerball - Zeichnung simuliert, indem Sie 5 verschiedene Zufallszahlen von 1 bis einschließlich 69 und dann eine zufällige "Powerball" - Zahl von 1 bis einschließlich 26 eingeben (was eine Wiederholung einer der 5 sein könnte) Anfangszahlen).
Die "Powerball" -Nummer sollte immer die letzte Nummer in der Ausgabe sein, ansonsten spielt die Reihenfolge der ersten 5 Nummern keine Rolle.
Die 6 Zahlen sollten in Dezimalzahlen ausgegeben werden , entweder durch Leerzeichen oder durch Zeilenumbrüche getrennt, und optional durch eine einzelne nachgestellte Zeile. Kommas, Klammern und andere Zeichen sind in der Ausgabe nicht zulässig.
Das wären also gültige Ausgaben (unter Verwendung der Zahlen aus der letzten Zeichnung ):
32 16 19 57 34 13
32
16
19
57
34
13
Alle 292201338 möglichen Ergebnisse sollten mit einheitlicher Wahrscheinlichkeit möglich sein. Sie können integrierte Pseudozufallszahlengeneratoren verwenden und davon ausgehen, dass diese diesen Standard erfüllen.
Hier ist eine unbenutzte Referenzimplementierung, die in Python 2 oder 3 funktioniert:
import random
print(' '.join(map(str, random.sample(range(1,70), 5) + [random.randint(1, 26)])))
Der kürzeste Code in Bytes gewinnt.
Beachten Sie, dass ich keine Beziehung zu Powerball habe und nicht wirklich vorschlage, dass Sie spielen. Aber wenn Sie irgendetwas aus Zahlen gewinnen, die von einem der Programme hier generiert wurden, würden wir sicher gerne davon hören. : D
5! = 5*4*3*2*1
Möglichkeiten, 5 Dinge zu arrangieren, sodass Sie dies herausrechnen.Antworten:
Dyalog APL, 10 Bytes
Dyadisch
?
ist ⍺ verschiedene Zufallszahlen in [1, ⍵] und monadisch?
ist eine einzelne Zufallszahl.Probieren Sie es hier aus .
quelle
1+(5?69),?26
.CJam, 16 Bytes
Probieren Sie es online aus.
quelle
:)
Dinge nur ein bisschen größer werden, wie das Lächeln eines Fremden Sie nur ein bisschen glücklicher machen kann.:)
wenn ich im Lotto gewinnen würde. +1MATL , 10 Bytes
Verwendet die aktuelle Version (9.2.0) der Sprache / des Compilers.
Beispiel
Mit auf Matlab laufendem Compiler:
Mit auf Octave laufendem Compiler:
Die ersten fünf Zahlen werden durch ein Leerzeichen und nicht durch ein Zeilenumbruch getrennt. Dies liegt daran, dass sich die zugrunde liegende
randsample
Funktion von Octave anders verhält als die von Matlab (und in einer neuen Version des Compilers korrigiert wurde). Wie auch immer, Newline und Space sind beide durch die Herausforderung erlaubt.Bearbeiten (4. April 2016) : Probieren Sie es online!
Erläuterung
Siehe relevante Matlab-Funktionen:
randsample
undrandi
.quelle
Ruby,
3332Ruby hat zufällig eine eingebaute Methode, sample, die zufällige Werte aus einem Array auswählt, ohne sie zu ersetzen. Vielen Dank an QPaysTaxes für den Hinweis, dass ich die Eltern nicht brauche.
quelle
p
irgendwann zugewiesen hatte , wodurch die Syntaxanalyse für diese Version tatsächlich unterbrochen wurde.R
3029 BytesDie
sample
Funktion führt einfache Zufallsstichproben aus der Eingabe durch. Wenn als erstes Argument eine einzelne Ganzzahl angegeben wird, erfolgt die Stichprobenerfassung von 1 bis zum Argument. Die Stichprobengröße ist das zweite Argument. Wir verwenden die Standardoption der ersatzlosen Probenahme.Probieren Sie es online aus
quelle
c
anstelle voncat
c
, wäre dies nur ein Ausschnitt, der standardmäßig nicht zulässig ist.Python 3.5, 63 Bytes
Es ist im Grunde die Referenzimplementierung Golf. Beachten Sie, dass 3.5 erforderlich ist, um ein nicht letztes Argument einzugeben.
quelle
Oktave,
3532 BytesCalvins Hobbys bestätigten, dass die
ans =
Verwendung einer Funktion in Ordnung war.Es hat Ähnlichkeiten mit der Antwort von Memming , verwendet jedoch eine direkte Indizierung, die nur in Octave möglich ist, und ist
5 bis7 Bytes kürzer.randperm(69)
Erstellt eine Liste mit einer zufälligen Permutation der Zahlen 1-69. Es ist möglich, die Liste direkt zu indizieren (in MATLAB nicht möglich), um nur die ersten 5 Zahlen wie diese zu erhalten(1;5)
. Nach der Liste wirdrandi(26)
eine einzelne Zahl zwischen 1 und 26 zurückgegeben.Alt:
Die resultierende Liste wird mit angezeigt
disp
.quelle
PowerShell v2 +,
3127 BytesBenötigt Version 2 oder neuer, da
Get-Random
in Version 1 nicht vorhanden (Get-
impliziert und-Maximum
positionsbezogen). Die Ausgabe erfolgt in Zeilenumbrüchen.Ungolfed:
quelle
Random -ma 27
kann nur so sein,Random 27
wie-Maximum
es von Position 0 abgeglichen wirdShell + Coreutils, 31
quelle
MATLAB, 40
Ich kenne. Es ist die langweilige Lösung.
quelle
PHP, 69 Bytes
Ziemlich direkte Antwort. Generieren Sie eine 1-69
range
,array_rand
greifen Sie mit 5 zufälligen Schlüsseln aus dem Array zu, geben Sie den$k+1
Wert (0-indiziert) aus und geben Sie dann eine zufällige Ganzzahl von 1-26 aus.quelle
C #,
153 Bytes140 BytesDank an "McKay":
153-Byte-Lösung:
Einfache Lösung mit Linq und Mischen mit GUID.
quelle
string.Join(" ", ....take(5).Concat(....Take(1)))
Pyth -
131413 BytesGroßartiges Golfen möglich, dies war nur eine FGITW.
Probieren Sie es hier online aus .
quelle
<... 5
zu>5...
. Final Codejb>5.SS69hO26
Brachylog , 40 Bytes
Erläuterung
Brachylog hat kein eingebaut für Zufallszahl (noch ...) , so dass wir ein SWI-Prolog - Prädikat für das verwenden müssen:
random/1
. Wir können SWI-Prolog-Code in Brachylog mit Anführungszeichen eingeben.quelle
JavaScript (ES6),
1068684 ByteDa wir in JavaScript keine eindeutigen Stichproben für Zufälle erstellen können, erstellen wir ein Set (das nur eindeutige Werte enthält) und fügen rekursiv Zufälle (1-69) hinzu, bis es 5 eindeutige Werte gibt, und fügen eine Zufallszahl (1-26) hinzu. dann verbinden und alles zurückgeben.
quelle
Elixier , 83 Bytes
Wenn
IO.puts
Elixir nur ein Array von Ganzzahlen eingibt, interpretiert es die Ganzzahlen als Zeichen und gibt daher anstelle der gewünschten Powerball-Zahlen einen String aus. Also müssen wir das Integer-Array auf einen String reduzieren.quelle
Ruby,
474339 BytesIch denke, es kann mehr Golf gespielt werden, aber ich werde daran arbeiten, wenn ich fertig bin und bewundere, wie hübsch dieser Code aussieht, wenn man bedenkt.
Es funktioniert so ziemlich genauso wie alles andere: Nimm ein Array der Zahlen 1 bis 69, mische sie, hole die ersten fünf, gib diese aus und gib dann eine Zufallszahl zwischen 1 und 26 aus.
Ich habe einige Iterationen durchlaufen, bevor ich dies gepostet habe:
(woher
<newline>
wird durch eine aktuelle Newline ersetzt)EDIT: Whoops, habe die bereits existierende Ruby-Antwort nicht gesehen. Ich stolperte weiter
sample
und scrollte nach unten, um meine Antwort zu bearbeiten, aber dann sah ich es ... Na ja. Mein Endergebnis ist 43 Bytes, aber ich werde weiter ein bisschen Golf spielen, um zu sehen, wie gut ich es kann.quelle
Mathematica, 64 Bytes
Ziemlich einfach.
quelle
StringJoin
=""<>##&
Perl 5, 59 Bytes
Es ist eine Unterroutine; benutze es als:
quelle
-E
anstelle von-M5.010 -e
-1+2*int rand 2
mitrand>.5?1:-1
?;say$==
mit,$==
-M5.010
zählt sowieso nicht, also habe ich mich nicht darum gekümmert, es abzukürzen. Ich glaube, ich habe ein Komma anstelle eines anderen probiertsay
und es hat nicht funktioniert. Aber die neue Sortierregel ist eine gute Idee, danke. Ich werde es testen, wenn ich eine Chance habe und es bearbeiten.PHP, 65 Bytes
Danke an die andere PHP Antwort auf dieser Seite. Ich habe selbst ein Programm geschrieben, und es stellte sich heraus, dass es genau die gleiche Antwort war wie die von Samsquanch, was mich dazu veranlasste, noch einen Schritt weiter zu gehen, um ein paar Bytes zu sparen.
Wenn irgendjemand hier eine Möglichkeit finden kann, ein Array an ein anderes anzuhängen, die weniger als die 5 Bytes beträgt, die ich brauche, um mich der Powerball-Nummer anzuschließen, wäre ich sehr dankbar, denn das macht mich verrückt! Das Beste, was ich mir einfallen lassen könnte, wäre nach
array_rand
und vorjoin
eine Aussage zu haben+[5=>rand()%25]
, aber das ist ein zusätzliches Byte, wenn ich sie nur nach und nach verkette.Führen Sie es über die Befehlszeile aus. Probe:
Ausgabe:
quelle
PARI / GP,
71-70BytesEs erzeugt eine zufällige Permutation von [1..69] und nimmt dann die ersten 5.
Leider ist dies ein ineffizienter Zufallsnutzer, der im Vergleich zum informationstheoretischen Ideal von 3,5 durchschnittlich 87 Byte Entropie verbraucht. Dies liegt hauptsächlich daran, dass die gesamte Permutation anstelle der ersten 5 Elemente generiert wird und auch daran, dass die Perms geordnet sind (Verlust von lg 5! = ~ 7 Bits). Ferner
random
verwendet eine Ablehnung Strategie anstatt arithmetische Codierung. (Dies liegt daran, dass PARI Brents xorgen verwendet, was schnell genug ist, so dass sich der Aufwand für kompliziertere Strategien selten lohnt.)Es gibt drei 'offensichtliche' Änderungen, die unter der aktuellen (2.8.0) Version von gp nicht funktionieren.
random
undprint
können in Variablen gespeichert undprint
direkt und nicht über die anonyme->
Funktion aufgerufen werden :Zusammen würden dies 9 Bytes einsparen. Leider sind beide Funktionen ohne Argumente gültig und werden daher sofort ausgewertet und nicht gespeichert, sodass diese nicht die gewünschte Ausgabe berechnen.
quelle
Intel x86-Maschinencode, 85 Byte
Nun, manchmal werden die gleichen Zahlen gedruckt. Versuchen Sie es einfach noch einmal, indem Sie eine Taste drücken.
Kompilieren mit:
Stellen Sie sicher, dass Sie eine Diskettengröße festlegen (fügen Sie am Ende Nullen hinzu), um sie auf einem virtuellen Computer zu mounten (es wird kein Betriebssystem benötigt).
Demontage:
quelle
C 142 Bytes
Ich bin nicht sonderlich zufrieden mit dieser Lösung, da ich der Meinung bin, dass es mehr Möglichkeiten zum Golfen geben sollte. Ich werde es morgen noch einmal mit neuen Augen betrachten. Probieren Sie es hier aus .
quelle
Schnell, 165 Bytes
Kann schnell in einem Xcode-Spielplatz ausgeführt werden.
BEARBEITEN: Das aktuelle Problem hier ist, dass es theoretisch möglich ist, dass dies für immer in der while-Schleife abläuft, wenn arc4random_uniform irgendwie die gleiche Zahl zieht. Die Wahrscheinlichkeit, dass dies für einen längeren Zeitraum geschieht, ist wahrscheinlich höher als die Wahrscheinlichkeit, den Powerball zu gewinnen.
quelle
Perl 6 ,
3231 BytesWenn ich daraus eine Funktion mache, die eine Zeichenfolge zurückgibt, kann ich 4 Bytes (
put␠
) entfernen und nur 3 ({~
}
) hinzufügen.Verwendung:
Wenn eine Funktion eine Liste der Werte zurückgeben könnte, würde auch Folgendes funktionieren.
(Sonst wäre es dasselbe wie oben, aber innerhalb
{ }
)Funktion, die eine einzelne flache Liste zurückgibt
Funktion, die eine Liste mit den ersten 5 Ziffern einer Unterliste zurückgibt
Funktion, die eine Liste mit den ersten 5 in einer Unterliste und den Powerball in einer anderen Unterliste zurückgibt
quelle
Im Ernst, 35 Bytes
Mein erster Versuch, eine Antwort in einer Golfsprache zu finden.
Fühlt sich länger an, als es sein sollte.
Die Wiederholung könnte wahrscheinlich mit W entfernt werden , scheint aber im Online-Interpreter fehlerhaft zu sein und ich möchte keinen ungetesteten Code veröffentlichen.
Schade, dass { nicht auf Listen funktioniert.
Code:
Hex-Dump:
Erläuterung:
Online-Dolmetscher
quelle
Lua, 96 Bytes
Eine einfache Lösung, bei der eine Tabelle als Menge verwendet wird, indem der Wert als in sie eingefügt wird
table[value]=truthy/falsy
, um zu überprüfen, ob sie sich in der oder nicht.Ich verliere 5 Bytes, weil ich den ersten Wert meiner Tabelle setzen muss, sonst gehe ich nicht in die
while(o[n])
Schleife und gebe einfach aus,n
bevor ich die Zufallsfunktion benutze. Da Lua 1-basierte Tabellen verwendet, muss ich auch erzwingen, dass der erste Wert in die Zelle geschrieben wird[0]
, da ich sonst a nicht ausgeben kann1
.Ungolfed:
quelle
C ++, 252 Bytes
Golf gespielt:
Ungolfed:
quelle