Ваша задача сегодня состоит в том, чтобы взять массив, разбить его на куски и добавить эти куски.
Вот как это работает: вашей программе или функции будет задан массив целых чисел a
и размер фрагмента L
. Массив должен быть разбит на массивы по размеру L
, если длина массива не делится, L
тогда к массиву должны быть добавлены 0, чтобы он был равномерно делим. Как только массив будет разбит на части, все порции должны быть добавлены вместе поэлементно. Полученный массив затем выводится.
Вы можете предположить, L
что больше 0, и это a
непусто. Вы не можете сделать предположение, что a
содержание положительное.
Вот пример:
[1,2,3,4,5,6,7,8], 3 => [1,2,3]+[4,5,6]+[7,8,0] => [1+4+7,2+5+8,3+6+0] => [12,15,9]
Тестовые случаи:
Array Length Output
[1] 1 [1]
[1] 3 [1,0,0]
[0] 3 [0,0,0]
[1,2] 3 [1,2,0]
[1,2] 1 [3]
[-1,1] 2 [-1,1]
[-7,4,-12,1,5,-3,12,0,14,-2] 4 [12,-1,0,1]
[1,2,3,4,5,6,7,8,9] 3 [12,15,18]
Это код-гольф , побеждает меньше байтов!
Ответы:
MATL , 4 байта
Попробуйте онлайн!
Первый фрагмент кода MATL, который я написал! Принимает два ввода,
a
как вектор строки (через запятую) иl
как число. Работает бытьисточник
Python 3 ,
676542 байтаИспользует тот факт, что сумма пустого массива равна 0
Попробуйте онлайн!
источник
Желе ,
76 байт1 байт благодаря Денису.
Попробуйте онлайн!
источник
Ż¡sS
(эквивалентно0;$¡sS
).Java 7, 86 байт
Никаких причудливых сгибов или матриц, просто хорошая старомодная
for
петля :)Попробуйте это на Ideone
Подкладка:
источник
Python 2 , 49 байт
Попробуйте онлайн!
источник
JavaScript (ES6), 51 байт
Принимает ввод в синтаксисе Карринг:
f([1,2])(3)
.Тестовые случаи
Показать фрагмент кода
источник
(a,n,o=[])=>a.map((v,i)=>o[i%n]=~~o[i%n]+v)&&o
a=>n=>a.map((v,i)=>o[i%=n]=~~o[i]+v,o=[])&&o
но это не добавляет требуемого заполнения нулями.f=
должен быть частью вашего персонажа.f=
это не нужно. Вот один пост на мета об этом.Mathematica, 27 байт
Mathematica почти имела встроенную функцию для этогоПопробуйте на Wolfram Sandbox
использование
объяснение
источник
Mathematica, 58 байт
вход
Выход
источник
Perl 6 , 36 байт
Попробуй это
Expanded:
источник
APL (Дьялог) , 22 байта
Принимает в
l
качестве левого аргумента иa
правого аргумента.Попробуйте онлайн!
{
…}
Анонимная функция где⍺
левый аргумент (l
) и⍵
правый аргумент (a
).≢⍵
счет (длина)a
⍺÷⍨
разделить наl
⌈
потолок (вверх)⍺,⍨
Appendl
s←
хранить вs
(для с HAPE)×/
продукт этого (то есть, сколько нужно целых чисел)⍵↑⍨
взять столько целых чиселa
(заполнение нулями)s⍴
г eshape к формеs
(строки, столбцы)+⌿
столбчатые суммыисточник
Haskell ,
5949 байтовПопробуйте онлайн!
источник
Perl 6 , 40 байт
Попробуйте онлайн!
Если вам нравится номер 42, вы можете поменять местами
*
для∞
. Это сделает это 42 байтами :—).Пояснение :
Волшебство, стоящее за последним «сложением», заключается в том, что оператор является «уменьшить с помощью z +». Между прочим, это сломалось бы, если бы мы использовали его только в списке с 1 списком внутри, но этого никогда не произойдет, если исходный список будет непустым (из-за строки, идущей от второй к последней). Также обратите внимание, что в итоге мы берем не только вещи
@a
, но и@a * $l
предметы. К счастью, мы добавили только нули, которые не повлияют на конечный результат.источник
Шелуха , 9 байт
Попробуйте онлайн!
объяснение
источник
Pyth , 8 байт
Попробуй это здесь!
Pyth , 10 байт
Попробуй это здесь!
объяснение
Объяснение № 1
Объяснение № 2
источник
sM.TcEQ
[1], 3
, и это дало бы[1]
вместо[1, 0, 0]
.J ,
1512 байтПопробуйте онлайн!
объяснение
источник
[:+/-@[[\]
:?05AB1E , 8 байтов
Попробуйте онлайн!
источник
05AB1E , 8 байтов
Попробуйте онлайн!
источник
¹
vs²
)SOGL V0.12 , 14 байтов
Попробуй здесь! или Попробуйте все контрольные примеры. это написано как безымянная функция и ожидает
chunk length; array
в стеке.Объяснение:
источник
F
нужен код «Попробуй здесь»?f=a=>a+2
f=
F\n
05AB1E , 12 байтов
Попробуйте онлайн!
объяснение
источник
Mathematica, 43 байта
источник
Clojure , 42 байта
Попробуйте онлайн!
источник
R ,
6257 байт-5 байт благодаря пользователю 2390246
Попробуйте онлайн!
Обновлено, поскольку он больше не должен обрабатывать пустой случай.
дополняет
a
нулями, создает матрицуl
строк, а также вычисляет и возвращает суммы строк.источник
С накоплением , 24 байта
Попробуйте онлайн!
объяснение
источник
Java (OpenJDK 8) , 64 байта
Попробуйте онлайн!
источник
Japt , 7 байт
Чувак, я слишком долго боролся с неправильным методом Джапта, пытаясь заставить его работать на
[1], 3
тестового примера в разумном количестве байтов!Попытайся
объяснение
Неявный ввод массива
U
и целого числаV
.Создайте массив целых чисел от и
0
доV-1
каждого из них через функцию сX
текущим элементом.Возьмите каждый
V
элементU
, начиная с индексаX
.Уменьшите этот массив путем сложения.
источник
С, (GCC)
10186 байтПопробуйте онлайн!
использование
Обратите внимание, что вы должны передать длину массива (ов) и новый динамический массив в куче (м).
источник
PowerShell , 62 байта
Попробуйте онлайн!
Мы берем входные данные
$a
Rray и$l
Ength. Затем цикл от1
до$l
. На каждой итерации мы устанавливаем значение помощника$y
на единицу меньше текущего числа (это потому, что PowerShell 0-indexes, а$l
ength находится в 1-indexing). Затем мы устанавливаем нашу производительность$o
в0
и повторяем цикл до$l
. Каждую внутреннюю итерацию мы просто накапливаем в$o
соответствующем проиндексированном$a
элементе Rray. Это использует тот факт, что индексирование после конца массива возвращает$null
и0 + $null = 0
.Как только внутренний цикл завершен, мы выводим
$o
и переходим к следующему фрагменту. Различные выходы остаются в конвейере, а вывод через неявноеWrite-Output
происходит после завершения программы.источник
Perl 5 , 44 + 1 (-a) = 45 байт
Попробуйте онлайн!
Редактировать: исправил случай, когда запрашиваемая длина была меньше, чем входной массив
источник
Шелуха , 10 байт
Попробуйте онлайн!
Ungolfed / Пояснение
источник
Scala 2.12.2 , 80 байт
Это немного короче, чем решение Java.
источник