Anak kecil saya punya mainan seperti ini:
Mainan ini terdiri dari 10 ember kecil yang dapat ditumpuk, yang akan kami beri nomor dari 1 (yang terkecil) hingga 10 (yang terbesar). Terkadang dia membuat tumpukan kecil dan mainan berakhir seperti ini:
Secara skematis kita dapat mewakili tumpukan seperti ini:
1 6
4 9 2 7
5 10 3 8
---------- <-- Floor
1 2 3 4 <-- Pile #
Atau, dengan kata lain:
[[4,5],[9,10],[1,2,3],[6,7,8]]
Set tumpukan ember ini mudah dipasang kembali untuk membangun kembali set asli (gambar pertama) hanya dengan secara berurutan menempatkan tumpukan ember yang lebih kecil di dalam tumpukan ember yang lebih besar:
1 1 6
2 2 7
1 6 3 6 3 8
4 9 2 7 4 9 7 4 9
5 10 3 8 5 10 8 5 10
---------- > [Pile 3 to 1] > ---------- > [Pile 4 to 2] > ---------- > [Pile 1 to 2] > Done!
1 2 3 4 1 2 3 4 1 2 3 4
Meskipun demikian, kadang-kadang anak saya mencoba membangun menara, atau membuang ember, dan tumpukan tersebut akhirnya menjadi tidak konsisten dan set aslinya tidak dapat dibangun kembali hanya dengan menempatkan satu tumpukan di dalam tumpukan lainnya. Contoh dari ini:
[[1,3,2],[4]] (the kid tried to build a tower by placing a bigger bucket
over a smaller one, we would need to reorder the buckets
first)
[[1,3,4],[2]] (the kid left aside an unordered bucket, we would need to remove
bucket #1 from pile #1 before restacking)
[[1,2,3],[5]] (the kid lost a bucket, we need to find it first)
Tantangan
Diberikan daftar daftar bilangan bulat yang mewakili satu set tumpukan ember, kembalikan nilai yang sebenarnya jika daftar tersebut mewakili kumpulan tumpukan yang mudah diulang kembali, atau kesalahan dalam hal lain.
- Input akan diberikan sebagai daftar daftar bilangan bulat, mewakili ember dari atas ke bawah untuk setiap tumpukan.
- Tidak akan ada tumpukan awal yang kosong (Anda tidak akan mendapatkan
[[1,2,3],[],[4,5]]
input). - Jumlah total ember dapat berupa apa pun dalam rentang bilangan bulat yang wajar.
- Anak saya hanya memiliki satu set ember sehingga tidak akan ada elemen rangkap.
- Anda dapat memilih dua nilai yang konsisten (dan koheren) untuk truey atau falsey.
- Bucket akan dilabeli dari # 1 hingga #N, menjadi
N
bilangan bulat terbesar dalam daftar bilangan bulat. Anak saya masih belum tahu konsep nol. - Anda dapat menerima input dalam format beralasan apa pun asalkan itu mewakili setumpuk ember. Tetapkan saja dalam jawaban Anda jika Anda mengubah cara Anda menerima input.
- Ini adalah kode-golf , jadi semoga program / fungsi terpendek untuk setiap bahasa menang!
Contohnya
Input: [[4,5],[9,10],[1,2,3],[6,7,8]]
Output: Truthy
Input: [[6,7,8,9,10],[1],[2],[3,4,5],[11,12,13]]
Output: Truthy
Input: [[2,3,4],[1],[5,6,7]]
Output: Truthy
Input: [[1,2],[5,6],[7,8,9]]
Output: Falsey (buckets #3 and #4 are missing)
Input: [[2,3,4],[5,6,7]]
Output: Falsey (bucket #1 is missing)
Input: [[1,3,4],[5,7],[2,6]]
Output: Falsey (non-restackable piles)
Input: [[1,4,3],[2],[5,6]]
Output: Falsey (one of the piles is a tower)