문제
음이 아닌 정수의 제곱 3 x 3 그리드를 고려하십시오. 각 행 i
에 대해 정수의 합은로 설정됩니다 r_i
. 마찬가지로 각 열에 대해 해당 열의 j
정수 합계는로 설정됩니다 c_j
.
이 작업은 행 및 열 합계 제약 조건이 주어지면 그리드에 가능한 모든 다른 정수 할당을 열거하는 코드를 작성하는 것입니다. 코드는 한 번에 하나의 과제를 출력해야합니다.
입력
코드는 행 제약 조건을 지정하는 음이 아닌 정수 3 개와 열 제약 조건을 지정하는 음이 아닌 정수 3 개를 가져야합니다. 이들이 유효하다고 가정 할 수 있습니다. 즉 합 또는 행 제한 조건이 열 제한 조건의 합과 같다고 가정 할 수 있습니다. 코드는 편리한 방법으로이 작업을 수행 할 수 있습니다.
산출
코드는 선택한 사람이 읽을 수있는 형식으로 계산하는 다른 2D 그리드를 출력해야합니다. 물론 예뻐질수록 좋습니다. 출력에 중복 그리드가 포함되지 않아야합니다.
예
모든 행과 열 제약 조건이 정확히 일치 1
하면 6
다른 가능성 만 있습니다. 첫 번째 행 1
의 경우 처음 세 열 중 하나에을 넣을 수 있습니다 . 두 번째 행의 경우 이제 2
대안이 있으며 마지막 행은 이전 두 행에 의해 완전히 결정됩니다. 그리드의 다른 모든 것은로 설정해야합니다 0
.
입력이 2 1 0
행과 1 1 1
열에 대한 것이라고 가정하십시오 . APL의 멋진 출력 형식을 사용하면 가능한 정수 격자는 다음과 같습니다.
┌─────┬─────┬─────┐
│0 1 1│1 0 1│1 1 0│
│1 0 0│0 1 0│0 0 1│
│0 0 0│0 0 0│0 0 0│
└─────┴─────┴─────┘
이제 입력이 1 2 3
행과 3 2 1
열에 대한 것이라고 가정하십시오 . 가능한 정수 그리드는 다음과 같습니다.
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│0 0 1│0 0 1│0 0 1│0 1 0│0 1 0│0 1 0│0 1 0│1 0 0│1 0 0│1 0 0│1 0 0│1 0 0│
│0 2 0│1 1 0│2 0 0│0 1 1│1 0 1│1 1 0│2 0 0│0 1 1│0 2 0│1 0 1│1 1 0│2 0 0│
│3 0 0│2 1 0│1 2 0│3 0 0│2 1 0│2 0 1│1 1 1│2 1 0│2 0 1│1 2 0│1 1 1│0 2 1│
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘