Вы любите смотреть классные интервальные съемки конструкций или другую огромную работу, выполненную за несколько минут? Давайте сделаем один здесь.
Мы будем смотреть на экскаваторный карьер, делая фотографии каждый день, чтобы увидеть весь прогресс. И ваша задача показать нам этот процесс!
Карьер определяется шириной его первого слоя.
Экскаватор определяется его способностью копать за один день.
вход
Ширина карьера. Целое число, всегда> = 1.
Скорость копания экскаватора. Целое число, всегда> = 1.
Выход
Прогресс рытья карьера на каждый день. Начинали с ровной нетронутой земли и заканчивали законченным карьером.
правила
В последний день может выкопаться меньше единиц, чем способен экскаватор. Чрезмерная работа нигде не будет использована, поэтому вы должны просто вывести полностью вырытый карьер.
Прогресс всех дней должен присутствовать в выходных данных одновременно. Вы не можете очистить или перезаписать прогресс предыдущего дня в выходных данных.
Трейлинг и ведущие новые строки для каждого выходного дня допустимы в любом разумном количестве.
Это код-гольф , поэтому сделайте ваш код максимально компактным.
Разъяснения
Работа начинается с ровной площадки. Длина отображаемой земли равна ширине карьера + 2. Таким образом, всегда будет один символ подчеркивания с обеих сторон карьера.
__________
Выкопанный карьер выглядит примерно так:
_ _
\ /
\ /
\ /
\/
И как это для нечетной ширины
_ _
\ /
\ /
\ /
V
Вот примеры развития карьера:
_ _______
V dug 1 unit
_ ______
\/ dug 2 units
_ ___
\___/ dug 5 units
_ _
\ __/ dug 10 units
\_/
Полный пример прогресса. Ширина карьера: 8. Скорость экскаватора: 4 единицы в сутки.
__________
_ _____
\__/
_ _
\______/
_ _
\ __/
\__/
_ _
\ /
\ __/
\/
_ _
\ /
\ /
\ /
\/
Cornercases
Экскаватор должен будет в последний день копать именно его возможности (скорость)
Width: 7, Speed: 3
Width: 10, Speed: 4
Сетчатка 0.8.2 ,
163156 байтПопробуйте онлайн! Объяснение:
Преобразуйте входные данные в одинарные. Это дает нам
W¶S
.Поменяйте местами входы и продублируйте ширину. Это дает нам
S¶W¶W
.Рассчитайте объем карьера. Это дает нам
S¶W¶V
.Объедините входные данные в одну строку. Это дает нам
S;W;V
.Рассчитайте сумму прогресса за каждый день на отдельной строке. Каждый день имеет формат
S;W;D
, гдеD
находится0
в первой строке и увеличивается сS
каждым днем, пока не достигнетV
.Удалить
S
и увеличитьW
на 2 в каждой строке. Это дает намG;D
на каждый день.Пока не
D
равен нулю, либо рытьD
илиG-2
от линии (так что первые и последние символы всегда остаются), перемещая глубину к следующей строке. Каждая строка имеет отступ на одну единицу больше>
предыдущей. Недавно вырытые линии также включают<
.Превратить отступ в пробелы, а следующие
_
в\
.Если a
<
следует за a,\
превратите его в aV
, если он следует за a,_
затем превратите его в a/
. Удалить все<
s и;
s.источник
Python 2 , 265 байт
Попробуйте онлайн!
источник
1+i+a
кi-~a
.sum(range(0,w+1,2))
может бытьw/2*(w/2+1)
t
может быть встроенным, что дает 257 байтов .JavaScript (Node.js) ,
329315307300301298285275260254 байтаПопробуйте онлайн!
объяснение
источник
w
нечетно.f=
), и вы можете сохранить другой байт, каррируя параметры (w=>s=>
).