आप में से जो अपरिचित हैं, उनके लिए किर्कमैन की छात्रा समस्या निम्नानुसार है:
एक स्कूल में पंद्रह युवा महिलाओं ने उत्तराधिकार में सात दिनों के लिए तीन बार सैर की: उन्हें रोजाना व्यवस्थित करना आवश्यक है ताकि कोई भी दो बार नहीं चल सके।
हम इसे नेस्टेड 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]]
अब, अगर स्कूली छात्राओं की संख्या अलग होती तो क्या होता? क्या कोई आठवां दिन हो सकता है? Challenge यह हमारी चुनौती है।
† इस मामले में कोई †† , लेकिन जरूरी नहीं कि अन्य सरणी आयामों के लिए
†† हम आसानी से इस दिखा सकते हैं, के बाद से 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.
* टेस्ट केस 3 को सही करने के लिए @Frozenfrank का धन्यवाद : यदि केवल एक कॉलम है, तो केवल एक दिन हो सकता है, क्योंकि पंक्ति क्रम कोई फर्क नहीं पड़ता।
यह कोड-गोल्फ प्रतियोगिता है - सबसे छोटी उत्तर जीत।