Sunting: Saya akan memberikan hadiah 100-reputasi untuk pemecah pertama dari teka-teki bonus di akhir pertanyaan!
Saya akan menambahkan hadiah ke pertanyaan hanya ketika jawabannya muncul karena hadiah ini tidak memiliki batas waktu.
Diberi daftar bilangan bulat positif satu digit yang tidak berkurang, Anda harus menentukan seberapa dalam penjara bawah tanah akan digali.
███ ███ A dungeon with 5 blocks removed and a depth of 3.
███ ███
███ ████
████████
Sebelum dimulainya penggalian, tanahnya datar.
Setiap digit dapat menghapus tepat satu blok tanah dari bawahnya sendiri tetapi harus mencapai posisi itu dari luar ruang bawah tanah dan setelah itu dihapus blok harus meninggalkan ruang bawah tanah. Saat melakukannya, angka tidak dapat turun atau naik lebih dari nilai numeriknya pada langkah horizontal apa pun.
Digit menggunakan strategi berikut untuk menggali:
- Digit dengan nilai terkecil menggali pertama dan setelah itu penggali berikutnya selalu merupakan nilai terkecil berikutnya dari sisa digit lainnya.
- Digit pertama dapat digali di posisi mana pun. (Semua tanah adalah sama.)
- Digit berikut selalu menggali di kolom paling kiri yang sudah mulai di mana mereka bisa pergi dan keluar. Jika tidak ada kolom seperti itu mereka mulai menggali kolom baru di sisi kanan yang paling kanan.
Misalnya digit 1 1 1 2 3 3
akan menggali penjara bawah tanah berikut (visualisasi langkah demi langkah dengan angka yang menandai jenis digit mana yang menggali posisi itu):
███1████ ███11███ ███11███ ███11███ ███11███ ███11███
████████ ████████ ███1████ ███1████ ███1████ ███13███
████████ ████████ ████████ ███2████ ███2████ ███2████
████████ ████████ ████████ ████████ ███3████ ███3████
████████ ████████ ████████ ████████ ████████ ████████
Penjelasan untuk contoh:
- Yang kedua
1
tidak bisa memanjat keluar dari satu-satunya kolom yang tersedia jika itu akan memperdalamnya untuk2
-deep sehingga menggali tepat untuk itu. - Yang ketiga
1
dapat menggali di kolom paling kiri membuat kolom2
-deep karena dapat pindah ke1
kolom -deep dan kemudian ke permukaan tanah. - Berikutnya
2
dan3
keduanya dapat menggali di kolom paling kiri. - Yang terakhir
3
tidak bisa menggali di kolom paling kiri tetapi bisa di yang berikutnya.
Memasukkan
- Daftar bilangan bulat satu digit positif yang tidak berkurang dengan setidaknya satu elemen.
Keluaran
- Integer positif tunggal, kedalaman ruang bawah tanah yang dibangun.
Contohnya
Input => Output (dengan kedalaman kolom dungeon dari kiri ke kanan sebagai penjelasan yang bukan bagian dari output)
[3] => 1
(column depths are [1])
[1, 1, 1, 2, 3, 3] => 4
(column depths are [4, 2])
[1, 1, 1, 1, 1, 1, 1, 1] => 3
(column depths are [3, 2, 2, 1])
[1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5] => 11
(column depths are [11, 6, 2])
[1, 1, 1, 1, 1, 2, 2, 9, 9, 9] => 7
(column depths are [7, 2, 1])
[2, 2, 2, 2, 2, 5, 5, 5, 7, 7, 9] => 9
(column depths are [9, 2])
[1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5] => 10
(column depths are [10, 5])
[1, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 5, 5, 5, 5, 7, 7, 9] => 13
(column depths are [13, 5])
[1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9] => 13
(column depths are [13, 5])
[1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9] => 21
(column depths are [21, 12, 3])
Ini adalah kode-golf sehingga entri terpendek menang.
Teka-teki bonus
Bisakah Anda membuktikan (atau menyangkal) bahwa strategi yang dijelaskan dalam bagian "Digit menggunakan strategi berikut untuk menggali" selalu memberikan ruang bawah tanah terdalam untuk digit yang diberikan?
sumber