今年50歳を迎えるインタラクティブなツールとしてAPLに敬意を表して発表
バックグラウンド
ケン[アイバーソン]は、1963年8月、ニュージャージー州プリンストンで開催された機械言語構造に関する作業会議で、論文「プログラミング言語の形式主義」を発表しました。(バッカス、カレー、ダイクストラ、フロイド、アイバーソン、ニューウェル、ペルリス、ウィルクス)。この論文はまた、プレゼンテーション後に行われた議論を記録し、最後にケンと[Edsger] Dijkstraの間のやり取りが行われました。
チャレンジ
たとえば、対応する行と列のインデックスの合計に等しい行列Mのすべての要素の合計など、より複雑な演算をどのように表現しますか?
スニペットまたは式(完全なプログラムまたは関数は不要)を記述して、インデックスの合計に等しい特定の整数行列の各要素の合計を計算します。または、FryAmTheEggmanが言うように、要素a ijの行列Mが与えられると、a ij = i + j である各a ijの合計を返します。
マトリックスが既に変数またはメモリの場所にあると仮定することも、引数または入力として受け取ることもできます。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中にも有効で、アイバーソン表記法で定義されたAプログラミング言語、また最終的にはAPLになったものの中に。アイバーソン表記では、+ /(あったであろうM = ⍳ ¹(μ(M))⨢ ⍳ ¹(ν(M)))/ M。APLの最初のバージョンではそうでした+/(,M=(⍳1↑⍴M)∘.+⍳1↓⍴M)/,M
。