Inilah teka-teki pemrograman untuk Anda:
Diberikan daftar pasangan string dan angka yang sesuai, misalnya [[A,37],[B,27],[C,21],[D,11],[E,10],[F,9],[G,3],[H,2]]
,, menampilkan daftar lain yang hanya memiliki string dengan cara berikut:
Jumlah total dari string apa pun harus sama persis dengan angka terkait dalam data input.
Tidak ada string yang harus diulang berdekatan dalam urutan, dan setiap string harus muncul dalam daftar output.
Pemilihan string selanjutnya harus dilakukan secara acak selama mereka tidak melanggar dua aturan di atas. Setiap solusi harus memiliki probabilitas yang tidak nol untuk dipilih.
Jika tidak ada kombinasi yang memungkinkan, hasilnya harus adil
0
.
Daftar input dapat diberikan dalam urutan apa pun (diurutkan atau tidak disortir), dan string dalam daftar mungkin panjang.
Output sampel untuk input sampel di atas 1
[A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,C,A,C,A,C,A,C,A,C,A,C,A,C,A,C,A,C,A,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,E,F,E,F,E,F,E,F,E,F,E,F,E,F,E,F,E,F,E,G,H,G,H,G]
Masukkan sampel 2:
[[A,6],[B,1],[C,1]]
Output untuk input kedua:
0
karena tidak ada daftar yang mungkin berdasarkan aturan.
Masukan sampel 3:
[[AC,3],[BD,2]]
output yang valid: [AC,BD,AC,BD,AC]
keluaran tidak valid: [AC,BD,AC,AC,BD]
Jika klarifikasi lebih lanjut diperlukan, tolong, jangan ragu untuk memberi tahu saya di komentar dan saya akan segera bertindak sesuai.
Ini adalah kode-golf , jadi kode terpendek dalam byte untuk setiap bahasa akan menang!