สำหรับคนที่ไม่คุ้นเคยปัญหาเด็กนักเรียนของเคิร์กแมนมีดังนี้:
หญิงสาวสิบห้าคนในโรงเรียนเดินออกจากกันสามครั้งเป็นเวลาเจ็ดวันติดต่อกัน: จะต้องจัดให้พวกเขาทุกวันเพื่อไม่ให้สองคนเดินเคียงข้างกันสองครั้ง
เราสามารถดูรายการแบบซ้อน3จาก5 (หรือเมทริกซ์):
[[a,b,c]
[d,e,f]
[g,h,i]
[j,k,l]
[m,n,o]]
เป็นหลักเป้าหมายของปัญหาเดิมคือการคิดออก 7 วิธีที่แตกต่างกันที่จะจัดเมทริกซ์ดังกล่าวข้างต้นเพื่อให้ตัวอักษรสองตัวไม่เปิดเผยแถวมากกว่าหนึ่งครั้ง จาก MathWorld (ลิงก์ด้านบน) เราพบโซลูชันนี้:
[[a,b,c] [[a,d,h] [[a,e,m] [[a,f,i] [[a,g,l] [[a,j,n] [[a,k,o]
[d,e,f] [b,e,k] [b,h,n] [b,l,o] [b,d,j] [b,i,m] [b,f,g]
[g,h,i] [c,i,o] [c,g,k] [c,h,j] [c,f,m] [c,e,l] [c,d,n]
[j,k,l] [f,l,n] [d,i,l] [d,k,m] [e,h,o] [d,o,g] [e,i,j]
[m,n,o]] [g,j,m]] [f,j,o]] [e,g,n]] [i,k,n]] [f,h,k]] [h,l,m]]
ทีนี้จะเกิดอะไรขึ้นถ้ามีเด็กนักเรียนจำนวนต่างกัน? อาจจะมีวันที่แปด? †นี่คือความท้าทายของเรา
†ในกรณีนี้ไม่มี††แต่ไม่จำเป็นต้องสำหรับอาร์เรย์มิติอื่น ๆ
††เราสามารถแสดงนี้เนื่องจากa
ปรากฏในแถวที่มีจดหมายทุกฉบับอื่น ๆ
ความท้าทาย:
ได้รับการป้อนข้อมูลของขนาด (แถวกว่าคอลัมน์) ของอาร์เรย์ของเด็กนักเรียน (เช่น3 x 5
, 4 x 4
หรือ[7,6]
, [10,10]
ฯลฯ ) เอาท์พุทชุดที่เป็นไปได้ที่ใหญ่ที่สุดของ 'วัน' ที่พอดีกับความต้องการที่ระบุข้างต้น
อินพุต:
ขนาดของอาร์เรย์เด็กนักเรียน (ฟอร์มป้อนข้อมูลที่เหมาะสมที่คุณต้องการ)
เอาท์พุท:
อาร์เรย์ที่เป็นไปได้ที่ใหญ่ที่สุดที่เหมาะสมกับข้อกำหนดข้างต้น (รูปแบบที่เหมาะสม)
กรณีทดสอบ:
Input: [1,1]
Output: [[a]]
Input: [1,2]
Output: [[a,b]]
Input:* [2,1]
Output: [[a]
[b]]
Input: [2,2]
Output: [[a,b] [[a,c] [[a,d]
[c,d]] [b,d]] [b,c]]
Input: [3,3]
Output: [[a,b,c] [[a,d,g] [[a,e,i] [[a,f,h]
[d,e,f] [b,e,h] [b,f,g] [b,d,i]
[g,h,i]] [c,f,i]] [c,d,h]] [c,e,g]]
Input: [5,3]
Output: [[a,b,c] [[a,d,h] [[a,e,m] [[a,f,i] [[a,g,l] [[a,j,n] [[a,k,o]
[d,e,f] [b,e,k] [b,h,n] [b,l,o] [b,d,j] [b,i,m] [b,f,g]
[g,h,i] [c,i,o] [c,g,k] [c,h,j] [c,f,m] [c,e,l] [c,d,n]
[j,k,l] [f,l,n] [d,i,l] [d,k,m] [e,h,o] [d,o,g] [e,i,j]
[m,n,o]] [g,j,m]] [f,j,o]] [e,g,n]] [i,k,n]] [f,h,k]] [h,l,m]]
There may be more than one correct answer.
* ขอบคุณ@Frozenfrankสำหรับการแก้ไขกรณีทดสอบ3 : หากมีเพียงหนึ่งคอลัมน์จะมีได้เพียงหนึ่งวันเท่านั้นเนื่องจากลำดับแถวไม่สำคัญ
นี่คือการแข่งขันรหัส - กอล์ฟ - คำตอบที่สั้นที่สุดชนะ