Учитывая ввод списка блоков, которые нужно отбросить в определенных точках, выведите высоту результирующей «башни».
Лучший способ объяснить эту проблему - это на примере. Входными данными будет список из 2n целых чисел, представляющих n блоков. Первое целое число - это позиция x блока с индексами 0, а второе - ширина блока. Например, ввод 2 4
представляет блок (координаты x помечены ниже):
####
0123456789
Теперь, скажем, вход 2 4 4 6
. То есть один блок при x = 2 с шириной 4 и один при x = 4 с шириной 6:
######
####
Обратите внимание, что блоки a.) Всегда «падают» с самой вершины башни, а блоки b.) Никогда не «падают» (т.е. они всегда будут балансировать). Итак, вход
2 4 4 6 12 1
представляет:
######
#### #
Обратите внимание, что последний блок упал полностью на «землю».
Ваш конечный результат должен быть максимальная высота башни при каждом значении х до наибольшего. Следовательно, ввод 2 4 4 6 12 1
должен привести к выводу
0011222222001
:
######
#### #
0011222222001
Входные данные могут быть представлены в виде строки, разделенной пробелами / запятыми, массива целых чисел или аргументов функции / командной строки. Позиции блока (значения x) всегда будут целыми числами 0 или больше, ширина всегда будет целым числом 1 или больше, и всегда будет хотя бы один блок.
Выходные данные могут быть представлены в виде одной строки, разделенной нечисловыми символами (например "0, 0, 1, ..."
), одной строкой, в которой перечислены все цифры (например,
"001..."
максимальная высота гарантируется равной 9 или менее), или массивом целых чисел.
Поскольку это код-гольф , победит самый короткий код в байтах.
Тестовые случаи:
In Out
---------------------------------------------------------
2 4 4 6 12 1 0011222222001
0 5 9 1 6 4 2 5 1133333222
0 5 9 1 2 5 6 4 1122223333
0 5 2 5 6 4 9 1 1122223334
20 1 20 1 20 1 00000000000000000003
5 5 000011111
0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 4 123456789999