올해 50 세가되는 대화식 도구로 APL 을 기리기 위해 발표
배경
Ken [Iverson] 은 1963 년 8 월 뉴저지 프린스턴의 기계 언어 구조에 관한 실무 회의 에서 프로그래밍 언어의 형식론을 발표했습니다 . (Backus, Curry, Dijkstra, Floyd, Iverson, Newell, Perlis, Wilkes). 이 논문은 또한 발표 후 발생한 토론과 Ken과 [Edsger] Dijkstra 의 교류로 끝나며 Dijkstra의 질문에 대한 Ken의 답변은 하나의 라이너였습니다.
도전
예를 들어 대응하는 행과 열 인덱스의 합과 같은 행렬 M 의 모든 요소의 합과 같은 더 복잡한 연산을 어떻게 표현할 수 있습니까?
스 니펫 또는 표현식 (전체 프로그램이나 함수가 필요하지 않음)을 작성하여 주어진 정수 매트릭스에서 각 요소의 합계를 계산하십시오. FryAmTheEggman 둔다은 또는로서, 주어진 행렬 M을 요소 A는 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 기반
일화
Iverson의 대답은 ++ / ( M = ⍳ ¹ ⨢ ⍳ ¹) // M 인데, 이는 A Programming Language에 정의 된 Iverson 표기법 이나 APL이 된 것은 아닙니다. Iverson 표기법에서 + / ( M = ⍳ ¹ ( μ ( M )) ⨢ ⍳ ¹ ( ν ( M ))) / M 이었습니다. APL의 첫 번째 버전에서는이었습니다 .+/(,M=(⍳1↑⍴M)∘.+⍳1↓⍴M)/,M