Вступление
Это журнал длиной 5:
#####
Я хочу сложить кучу этих бревен друг на друга. Как я это делаю, я перемещаю новый журнал на самый верхний справа и прекращаю скольжение, когда их левый или правый концы совпадают (не спрашивайте почему). Если новый журнал длиннее, он перемещается полностью до левого конца самого верхнего журнала:
######## <-
#####
Если он короче, он скользит только до тех пор, пока их правые концы не выровняются:
###### <-
########
#####
Когда я добавляю больше журналов в кучу, их позиции определяются текущим самым верхним журналом:
##
######
###
####
##
######
########
#####
Это выглядит физически невозможно, но давайте представим, что это работает.
Задание
Ваш ввод должен быть непустым списком натуральных чисел, представляющих длины моих журналов. Крайний левый номер - это первое бревно, которое я положил в кучу, так что оно заканчивается внизу. В приведенном выше примере вход будет [5,8,6,2,4,3,6,2]
. Для каждого столбца результирующей стопки вы получите количество журналов, которые пересекают этот столбец. В приведенном выше примере правильный вывод будет [2,2,3,3,3,2,4,6,3,3,1,2,2]
.
Правила и оценки
Ввод и вывод могут быть в любом разумном формате. Вывод может содержать только положительные целые числа, то есть он не должен иметь начальных или конечных 0
s. Применяются нормальные правила игры в код: вы можете написать полную программу или функцию, выигрывает наименьшее количество байтов, а стандартные лазейки запрещены.
Контрольные примеры
[1] -> [1]
[4] -> [1,1,1,1]
[3,2] -> [1,2,2]
[2,3] -> [2,2,1]
[2,2,2] -> [3,3]
[2,3,2] -> [2,3,2]
[3,2,3] -> [1,3,3,1]
[1,3,2,2,1,3,1] -> [2,3,5,1,2]
[4,3,4,2,4,3,4,2] -> [1,3,3,5,5,3,4,2]
[5,8,6,2,4,3,6,2] -> [2,2,3,3,3,2,4,6,3,3,1,2,2]
[5,10,15,1,1,1,1,1,2] -> [3,3,3,3,3,2,2,2,2,2,1,1,1,1,7,1]
[13,12,2,10,14,12] -> [1,2,2,2,2,2,2,2,2,2,2,5,5,3,3,3,3,3,3,3,3,2,2,2,2]
[12,14,3,6,13,1,1] -> [2,2,2,2,2,2,2,2,2,2,2,5,4,4,2,2,2,1,1,1,1,1,1,3]
[7,5,12,5,1,10,14,5] -> [1,1,3,3,3,3,3,1,1,2,2,2,2,5,2,2,2,2,2,2,2,2,3,2,2,2,2]
[14,5,1,3,12,6,2,2,1,7,9,15] -> [1,1,1,1,1,1,1,1,1,2,2,2,2,5,2,2,1,1,1,2,2,2,2,4,8,3,3,3,3,3,3,2,2,1,1,1,1,1,1]
Ответы:
Желе ,
1816 байтов-2 байта, подсказанные помощью из миль
Может быть, есть более быстрый способ использовать математику, а не конструкцию, как это делает?
Попробуйте онлайн! или посмотрите набор тестов .
Как?
источник
IN»0+\0;;"x@€0,1S
Желе ,
1913 байтПопробуйте онлайн!
Сохранено 2 байта благодаря @Jonathan Allan.
объяснение
источник
Python 3 ,
114109 байтРедактировать: 5 байтов сохранено благодаря @ Mr.Xcoder
Попробуйте онлайн!
источник
Шелуха , 16 байт
Попробуйте онлайн!
объяснение
источник
Perl 5 , 64 + 1 (
-a
) = 65 байтПопробуйте онлайн!
источник
Mathematica,
76605857 байтПопробуйте это на Wolfram Sandbox
источник
Котлин 1,1,
113103 байтаукрашенный
Тестовое задание
источник