Saya baru saja mengirimkan jawaban untuk pertanyaan ini , dan kemudian melihat beberapa berita tentang kegilaan lotere MegaMillions yang sedang terjadi saat ini di AS. Artikel berita ini menyatakan bahwa seseorang membeli tiket senilai $ 20.000 sekaligus (itu adalah 20.000 set angka untuk konfirmasi!) Untuk mencoba dan menguji keberuntungan mereka.
Itu membuat saya berpikir tentang bagaimana seseorang dapat dengan cepat menentukan apakah mereka akan memenangkan hadiah, bukan hanya jackpot, pada banyak tiket yang telah mereka beli.
Tantangannya adalah ini:
Gambaran:
Tulis fungsi atau program yang akan menerima serangkaian angka sebagai argumen (STDIN, atau baca dari file, pilihan Anda), dan kembalikan nomor tiket dengan setidaknya pembayaran minimum yang diberikan.
Rincian Kode:
- Input akan terdiri dari serangkaian garis, satu untuk setiap tiket yang dibeli. Angka yang menang akan diawali dengan 0, sedangkan angka yang ditarik akan diawali dengan angka yang bertambah mulai dari 1. (lihat contoh)
- Input harus berupa kumpulan angka yang benar-benar acak setiap kali, termasuk pengundian dan nomor pemenang.
- Input harus menerima jumlah tiket n di mana 1 <= n <= 20.000. (Asumsikan no 0 tiket berjalan.)
- Setiap baris input akan memiliki 7 angka per baris. Satu untuk awalan yang disebutkan di atas, 5 untuk bola standar, dan satu tambahan untuk bola 'cocok'. (lihat Detail Lotto di bawah)
- Input dapat dibatasi dengan cara apa pun yang Anda inginkan (spasi putih, titik koma, dll.)
- Output harus berupa daftar semua undian yang menang dan jumlah yang menang. (Jadi, Anda tahu mana yang harus diserahkan.)
- Daftar output harus dipesan berdasarkan jumlah yang menang. (Siapa yang peduli jika Anda memenangkan $ 2 pada satu tiket jika Anda juga memenangkan $ 10.000 pada tiket lainnya ???)
- Ketika lebih dari satu tiket memenangkan jumlah yang sama, urutan tiket tersebut tidak relevan.
- Output juga harus memberikan daftar jumlah total yang dimenangkan.
Detail Lotto:
- Aturan standar untuk game MegaMillions akan berlaku, karena itulah yang sangat panas saat ini.
- Undian terdiri dari enam angka dari dua kelompok angka yang terpisah - lima angka yang berbeda dari 1 hingga 56 dan satu angka (bola pertandingan) dari 1 hingga 46.
- Jackpot dimenangkan dengan mencocokkan semua enam angka yang menang dalam satu seri.
Penghargaan untuk kemenangan non-jackpot diberikan sebagai berikut (lihat gambar di bawah).
(Utama) + (Pertandingan) = (Pembayaran)
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 = $ 2Asumsikan jackpot saat ini adalah $ 1.000.000 (satu juta).
- Asumsikan hanya satu pemenang jackpot, kecuali jika undian acak Anda menarik jackpot yang sama memilih lebih dari satu kali (apakah Anda selingkuh?) .
- Asumsikan tidak ada pengganda / aturan California sedang dimainkan.
Detail Tantangan:
- Ini kode golf, jadi kode terpendek menang.
- Jika terjadi seri, saya akan mengambil jawaban terunggul tertinggi. Saya tahu ini agak subyektif, tetapi poin utamanya masih skor.
Contoh:
Memasukkan:
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
Keluaran:
4 - $250,000
3 - $7
2 - $3
Total Winnings: $250,010
Jawaban:
Python, 239 karakter
Dengan asumsi nomor input dipisahkan koma.
sumber
1e4
VBA (
660535 Karakter)Dengan asumsi pembatas adalah spasi (
" "
) ...sumber
Select Case
menjadiChoose()
Choose()
... Ini adalah hal yang bagus untuk dikirim ke codegolf.stackexchange.com/questions/5175/…Debug.?r& "Total Winnings:" &Format(q,"$#,##0")
dan menghapus spasi putih dalam gabunganFor i=1 To 5
atau seperti lingkaran yang dapat dikondensasikan keFor I=1To 5
Javascript, 353 Bytes
ungolfed:
Mungkin bisa menjatuhkan beberapa karakter dari itu: D
sumber