часть 1
Есть встроенный глагол {.
, чтобы получить первый элемент из массива, поэтому первая часть выполнена.
Часть 2
Для второй части мы можем объединить это с e.
, который, если дан вектор, возвращает таблицу, показывающую, где находятся элементы:
e. 1 3 1 1
1 0 1 1
0 1 0 0
1 0 1 1
1 0 1 1
Использовать первую строку (или столбец!):
{.e. 1 3 1 1
1 0 1 1
Суммируйте этот результат:
+/{.e. 1 3 1 1
3
Объединить
Объединение частей 1 и 2 в двухэлементный список достигается с помощью двоичного кода ,
(приложение):
(result of {.) , (result of sum of first row (or column!) of e.)
Я всегда обманываю и использую явный-неявный преобразователь (13 :
) для таких вещей:
13 : '({.y) , +/{. e.y'
{. , [: +/ [: {. e.
Но в этот момент вы можете заметить, что это немного сложновато с [:
(шапка) и ответ ЯМР чище.
Бонус за чтение до сих пор
Если вы возвращаете в штучной упаковке массив (используя ;
вместо ,
), вы можете расширить эту функцию для списков, отличных от чисел:
f =: 13 : '({.y) ; +/{. e.y'
f 'abracadabra'
┌─┬─┐
│a│5│
└─┴─┘