APL onuruna bu yıl 50 yaşına giren etkileşimli bir araç olarak sunuldu
Arka fon
Ken [Iverson] , 1963 Ağustos'unda Makine Dili Yapıları Çalışma Konferansında, Princeton, NJ’de Programlama Dilleri’nde Biçimcilik’i yayınladı. (Backus, Köri, Dijkstra, Floyd, Iverson, Newell, Perlis, Wilkes). Makalede ayrıca, Sun'ın ardından Ken ve [Edsger] Dijkstra arasında bir değişim ile sona eren tartışmalar kaydedildi .
Meydan okuma
Daha karmaşık bir işlemi, örneğin karşılık gelen satır ve sütun indekslerinin toplamına eşit olan bir M matrisinin tüm elemanlarının toplamını nasıl temsil edersiniz ?
Verilen bir tamsayı matrisindeki her bir öğenin toplamını, indekslerinin toplamına eşit olacak şekilde hesaplamak için bir snippet veya ifade yazın (tam bir program veya fonksiyona gerek yok). FryAmTheEggman koyar kadar veya, bir matrisi verilen M elemanları ile bir ij her toplamını geri bir ij burada bir ij = i + j.
Matrisin zaten değişken veya bellek konumunda olduğunu varsayabilir veya bir argüman veya giriş olarak kabul edebilirsiniz. 0 veya 1 tabanlı dizinleri kullanabilirsiniz.
Test durumları
0
boş matris için
2
0
0 tabanlı endeksler için veya 2
1 tabanlı
1 5 2
9 4 2
5 9 6
2
0 tabanlı veya 10
1 tabanlı
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 tabanlı veya 3
1 tabanlı
anekdot
Iverson'ın cevabı ++ / ( M = ⍳ ¹ ⨢ ⍳ ¹) // M idi ; bu, ne bir Programlama Dili'nde tanımlandığı gibi Iverson Notasyonu'nda ne de sonunda APL olanında geçerli değildir. Iverson notasyonunda + / ( M = ⍳ ¹ ( μ ( M )) ⨢ ⍳ ¹ ( ν ( M ))) / M olurdu . APL'nin ilk sürümlerinde öyleydi .+/(,M=(⍳1↑⍴M)∘.+⍳1↓⍴M)/,M