为纪念APL成为今年50岁的互动工具而颁发
背景
肯·艾弗森(Ken [Iverson])在1963年8月于新泽西州普林斯顿举行的机械语言结构工作会议上发表了他的论文《程序语言形式化》。(巴克斯,库里,迪克斯特拉,弗洛伊德,艾弗森,纽厄尔,玻璃市,威尔克斯)。该文件还记录了演讲后的讨论,最后在Ken和[Edsger] Dijkstra之间进行了交流,其中Ken对Dijkstra问题的答复是单线的。
挑战
您将如何表示一个更复杂的操作,例如,矩阵M中所有元素的总和等于相应的行索引和列索引的总和?
编写一个代码段或表达式(不需要完整的程序或函数)以计算给定整数矩阵中每个元素的总和,该整数等于其索引的总和。或者,如FryAmTheEggman所说:给定一个矩阵中号的元素一个 IJ返回每个的总和一个 IJ其中一个 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
轶事
艾弗森的答案++ /(中号 = ⍳ ¹⨢ ⍳ ¹)// 中号,既不是有效的艾弗森表示法中定义的编程语言,也不是在什么最终成为APL。在艾弗森表示法中,它会一直+ /(中号 = ⍳ ¹(μ(中号))⨢ ⍳ ¹(ν(中号)))/ 中号。在APL的第一个版本中是+/(,M=(⍳1↑⍴M)∘.+⍳1↓⍴M)/,M
。