ความท้าทายนี้จะเกี่ยวข้องกับบางส่วนของคุณสมบัติภาษา MATL ที่เป็นส่วนหนึ่งของพฤษภาคม 2018 ภาษาของเดือนเหตุการณ์
บทนำ
ใน MATL ฟังก์ชั่นสองอินพุตหลายทำงานองค์ประกอบที่ชาญฉลาดด้วยการออกอากาศ นี่หมายความว่า:
Element-wise (หรือvectorized ): ฟังก์ชันใช้เป็นอินพุตสองอาร์เรย์พร้อมขนาดที่ตรงกัน การดำเนินการที่กำหนดโดยฟังก์ชั่นจะใช้กับรายการที่เกี่ยวข้องแต่ละคู่ ตัวอย่างเช่นการใช้สัญลักษณ์หลังการแก้ไข:
[2 4 6] [10 20 30] +
ให้ ouput
[12 24 36]
นอกจากนี้ยังทำงานร่วมกับอาร์เรย์หลายมิติ สัญกรณ์
[1 2 3; 4 5 6]
แสดงถึงอาร์เรย์2
×3
(เมทริกซ์)1 2 3 4 5 6
ซึ่งมีขนาด
2
ตามมิติแรก (แนวตั้ง) และ3
ตามขนาดที่สอง (แนวนอน) ตัวอย่างเช่น[2 4 6; 3 5 7] [10 20 30; 40 60 80] *
[20 80 180; 120 300 560]
บรอดคาสติ้งหรือ ( ขยายตัวเดี่ยว ): สองอาร์เรย์การป้อนข้อมูลไม่ได้มีขนาดที่ตรงกัน
1
แต่ในแต่ละที่ไม่ตรงอีกมิติหนึ่งของอาร์เรย์ที่มีขนาด อาร์เรย์นี้มีการจำลองแบบโดยนัยตามส่วนข้อมูลอื่น ๆ เพื่อให้ขนาดตรงกัน จากนั้นการดำเนินการจะถูกนำไปใช้องค์ประกอบที่ชาญฉลาดดังกล่าวข้างต้น ตัวอย่างเช่นพิจารณาสองอินพุตอาร์เรย์ที่มีขนาด1
×2
และ3
×1
:[10 20] [1; 2; 5] /
ขอบคุณการออกอากาศสิ่งนี้เทียบเท่ากับ
[10 20; 10 20; 10 20] [1 1; 2 2; 5 5] /
และมันก็ให้
[10 20; 5 10; 2 4]
ในทำนองเดียวกันด้วยขนาด
3
×2
และ3
×1
(ตอนนี้การออกอากาศทำหน้าที่ตามมิติที่สองเท่านั้น)[9 8; 7 6; 5 4] [10; 20; 30] +
[19 18; 27 26; 35 34]
จำนวนมิติอาจแตกต่างกัน ตัวอย่างเช่นอินพุตที่มีขนาด 3 × 2 และ 3 × 1 × 5 เข้ากันได้และให้ผลลัพธ์ 3 × 2 × 5 ในความเป็นจริงขนาด 3 × 2 นั้นเท่ากับ 3 × 2 × 1 (มีขนาดแบบซิงเกิลต่อท้ายแบบปริยายหลายส่วนโดยพล
บนมืออื่น ๆ ที่เป็นคู่ของ
2
×2
และ3
×1
อาร์เรย์จะให้ข้อผิดพลาดเพราะขนาดตามมิติครั้งแรก2
และพวกเขาจะไม่เท่ากันและไม่มีของพวกเขาคือ3
1
ความหมายของการออกอากาศแบบแยกส่วน
กระจายเสียง Modular 1
เป็นลักษณะทั่วไปของการเผยแพร่ผลงานว่าแม้ไม่มีขนาดที่ไม่ตรงกัน ลองพิจารณาตัวอย่างของอาร์เรย์× และ2
× ต่อไปนี้เป็นอินพุตของฟังก์ชัน:2
3
1
+
[2 4; 6 8] [10; 20; 30] +
กฎมีดังนี้: สำหรับแต่ละมิติอาร์เรย์ที่มีขนาดเล็กกว่าตามมิตินั้นจะถูกจำลองแบบโมดูลาร์ (cyclically)เพื่อให้ตรงกับขนาดของอาร์เรย์อื่น สิ่งนี้จะทำให้เทียบเท่ากับ
[2 4; 6 8; 2 4] [10 10; 20 20; 30 30] +
กับผลลัพธ์
[12 14; 26 28; 32 34]
เป็นตัวอย่างที่สอง
[5 10; 15 20] [0 0 0 0; 1 2 3 4; 0 0 0 0; 5 6 7 8; 0 0 0 0] +
จะผลิต
[5 10 5 10; 16 22 18 24; 5 10 5 10; 20 26 22 28; 5 10 5 10]
โดยทั่วไปปัจจัยการผลิตที่มีขนาดa
× b
และc
× d
ให้ผลที่มีขนาด×max(a,b)
max(c,d)
ความท้าทาย
ดำเนินการเพิ่มเติมสำหรับอาร์เรย์สองมิติพร้อมการออกอากาศแบบแยกส่วนตามที่กำหนดไว้ด้านบน
อาร์เรย์จะเป็นรูปสี่เหลี่ยมผืนผ้า (ไม่มอมแมม) จะมีเฉพาะจำนวนเต็มที่ไม่เป็นลบและจะมีขนาดอย่างน้อย1
ในแต่ละมิติ
กฎ Aditional:
input และ output สามารถดำเนินการโดยวิธีการที่เหมาะสมใด ๆ รูปแบบของพวกเขายืดหยุ่นตามปกติ
โปรแกรมหรือฟังก์ชั่นที่ได้รับอนุญาตในการเขียนโปรแกรมภาษา ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ
กรณีทดสอบ
ต่อไปนี้ใช้;
เป็นตัวคั่นแถว (ดังในตัวอย่างด้านบน) กรณีทดสอบแต่ละรายการจะแสดงทั้งสองอินพุตจากนั้นเอาต์พุต
[2 4; 6 8]
[10; 20; 30]
[12 14; 26 28; 32 34]
[5 10; 15 20]
[0 0 0 0; 1 2 3 4; 0 0 0 0; 5 6 7 8; 0 0 0 0]
[5 10 5 10; 16 22 18 24; 5 10 5 10; 20 26 22 28; 5 10 5 10]
[1]
[2]
[3]
[1; 2]
[10]
[11; 12]
[1 2 3 4 5]
[10 20 30]
[11 22 33 14 25]
[9 12 5; 5 4 2]
[4 2; 7 3; 15 6; 4 0; 3 3]
[13 14 9;12 7 9;24 18 20;9 4 6;12 15 8]
[9 12 5; 5 4 2]
[4 2 6 7; 7 3 7 3; 15 6 0 1; 4 0 1 16; 3 3 3 8]
[13 14 11 16; 12 7 9 8; 24 18 5 10; 9 4 3 21; 12 15 8 17]
[6 7 9]
[4 2 5]
[10 9 14]
1
× n
(เช่น[1 2 3]
) หรือn
× 1
(เช่น[1; 2; 3]
)