Учитывая непустой список непустых рядов чисел, вычислите мудрую сумму столбца , который является другим списком, у которого есть длина самой длинной входной строки. Первая запись в списке вывода - это сумма всех первых входов входных строк, вторая - сумма всех вторых элементов (если есть) и т. Д. Я думаю, что следующий пример объяснит это лучше:
Input: {[1,2,3,4],[1],[5,2,3],[6,1]}
Computation: [1,2,3,4]
+ . . .
[1]. . .
+ + + .
[5,2,3].
+ + . .
[6,1]. .
= = = =
Output: [13,5,6,4]
Тестовые случаи
{[0]} -> 0
{[1],[1,1,1,1]} -> [2,1,1,1]
{[1],[1,2],[1,2,3],[1,2,3,4]} -> [4,6,6,4]
{[1,6,2,-6],[-1,2,3,5]} -> [0,8,5,-1]
Ответы:
Желе , 1 байт
Попробуйте онлайн! или проверьте все контрольные примеры .
Как это работает
Атом суммы
S
является сокращением для+/
, которое выполняет сокращение путем сложения.Быстрый
/
сокращается по внешнему измерению, поэтому он вызывает ссылку для элементов ввода. Здесь элементами являются строки.Атом сложения
+
векторизуется, поэтому добавление двух векторов строк выполняет поэлементное сложение. Когда аргументы имеют разную длину, элементы более длинного аргумента, которые не имеют аналога в более коротком, остаются неизменными.В общем, с нерегулярной матрицей в качестве аргумента,
S
вычисляется сумма по столбцам, пропуская пропущенные записи в более коротких строках.источник
S€
, тогда?/
не векторизуется; он просто применяет соответствующую диаду ко всем элементам своего аргумента.Python 2 ,
4745 байтСпасибо @vaultah за игру в 2 байта!
Попробуйте онлайн!
источник
Perl 6 , 23 байта
источник
Mathematica, 15 байт
источник
Haskell, 34 байта
Попробуйте онлайн! Использование:
источник
import
как он уже съел столько байтов: DCJam ,
75 байтов2 байта благодаря Деннису!
Это определяет анонимный блок, который принимает список списков, например
[[1 2 3 4] [1] [5 2 3] [6 1]]
, и заменяет его списком[13 5 6 4]
.Попробуйте онлайн! Или проверьте все тестовые случаи .
объяснение
источник
MATL , 3 байта
( MATL не знает, что множественное число от "вол" - "волы" ... )
Input представляет собой массив ячеек числовых векторов строк в том же формате, что и в тексте запроса:
Попробуйте онлайн! Или проверьте все тестовые случаи .
источник
JavaScript (ES6),
5148 байтСохранено 3 байта благодаря ETHproductions
Контрольные примеры
Показать фрагмент кода
источник
reduce
?a=>a.reduce((l,r)=>r.map((e,i)=>e+(l[i]||0)))
только 45 байтов.Чудо , 11 байт
Транспонировать и отображать с функцией суммы. Использование:
источник
C ++ 14, 130 байт
Как называется неназванная общая лямбда:
Требуется
C
быть похожимvector<vector<int>>
и возвращать значение,r
чтобы быть похожимvector<int>
(должно быть в порядке в соответствии с мета ).Ungolfed & использование:
источник
Pyth - 4 байта
Попробуйте это онлайн здесь .
источник
Haskell,
61 4140 байтСпасибо @Laikoni за -20 байт, @nimi за -1 байт!
Объяснение: Это просто рекурсивное суммирование первых элементов списка, также имеющее дело с отбрасыванием пустых списков на каждом промежуточном шаге:
источник
(sum$sum.(take 1)<$>l)
наsum[h|h:_<-l]
и(f$filter(/=[])$drop 1<$>l)
наf[t|_:t<-l,t>[]]
.[h|h:_<-l]
!f[t:u|_:t:u<-l]
.J 5 байт
Принимает ввод в виде списка списков.
Контрольные примеры
источник
Дьялог АПЛ , 3 байта
+⌿
сумма столбцов↑
смешанный аргумент (список списка, сложенный в матрицу, заполнение нулями)Попробуй APL онлайн!
источник
Пайк, 4 байта
Попробуй это здесь!
источник
Java 8, 124 байта
это лямбда-выражение для
Function< int[ ][ ], int[ ] >
он берет наибольшую длину массива из входных данных, создает новый массив такого размера, а затем записывает суммы каждого столбца в массив.
источник
Октава, 69 байт
источник
R
10597 байтЭто принимает на вход
list
объект, называемыйw
в форме:Выводит сумму по столбцам:
[1] 3 4 3 4
Это решение довольно долго для меня. R имеет особенность перерабатывать, когда вы пытаетесь связать векторы различной длины. Например :
b
используется один раз, чтобы соответствовать, поэтому я начинаю со списка.Программа корректирует длину всех элементов списка как один из самых длинных, связывает элементы и вычисляет сумму по столбцам. Регулировка длины производит
NA
s, которые игнорируютсяsum
.-8 байт благодаря @Jarko Dubbeldam!
источник
colSums(a,na.rm=T)
сохраняет несколько байтов.na.rm=T
вn=T
.PHP, 63 байта
вызов в браузере с GET параметрами в качестве списка входов.
Пример:
script.php?a[]=1&a[]=2&a[]=3&a[]=4&b[]=1&c[]=5&c[]=2&c[]=3&d[]=6&d[]=1
(имена массивов игнорируются, поэтому вы можете называть их по своему усмотрению.)
Попробуйте эту функцию для тестирования:
или используйте
http_build_query($array,a)
для преобразования данного массива массивов в параметры GET.источник
Clojure, 70 байт
Основной вложенный цикл.
источник
Japt, 5 байт
Проверьте это онлайн!
U
является входным массивом, аz
при массивах поворачивает массив по часовой стрелке на 90 градусов. Следовательно,становится
(Интервал добавлен только для отображения.)
mx
затемm
Aps путем суммирования (x
), что дает желаемый результат:[13,5,6,4]
.источник