Ответ в Dyalog APL, поскольку вопрос был помечен APL
:
Оператор ранга удобен для подобных операций. Блок кода (+/÷≢)⍤1
будет принимать среднее ( сумма , деленное на длина , равно (+/÷≢)
) и применять его к строкам (ранг номер 1) в матрице. Пример:
names←'tom' 'dick' 'harry'
numbers←3 3⍴?⍨9
numbers
9 5 8
6 1 2
4 3 7
names,⍪(+/÷≢)⍤1⊢numbers
tom 7.333333333
dick 3
harry 4.666666667
РЕДАКТИРОВАТЬ из-за дополнительной информации
В NARS2000, чтобы найти имя с наибольшим средним значением с данными в указанном формате, вы можете использовать {⍺⌷⍨(⊢⍳⌈/)(+/÷≢)⍤1⊢⍵}
:
GRADES←3 4 ⍴ 98 34.5 78.9 34.7 22.3 33.9 23.8 24.11 100 89.3 92.6 87.9
NAMES←3 4 ⍴ 'JaneBob Mark'
f←{⍺⌷⍨(⊢⍳⌈/)(+/÷≢)⍤1⊢⍵}
NAMES f GRADES
Mark