Kirkman의 여학생 문제 는 익숙하지 않은 사람들을 위해 다음과 같이 진행됩니다.
한 학교의 15 명의 젊은 여성이 7 일 연속으로 3 개의 나란히 걸어 다닌다. 두 사람이 나란히 두 번 걷지 않도록 매일 그들을 배치해야한다.
이것을 중첩 된 3 x 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.
* 테스트 사례 3 을 수정 한 @Frozenfrank 에게 감사합니다 . 열이 하나만 있으면 행 순서가 중요하지 않으므로 하루 만있을 수 있습니다.
이것은 코드 골프 경쟁입니다-최단 답변이 이깁니다.