Редагувати: Я нагороджу 100-репутаційною нагородою за перший вирішувач бонусної головоломки наприкінці питання!
Я додаю щедрості до питання лише тоді, коли з’явиться відповідь, оскільки цей щедрот не має терміну.
Враховуючи не зменшуваний список одноцифрових натуральних чисел, слід визначити, наскільки глибоко підземелля будуть викопувати цифри.
███ ███ A dungeon with 5 blocks removed and a depth of 3.
███ ███
███ ████
████████
Перед початком копання земля вирівнюється.
Кожна цифра може видалити рівно один грунт ґрунту знизу, але він повинен досягти цього положення поза підземеллям, і після його вилучення блок повинен покинути підземелля. При цьому цифра не може опускатися або підніматися більше, ніж її числове значення, на будь-якому горизонтальному кроці.
Для цифр використовується наступна стратегія копання:
- Цифра з найменшим значенням копається спочатку, а після цього наступним копачем завжди є наступне найменше значення від решти цифр.
- Першу цифру можна викопати в будь-якій позиції. (Вся земля однакова.)
- Наступні цифри завжди копаються в крайньому лівому стовпчику, де вже можна вийти та вийти. Якщо такого стовпця немає, вони починають викопувати новий стовпець праворуч від крайнього правого.
Наприклад, цифри 1 1 1 2 3 3
копають наступні підземелля (поетапна візуалізація цифрами, які позначають, яка цифра викопує цю позицію):
███1████ ███11███ ███11███ ███11███ ███11███ ███11███
████████ ████████ ███1████ ███1████ ███1████ ███13███
████████ ████████ ████████ ███2████ ███2████ ███2████
████████ ████████ ████████ ████████ ███3████ ███3████
████████ ████████ ████████ ████████ ████████ ████████
Пояснення для прикладу:
- Другий
1
не міг вилізти з єдиної наявної колони, якщо вона поглибить його до2
-глибокого, щоб він копав прямо до нього. - Третій
1
може викопати в крайньому лівому стовпчику, створивши2
глибокий стовпчик, оскільки він може переміститися в1
-глибокий стовпчик, а потім до рівня землі. - Наступний
2
і3
обидва можуть викопати в крайній лівій колонці. - Останній
3
не може копати в крайньому лівому стовпці, але може в наступному.
Вхідні дані
- Не зменшується список позитивних одноцифрових цілих чисел, принаймні один елемент.
Вихідні дані
- Єдине додатне ціле число, глибина побудованої підземелля.
Приклади
Введення => Виведення (з глибинами стовпців підземелля зліва направо як пояснення, яке не є частиною виводу)
[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])
Це код-гольф, тому найкоротший запис виграє.
Бонусна головоломка
Чи можете ви довести (або спростуєте), що стратегія, описана в розділі "Цифри використовують наступну стратегію для копання", завжди дає найглибший підземелля для даних цифр?