Bulgarian Solitaire adalah permainan pemain tunggal yang dipopulerkan oleh Martin Gardner dalam kolom matematika di Scientific American .
Anda memiliki N
kartu yang identik, dibagi menjadi beberapa tumpukan. Anda mengambil kartu dari setiap tumpukan dan membentuk tumpukan baru dengan kartu yang dilepaskan. Anda mengulangi proses ini sampai Anda mencapai keadaan yang sudah Anda lihat dan melanjutkan akan mengulangi loop.
Misalnya, Anda memiliki 8
kartu, terbagi menjadi tumpukan 5
dan tumpukan 3
. Kami menulis ukuran tumpukan di urutan menurun: 5 3
. Berikut transkrip permainan:
5 3
4 2 2
3 3 1 1
4 2 2
Pertama-tama Anda mengeluarkan kartu dari masing-masing tumpukan, meninggalkan tumpukan 4
dan 2
, dan tumpukan 2
pemberian yang baru dibuat 4 2 2
. Pada langkah berikutnya, penurunan ini 3 1 1
diikuti dengan tumpukan baru 3
. Akhirnya, langkah terakhir mengosongkan tumpukan ukuran 1
dan menghasilkan 4 2 2
yang sudah muncul, jadi kami berhenti.
Perhatikan bahwa jumlah ukuran tumpukan tetap sama.
Tujuan Anda adalah mencetak transkrip permainan dari konfigurasi awal yang diberikan. Ini adalah kode golf, byte paling sedikit menang.
Memasukkan
Daftar angka positif dalam urutan menurun mewakili ukuran tumpukan awal. Ambil input melalui STDIN atau input fungsi. Anda dapat menggunakan struktur seperti daftar yang Anda inginkan.
Anda tidak mendapatkan jumlah kartu N
sebagai input.
Keluaran
Cetak urutan ukuran tumpukan yang dilalui permainan Solitaire Bulgaria. Perhatikan bahwa pencetakan diperlukan, bukan kembali. Setiap langkah harus menjadi garisnya sendiri.
Setiap baris harus memiliki urutan angka positif dalam urutan menurun tanpa 0
's. Anda mungkin memiliki pemisah dan token awal dan akhir (misalnya, [3, 3, 1, 1]
). Angka-angka mungkin memiliki beberapa digit, sehingga harus dipisahkan entah bagaimana.
Cetak pemisahan tumpukan yang Anda lihat sampai dan termasuk mencapai pengulangan. Jadi, baris pertama harus menjadi input, dan baris terakhir harus merupakan pengulangan dari baris sebelumnya. Seharusnya tidak ada pengulangan lainnya.
Uji kasus
>> [1]
1
1
>> [2]
2
1 1
2
>> [1, 1, 1, 1, 1, 1, 1]
1 1 1 1 1 1 1
7
6 1
5 2
4 2 1
3 3 1
3 2 2
3 2 1 1
4 2 1
>> [5, 3]
5 3
4 2 2
3 3 1 1
4 2 2
>> [3, 2, 1]
3 2 1
3 2 1
>> [4, 4, 3, 2, 1]
4 4 3 2 1
5 3 3 2 1
5 4 2 2 1
5 4 3 1 1
5 4 3 2
4 4 3 2 1
v$input()$
denganQ
. 2. Jika Anda menyimpan daftar dalam urutan menurun, Anda tidak perluN
sama sekali:W!}QYQ~Y]Q=Q_S+fTmtdQ]lQ;Q