Disajikan untuk menghormati APL sebagai alat interaktif yang berusia 50 tahun tahun ini
Latar Belakang
Ken [Iverson] mempresentasikan makalahnya Formalisme dalam Bahasa Pemrograman pada Agustus 1963 pada Konferensi Kerja tentang Struktur Bahasa Mekanik, Princeton, NJ. (Backus, Kari, Dijkstra, Floyd, Iverson, Newell, Perlis, Wilkes). Makalah ini juga mencatat diskusi yang terjadi setelah presentasi, berakhir dengan pertukaran antara Ken dan [Edsger] Dijkstra , di mana jawaban Ken untuk pertanyaan Dijkstra adalah satu kalimat.
Tantangan
Bagaimana Anda mewakili operasi yang lebih kompleks, misalnya, jumlah semua elemen dari matriks M yang sama dengan jumlah dari indeks baris dan kolom yang sesuai?
Tulis cuplikan atau ungkapan (tidak perlu program atau fungsi penuh) untuk menghitung jumlah setiap elemen dalam matriks bilangan bulat yang diberikan yang sama dengan jumlah indeksnya. Atau, seperti dikatakan oleh FryAmTheEggman: diberi matriks M dengan elemen a ij kembalikan jumlah masing - masing a ij di mana a ij = i + j.
Anda dapat mengasumsikan matriks sudah berada di lokasi variabel atau memori, atau Anda dapat menganggapnya sebagai argumen atau input. Anda dapat menggunakan indeks berbasis 0 atau 1.
Uji kasus
0
untuk matriks kosong
2
0
untuk 0 indeks berbasis atau 2
untuk berbasis 1
1 5 2
9 4 2
5 9 6
2
untuk 0 berbasis atau 10
1 berbasis
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
untuk 0 berbasis atau 3
1 berbasis
Anekdot
Jawaban Iverson adalah ++ / ( M = ⍳ ¹ ⨢ ⍳ ¹) // M , yang tidak valid dalam Notasi Iverson sebagaimana didefinisikan dalam Bahasa Pemrograman A , atau dalam apa yang akhirnya menjadi APL. Dalam notasi Iverson, itu akan menjadi + / ( M = ⍳ ¹ ( μ ( M )) ⨢ ⍳ ¹ ( ν ( M ))) / M . Dalam versi pertama APL itu +/(,M=(⍳1↑⍴M)∘.+⍳1↓⍴M)/,M
.