Если вы не возражаете представить свою (зубчатую) матрицу в виде массива массивов в JSON, то следующее (а) ответит на вопрос, и (б) может предложить подход на других языках программирования. Ради (б) я приложил определение «комбинации», которое представлено как встроенное в jq 1.5.
См. https://stedolan.github.io/jq для получения дополнительной информации о jq.
Программа:
combinations | add
Поскольку программа настолько проста, она легко может быть вызвана из командной строки. Вот стенограмма (где $ обозначает среду Mac или Linux или аналогичный):
$ jq 'combinations|add'
[[2, 3],
[4, 1, 6],
[7, 8] ]
Выход:
13
10
15
14
11
16
14
15
11
12
16
17
Приложение:
def combinations:
if length == 0 then []
else .[0][] as $x
| (.[1:] | combinations) as $y
| [$x] + $y
end ;
Здесь "комбинации" производит поток. В некоторых других языках было бы легче создать массив. Например, в рубине:
def combinations(ary)
if ary.length == 0
[[]]
else
ans=[]
ary[0].each { |x| combinations(ary[1..-1]).each {|y| ans << [x] + y } }
ans
end
end
Где именно делает "Макс" часть приходят? – user2357112
@ user2357112 ups, я удаляю 'max' из вопроса. – rel1x
Как вы можете видеть из вашего объяснения, вам нужно пройти через все массивы (это не совсем матрица) и вычислить суммы. –