Учитывая ввод списка блоков, которые нужно отбросить в определенных точках, выведите высоту результирующей «башни».
Лучший способ объяснить эту проблему - это на примере. Входными данными будет список из 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
Ответы:
CJam,
3430 байтВвод в виде массива в стиле CJam, вывод в виде строки цифр.
Запустите все тестовые случаи.
Вот два варианта другой идеи, но в настоящее время она на 2 байта длиннее:
источник
Python 3, 89
Попробуйте онлайн .
Функция принимает и возвращает список целых чисел.
источник
Рубин,
8887 байтПопробуйте онлайн.
Вдохновлен ответом grc, но на другом языке и чуть короче.
Объяснение:
источник
APL, 79 байт
Ввод в виде массива APL, вывод в виде массива APL цифр.
источник
{⊃{o←⍵↑⍨z←(≢⍵)⌈a←+/⍺⋄e←z↑(-a)↑⍺[1]⍴1⋄o+0⌈o-⍨e×e⌈.+e×o}/⌽(⊂⍬),↓⍵⍴⍨⌽2,.5×≢⍵}
(Боже мой, научись правильно пользоваться⍨
)⊃
и1↑
из-за этого вы даете предложения, которые приводят к тому, что обновленная программа дает неправильный результат, но я не покровительствую вам.0.5
Java 1,8,
351329 байтНе в восторге от этой первой попытки - я уверен, что двойная петля, и все эти Integer.valueOf могут быть добавлены в гольф еще немного.
Ungolfed
источник