Представлено в честь APL как интерактивного инструмента, которому в этом году исполняется 50 лет
Задний план
Кен [Айверсон] представил свою работу « Формализм в языках программирования» в августе 1963 года на рабочей конференции по механическим языковым структурам, Принстон, штат Нью-Джерси. Список участников конференции полон известных и скоро известных имен, а также нескольких будущих лауреатов премии Тьюринга. (Бэкус, Карри, Дейкстра, Флойд, Айверсон, Ньюэлл, Перлис, Уилкс). В документе также записано обсуждение, которое состоялось после презентации, завершившейся обменом между Кеном и [Эдсгером] Дейкстрой , в котором ответ Кена на вопрос Дейкстры был однорядным.
Вызов
Как бы вы представили более сложную операцию, например, сумму всех элементов матрицы M , равных сумме соответствующих индексов строк и столбцов?
Напишите фрагмент или выражение (нет необходимости в полной программе или функции), чтобы вычислить сумму каждого элемента в данной целочисленной матрице, которая равна сумме его индексов. Или, как говорит FryAmTheEggman: для данной матрицы M с элементами a ij возвращают сумму каждого a ij, где a ij = i + j.
Вы можете предположить, что матрица уже находится в переменной или ячейке памяти, или вы можете принять ее в качестве аргумента или ввода. Вы можете использовать 0 или 1 на основе индексов.
Контрольные примеры
0
для пустой матрицы
2
0
для 0 на основе индексов или 2
для 1 на основе
1 5 2
9 4 2
5 9 6
2
для 0 на основе или 10
для 1 на основе
0 3 0 4
0 4 1 4
4 3 1 2
-2 4 -2 -1
11
3 -1 3 3
3 -1 3 1
6
для 0 на основе или 3
для 1 на основе
Анекдот
Ответ Айверсона был ++ / ( M = ⍳ ¹ ⨢ ⍳ ¹) // M , что недопустимо ни в обозначении Айверсона, как определено в языке программирования , ни в том, что в итоге стало APL. В обозначениях Айверсон, было бы + / ( М = ⍳ ¹ ( μ ( М )) ⨢ ⍳ ¹ ( ν ( М ))) / М . В самых первых версиях APL это было +/(,M=(⍳1↑⍴M)∘.+⍳1↓⍴M)/,M
.