ฉันได้เขียนความท้าทายสองสามข้อที่เกี่ยวข้องกับเมทริกซ์และสิ่งที่พบโดยทั่วไปสำหรับฉันคือฉันใช้รูปแบบเหมือนด้านล่างเมื่อแสดงเมทริกซ์ทั้งในตัวอย่างและในกรณีทดสอบ:
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
นี่เป็นรูปแบบที่ยุ่งยากในหลายภาษา
ท้าทาย:
เขียนโปรแกรม / ฟังก์ชั่นที่สามารถใช้เมทริกซ์ในแบบฟอร์มที่กำหนดในด้านบนเป็น input (โดยตรงคัดลอก / วางจากการโพสต์นี้) และเอาท์พุทเมทริกซ์เดียวกันในทั้งสามรูปแบบทั่วไปอื่น ๆ ที่แสดงด้านล่าง
รูปแบบอินพุต:
ตัวเลขคั่นด้วยจำนวนช่องว่างที่แตกต่างกันและขึ้นบรรทัดใหม่เพื่อแสดงแถว (ดูกรณีทดสอบ)
- จำนวนช่องว่างระหว่างหมายเลขไม่รับประกันว่าจะสอดคล้องกัน อย่างไรก็ตามคุณอาจสันนิษฐานได้ว่าตัวเลขสุดท้ายในแต่ละคอลัมน์นั้นเรียงกัน (หากมีประโยชน์)
- สามารถมีได้ทั้งจำนวนเต็มและลอยและพวกเขาสามารถบวกลบหรือศูนย์ เมทริกซ์จะไม่ประกอบด้วยจำนวนเต็มและลอยในเวลาเดียวกัน
- คุณอาจคิดว่าไม่มีตัวเลขใดยาวเกิน 10 ตัวอักษรรวมถึงเครื่องหมายลบและจุดทศนิยมสำหรับการลบแบบลอย
- คุณอาจคิดว่ามีจำนวนรายการเท่ากันในแต่ละแถวและในแต่ละคอลัมน์
- จะไม่มีเมทริกซ์อินพุตว่างเปล่า แต่อาจมีตัวเลขเดี่ยวหรือเมทริกซ์ที่มีแถวหรือคอลัมน์เดียวเท่านั้น
- ในกรณีเหล่านี้คุณสามารถเลือกรูปแบบผลลัพธ์ที่แสดงในกรณีทดสอบ
โปรแกรม / ฟังก์ชั่นของคุณจะต้องจัดการอินพุตถ้ามันถูกคัดลอกโดยตรงจากโพสต์นี้และวางลงในล่าม (STDIN หรือเป็นอาร์กิวเมนต์ของฟังก์ชันหรือสิ่งที่เทียบเท่า) คุณอาจมีสิ่งที่คุณต้องการ (วงเล็บเครื่องหมายคำพูดวงเล็บ) ด้านหน้าและ / หรือหลังเมทริกซ์ แต่คุณต้องพิจารณาเมทริกซ์ลำดับของอักขระที่ไม่สามารถเปลี่ยนแปลงได้ (ซึ่งรวมถึงการขึ้นบรรทัดใหม่)
เพื่อชี้แจง:สมมติว่าฟังก์ชั่น / โปรแกรมของคุณถูกเรียกf
และเมทริกซ์คือ:
1 -2
3 5
6 7
จากนั้นคุณอาจให้เมทริกซ์เป็นฟังก์ชันอาร์กิวเมนต์เช่นนี้ (และตัวเลือกอื่น ๆ มากมาย):
f(1 -2
3 5
6 7)
f([1 -2
3 5
6 7])
f("""1 -2
3 5
6 7""")
หากภาษาของคุณไม่สามารถนำเมทริกซ์คัดลอก / วางมาใช้เป็นวิธีการใด ๆ ได้ฉันกลัวว่าคุณจะต้องเลือกภาษาอื่น
รูปแบบผลลัพธ์:
คุณควรส่งเมทริกซ์ในสามรูปแบบต่อไปนี้ (คำสั่งไม่สำคัญ):
[[16, 2, 3, 13], [5, 11, 10, 8], [9, 7, 6, 12], [4, 14, 15, 1]]
{{16, 2, 3, 13}, {5, 11, 10, 8}, {9, 7, 6, 12}, {4, 14, 15, 1}}
[16, 2, 3, 13; 5, 11, 10, 8; 9, 7, 6, 12; 4, 14, 15, 1]
- คุณสามารถแยกเอาต์พุตทั้งสามได้ตามต้องการ (เช่นขึ้นบรรทัดใหม่)
- คุณต้องส่งออกตัวเลขโดยใช้ความแม่นยำเช่นเดียวกับอินพุต (ตัวอย่างเช่นคุณต้องไม่ตัดจำนวนทศนิยมหรือจำนวนเต็มออกเป็นลอย)
- ช่องว่างมีผลบังคับใช้
- คุณต้องใช้
-
สำหรับตัวเลขลบไม่_
หรือคล้ายกัน
กรณีทดสอบ:
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
----
[[16, 2, 3, 13], [5, 11, 10, 8], [9, 7, 6, 12], [4, 14, 15, 1]]
{{16, 2, 3, 13}, {5, 11, 10, 8}, {9, 7, 6, 12}, {4, 14, 15, 1}}
[16, 2, 3, 13; 5, 11, 10, 8; 9, 7, 6, 12; 4, 14, 15, 1]
0.14778 0.27114 0.24415
0.45997 0.12287 0.67470
0.28945 0.37928 0.51887
----
[[0.14778, 0.27114, 0.24415], [0.45997, 0.12287, 0.6747], [0.28945, 0.37928, 0.51887]]
{{0.14778, 0.27114, 0.24415}, {0.45997, 0.12287, 0.6747}, {0.28945, 0.37928, 0.51887}}
[0.14778, 0.27114, 0.24415; 0.45997, 0.12287, 0.6747; 0.28945, 0.37928, 0.51887]
-0.0398301 0.2403455 -0.2253368 0.3565870 0.0605803 0.0830780
-0.3254422 -0.1185191 -0.2989537 0.1647319 0.3621135 0.2018815
-0.0022281 -0.3362287 -0.3568447 0.4419063 0.3801872 -0.2847033
---
[[-0.0398301, 0.2403455, -0.2253368, 0.3565870, 0.0605803, 0.0830780], [-0.3254422, -0.1185191, -0.2989537, 0.1647319, 0.3621135, 0.2018815], [-0.0022281, -0.3362287, -0.3568447, 0.4419063, 0.3801872, -0.2847033],]
{{-0.0398301, 0.2403455, -0.2253368, 0.3565870, 0.0605803, 0.0830780}, {-0.3254422, -0.1185191, -0.2989537, 0.1647319, 0.3621135, 0.2018815}, {-0.0022281, -0.3362287, -0.3568447, 0.4419063, 0.3801872, -0.2847033},}
[-0.0398301, 0.2403455, -0.2253368, 0.3565870, 0.0605803, 0.0830780; -0.3254422, -0.1185191, -0.2989537, 0.1647319, 0.3621135, 0.2018815; -0.0022281, -0.3362287, -0.3568447, 0.4419063, 0.3801872, -0.2847033]
0 4 1 0
0 0 -6 0
0 1 4 -3
2 0 0 8
0 0 0 0
----
[[0, 4, 1, 0], [0, 0, -6, 0], [0, 1, 4, -3], [2, 0, 0, 8], [0, 0, 0, 0]]
{{0, 4, 1, 0}, {0, 0, -6, 0}, {0, 1, 4, -3}, {2, 0, 0, 8}, {0, 0, 0, 0}}
[0, 4, 1, 0; 0, 0, -6, 0; 0, 1, 4, -3; 2, 0, 0, 8; 0, 0, 0, 0]
1
----
[1] (or [[1]])
{1} (or {{1}})
[1] (or 1)
1 2
----
[1, 2] (or [[1, 2]])
{1, 2} (or {{1, 2}})
[1, 2]
4
5
----
[[4], [5]]
{{4}, {5}}
[4; 5]
ฉันตระหนักดีถึงสิ่งนี้แต่ในความท้าทายนี้รูปแบบ I / O ที่ยุ่งยากนั้นเป็นประเด็นทั้งหมด ความท้าทายจะเกี่ยวกับการจัดรูปแบบเอาต์พุตในบางภาษาในขณะที่การอ่านอินพุตจะเป็นส่วนที่ยากที่สุดในภาษาอื่น
โปรดอย่าท้อแท้หากการอ่านอินพุตเป็นเรื่องยากการส่งเหล่านั้นอาจเป็นสิ่งที่น่าสนใจที่สุด สั้นไม่จำเป็นต้องเหมือนกับที่น่าประทับใจ และเช่นเคยสนับสนุนคำอธิบาย!