นำเสนอเพื่อเป็นเกียรติแก่APL ในฐานะเครื่องมือโต้ตอบอายุ 50 ปีในปีนี้
พื้นหลัง
Ken [Iverson]นำเสนอพิธีการในภาษาโปรแกรมในเดือนสิงหาคม พ.ศ. 2506 ในการประชุมเชิงปฏิบัติการเกี่ยวกับโครงสร้างภาษาเครื่องกลเมืองปรินซ์ตันรัฐนิวเจอร์ซีย์รายการสารภาพเต็มไปด้วยชื่อที่มีชื่อเสียงและจะเป็นที่โด่งดังในอนาคต (Backus, Curry, Dijkstra, Floyd, Iverson, Newell, Perlis, Wilkes) กระดาษยังบันทึกการสนทนาที่เกิดขึ้นหลังจากการนำเสนอจบลงด้วยการแลกเปลี่ยนระหว่าง Ken และ[Edsger] Dijkstraซึ่ง Ken ตอบคำถามของ Dijkstra นั้นเป็นแบบหนึ่งเดียว
ท้าทาย
คุณจะเป็นตัวแทนของการดำเนินการที่ซับซ้อนมากขึ้นอย่างไรเช่นผลรวมขององค์ประกอบทั้งหมดของเมทริกซ์Mซึ่งเท่ากับผลรวมของดัชนีแถวและคอลัมน์ที่สอดคล้องกัน
เขียนตัวอย่างหรือการแสดงออก (ไม่จำเป็นต้องใช้โปรแกรมหรือฟังก์ชั่นเต็มรูปแบบ) เพื่อคำนวณผลรวมของแต่ละองค์ประกอบในเมทริกซ์จำนวนเต็มที่กำหนดซึ่งเท่ากับผลรวมของดัชนี หรือเป็น FryAmTheEggman ทำให้มันได้รับเมทริกซ์Mกับองค์ประกอบIJกลับผลรวมของแต่ละIJที่IJ = i + J
คุณอาจถือว่าเมทริกซ์อยู่ในตำแหน่งตัวแปรหรือหน่วยความจำแล้วหรือคุณอาจใช้มันเป็นอาร์กิวเมนต์หรืออินพุต คุณสามารถใช้ดัชนีอ้างอิง 0 หรือ 1
กรณีทดสอบ
0
สำหรับเมทริกซ์ที่ว่างเปล่า
2
0
สำหรับดัชนี 0 ฐานหรือ2
1 ฐาน
1 5 2
9 4 2
5 9 6
2
for 0 based หรือ10
1 based
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
for 0 based หรือ3
1 based
เกร็ดพงศาวดาร
คำตอบ Iverson เป็น ++ / ( M = ⍳ ¹⨢ ⍳ ¹) // Mซึ่งเป็นที่ถูกต้องทั้งในIverson สัญลักษณ์ที่กำหนดไว้ในภาษาการเขียนโปรแกรมหรือในที่สุดก็กลายเป็นสิ่งที่ APL ในสัญกรณ์ Iverson ก็จะได้รับ + / ( M = ⍳ ¹ ( μ ( M )) ⨢ ⍳ ¹ ( ν ( M ))) / M ในรุ่นแรกของ APL +/(,M=(⍳1↑⍴M)∘.+⍳1↓⍴M)/,M
มันเป็น