Ich habe gerade eine Antwort auf diese Frage eingereicht und mir dann einige Nachrichten über den MegaMillions-Lotterie-Wahn angesehen, der gerade in den USA stattfindet. Diese Meldung angegeben , dass eine Person $ 20.000 im Wert von Tickets auf einmal (das ist 20.000 gekauft Sätze von Zahlen zu bestätigen!) Ihr Glück zu versuchen und zu testen.
Das brachte mich dazu, darüber nachzudenken, wie man schnell feststellen könnte, ob sie auf einer großen Menge von Tickets, die sie gekauft hatten, einen Preis gewonnen hatten oder nicht, nicht nur einen Jackpot.
Die Herausforderung lautet dann:
Überblick:
Schreiben Sie eine Funktion oder ein Programm, die eine Reihe von Zahlen als Argument akzeptiert (STDIN oder aus einer Datei Ihrer Wahl einlesen), und geben Sie die Nummern der Tickets mit mindestens der Mindestauszahlung zurück.
Codedetails:
- Die Eingabe besteht aus einer Reihe von Zeilen, eine für jedes gekaufte Ticket. Den Gewinnzahlen wird eine 0 vorangestellt, während den gezogenen Zahlen eine inkrementierte Zahl ab 1 vorangestellt wird (siehe Beispiel).
- Die Eingabe sollte jedes Mal ein völlig zufälliger Satz von Zahlen sein, einschließlich Ziehungen und Gewinnzahlen.
- Die Eingabe sollte eine beliebige Anzahl von Tickets n akzeptieren, wobei 1 <= n <= 20.000. (Angenommen, es werden keine 0 Tickets ausgeführt.)
- Jede Eingabezeile enthält 7 Zahlen pro Zeile. Eine für das oben angegebene Präfix, 5 für die Standardbälle und eine zusätzliche für den 'Match'-Ball. (siehe Lottodetails unten)
- Die Eingabe kann beliebig begrenzt werden (Leerzeichen, Semikolon usw.).
- Die Ausgabe sollte eine Auflistung aller Gewinnspiele und des Gewinnbetrags sein. (Sie wissen also, welche Sie abgeben müssen.)
- Die Ausgabeliste sollte nach Gewinnbetrag sortiert sein. (Wen interessiert es, ob Sie mit einem Ticket 2 $ gewonnen haben, wenn Sie mit einem anderen auch 10.000 $ gewonnen haben ???)
- Wenn mehr als ein Ticket den gleichen Betrag gewinnt, ist die Reihenfolge dieser Tickets irrelevant.
- Die Ausgabe sollte auch eine Auflistung des gewonnenen Gesamtbetrags enthalten.
Lotto Details:
- Es gelten die Standardregeln für das MegaMillions-Spiel , da dies momentan so heiß ist.
- Die Ziehungen bestehen aus sechs Zahlen aus zwei getrennten Zahlenpools - fünf verschiedenen Zahlen von 1 bis 56 und einer Zahl (dem Matchball) von 1 bis 46.
- Der Jackpot wird gewonnen, indem alle sechs Gewinnzahlen in einer Ziehung abgeglichen werden.
Auszeichnungen für Nicht-Jackpot-Gewinne werden wie folgt vergeben (siehe Bild unten).
(Main) + (Match) = (Auszahlung)
5 + 1 = Jackpot
5 + 0 = 250.000 $
4 + 1 = 10.000 $
4 + 0 = 150 $
3 + 1 = 150 $
3 + 0 = 7 $
2 + 1 = 10 $
1 + 1 = $ 3
0 + 1 = $ 2Angenommen, der aktuelle Jackpot beträgt 1.000.000 USD (eine Million).
- Nehmen Sie nur einen Jackpot-Gewinner an, es sei denn, Ihre zufällige Ziehung zieht dieselbe Jackpot-Auswahl mehr als einmal (betrügen Sie?) .
- Angenommen, es sind keine Multiplikator- / kalifornischen Regeln im Spiel.
Details zur Herausforderung:
- Dies ist Code Golf, also gewinnt der kürzeste Code.
- Im Falle eines Unentschieden nehme ich die am höchsten bewertete Antwort. Ich weiß, dass dies etwas subjektiv ist, aber der Hauptpunkt ist immer noch die Punktzahl.
Beispiel:
Eingang:
0 2 4 23 38 46 23
1 17 18 22 23 30 40
2 2 5 24 37 45 23
3 4 23 38 40 50 9
4 2 4 23 38 46 17
5 5 16 32 33 56 46
Ausgabe:
4 - $250,000
3 - $7
2 - $3
Total Winnings: $250,010