Saya memiliki banyak papan yang saya butuhkan untuk menumpuk di ruang sekecil mungkin. Sayangnya, papan jatuh jika saya menumpuk lebih dari 10 tinggi. Saya membutuhkan program untuk memberi tahu saya cara menumpuk papan untuk mengambil ruang horizontal sesedikit mungkin, tanpa menumpuk papan lebih dari sepuluh tinggi, atau meminta papan menggantung di ruang kosong.
Tugas Anda:
Tulis sebuah program atau fungsi, yang ketika diberi larik yang berisi panjang papan, menghasilkan ASCII sebagai cara untuk menumpuk papan untuk menghemat ruang horizontal sebanyak mungkin, tanpa menumpuk papan lebih dari 10 tinggi atau memiliki bagian apa pun dari setiap papan. papan nongkrong di ruang kosong. Seni ASCII Anda harus menunjukkan konfigurasi papan, dengan masing-masing ditampilkan menggunakan karakter yang berbeda. Akan ada maksimal 20 papan. Misalnya, jika inputnya [2,2,4,2,2,4,4,4], kemungkinan output adalah:
dhh
dgg
dff
dee
abc
abc
abc
abc
yang merupakan konfigurasi yang stabil (meskipun ini akan jatuh dalam ~ 0,1 detik dalam kehidupan nyata).
Memasukkan:
Array berisi hingga 20 bilangan bulat, yang menunjukkan panjang papan.
Keluaran:
Seni ASCII menunjukkan konfigurasi papan, seperti diuraikan di atas.
Kasus uji:
Perhatikan bahwa mungkin ada solusi lain untuk kasus uji, dan karakter yang ditunjukkan untuk setiap papan mungkin berbeda.
[12,2,2,2,3,4,4,8,8] -> ffgghhiii
ddddeeeeeeee
bbbbbbbbcccc
aaaaaaaaaaaa
[4,4,4,4,4,4,4,4,4,4,4,4] -> llll
aaaa
cfghk
cfghk
cfghk
cfghk
debij
debij
debij
debij
[4,4,4,4,4,4,3,3,3,2,2,2,1] -> jjml
iiil
hhhk
gggk
ffff
eeee
dddd
cccc
bbbb
aaaa
Mencetak:
Ini adalah kode-golf , skor terendah dalam byte yang menang