Ini adalah pelajaran matematika yang agak rumit tapi sangat menarik (dikenal sebagai "meliput masalah" ),
Dan saya ingin bantuan Anda untuk mengimplementasikannya.
Bayangkan sebuah permainan lotere, di mana setiap tiket harus memilih 5 angka acak dalam satu set 50 angka (dari 1 hingga 50).
Sangat mudah untuk mengetahui probabilitas tiket yang menang, atau probabilitas untuk memiliki 1, 2, 3 atau 4 angka yang baik.
Juga cukup mudah untuk "menghasilkan" semua tiket yang memiliki angka 1, 2, 3, 4 yang baik.
Pertanyaan saya (dan tantangan kode) terkait dengan ini, tetapi sedikit berbeda:
Saya ingin membeli beberapa tiket lotre (sesedikit mungkin), seperti setidaknya satu tiket saya memiliki 3 angka bagus.
Tantangan
Tujuan Anda adalah untuk mengimplementasikan solusi umum (sebagai program atau hanya fungsi), seperti ini, dalam bahasa apa pun:
// Input: 3 prameters
min_lottery_tickets(total_numbers_to_choose_from, how_many_numbers_to_choose, how_many_good_numbers_i_want)
Untuk contoh di atas, seseorang hanya perlu menelepon:
min_lottery_tickets(50, 5, 3)
dan program akan menghasilkan set tiket terkecil untuk dimainkan untuk mencapai tujuan ini.
Contoh:
min_lottery_tickets(10, 5, 2)
akan menghasilkan 7 tiket, seperti yang:
1 2 3 4 5
5 6 7 8 9
10 1 2 6 7
10 3 4 8 9
3 4 6 7 8
1 2 3 8 9
1 4 9 5 10
karena tiket semacam itu cukup untuk mencakup sepasang nomor dari 1 hingga 10.
Keluaran
Teks, satu baris per tiket, tabulasi atau spasi antar angka
yang menang
Program yang paling efisien menang (yaitu program yang menghasilkan tiket paling sedikit untuk parameter di atas):
min_lottery_tickets(50, 5, 3)
Terima kasih!
Jawaban:
Saya tahu ini tidak optimal , tapi ini kode di node.js:
Beberapa contoh hasil:
lain:
lain:
sumber
min_lottery_tickets(10, 5, 2)
menghasilkan lebih banyak solusi daripada OP.