소개
퍼즐의 규칙 :
이진 ( Takuzu 또는 Subiku 라고도 함) 퍼즐 은 이해하기 매우 간단하며 몇 가지 규칙 만 있습니다.
게임 이름은 이진이므로 매우 분명하지만 0과 1 만 채울 수 있습니다.
- 동일한 숫자 중 두 개 이하 만 서로 수직 또는 수평으로 인접 할 수 있습니다
- 각 행과 각 열은 동일한 양의 0과 1을 포함해야합니다 (이는 암시 적으로 모든 이진 게임의 크기가 항상 동일 함을 의미합니다).
- 중복 된 행과 중복 된 열이 없을 수 있습니다 (0과 1의 순서는 동일 함).
원한다면 www.binarypuzzle.com 에서 게임을 즐길 수 있습니다 .
전술:
규칙 1로 인해
다음과 같은 경우 항상 숫자를 채울 수 있습니다 .-같은 숫자 중 두 개가 서로 수직 또는 수평으로 인접 해 있습니다.이 경우 양쪽의 반대 자리를 채울 수 있습니다. 즉 .11...
→ 0110..
.
-세로 또는 가로로 같은 숫자 중 두 개 사이에 간격이 하나만 있습니다. 즉 .1.1..
→.101..
규칙 1로 인해 세 개의 공백이 남아 있고 동일한 숫자에 인접한 세 개의 숫자를 가질 수없는 경우 공백 중 하나를 채울 수 있습니다. 즉 .0.1.0
→ 10.1.0
(여전히 두 개를 채워야하며 중간에 세 개를 인접 할 수 없으므로 첫 번째 간격은이어야합니다 1
.)
규칙 2로 인해 나머지 절반이 이미 반대 자리로 채워져 있으면 행이나 열의 나머지 간격을 항상 채울 수 있습니다. 즉 .1.011
→010011
규칙 3으로 인해 똑같이 정렬 된 줄에 해결하기 위해 두 개만 남겨두면 항상 반대 자리를 채울 수 있습니다. 즉 101100 & 1..100
→101100 & 110100
규칙 3으로 인해 3 개의 간격이 동일하게 정렬 된 선에 남아있을 때 간극을 채울 수 있습니다. 즉 010011 & .1.01.
→ 010011 & .1.010
(여기서 1
끝에 a 를 채울 수 없습니다 . 다른 두 간격에서 0을 채워 두 줄을 순서대로 동일하게 만들어야하기 때문입니다.)
예:
우리는 다음과 같은 6x6 그리드로 시작합니다 .1과 0이 채워져 있습니다 (그리고 점은 아직 채우지 않은 간격입니다).
.1....
.10.0.
1.11..
.1....
...1.0
......
규칙 1과 2로 인해 다음 숫자를 채울 수 있습니다.
.1.01.
.1010.
101100
010011
.0.1.0
.010..
규칙 1로 인해 5 행 1 열에 1을 채울 수 있습니다.
.1.01.
.1010.
101100
010011
10.1.0
.010..
규칙 3으로 인해 행 1, 열 6에서 4를 볼 때 0을 채울 수 있습니다.
.1.010
.1010.
101100
010011
10.1.0
.010..
이제 규칙 1과 2로 인해 숫자로 공백을 계속 채울 수 있습니다.
.1.010
010101
101100
010011
10.1.0
.010.1
이제 규칙 3 (행 3을 볼 때)으로 인해 행 5를 완료 할 수 있습니다.
.1.010
010101
101100
010011
100110
.010.1
그리고 규칙 1과 2로 인해 퍼즐을 완성 할 수 있습니다.
011010
010101
101100
010011
100110
101001
도전:
도전은 간단합니다 : 시작 그리드가 주어지면 해결 된 퍼즐을 출력합니다.
참고 : 위의 규칙을 구현할 필요는 없습니다. 물론이 과제를 구현하는 방법에 대한 힌트를 제공 할 수 있지만 규칙을 염두에두고 솔루션을 무차별 처리하는 것은 완전히 좋습니다.
그것을 해결하는 방법은 당신에게 달려 있지만 문제는 해결 된 퍼즐을 출력하는 것입니다.
도전 규칙 :
- 그리드의 입력 및 출력 형식은 유연하지만 사용하는 내용을 적어주십시오. (즉, 2D 바이트 배열; 줄 바꿈이있는 문자열 등)
- 위의 내용은 사용 된 문자에도 적용됩니다. 이 예에서는을 사용
01.
했지만 원하는 경우ABx
대신 사용할 수 있습니다 . 사용한 입력 / 출력 형식과 문자를 알려주십시오. - 다음 격자 크기 만 사용한다고 가정 할 수 있습니다.
6x6
;8x8
;10x10
;12x12
;14x14
;16x16
.
일반 규칙:
- 이것은 code-golf 이므로 바이트 단위의 최단 답변이 이깁니다.
코드 골프 언어가 코드 골프 언어 이외의 언어로 답변을 게시하지 못하게하십시오. '모든'프로그래밍 언어에 대한 가능한 한 짧은 대답을 생각해보십시오. - 표준 규칙이 답변에 적용 되므로 STDIN / STDOUT, 적절한 매개 변수가있는 기능 / 방법, 전체 프로그램을 사용할 수 있습니다. 당신의 전화.
- 기본 허점 은 금지되어 있습니다.
- 가능하면 코드 테스트 링크를 추가하십시오.
- 또한 필요한 경우 설명을 추가하십시오.
테스트 사례 :
점은 가독성을 위해 추가 된 것이므로 공백이나 원하는 간격을 자유롭게 사용하십시오. 입력 및 출력 형식 모두 유연합니다.
Input:
1..0..
..00.1
.00..1
......
00.1..
.1..00
Output:
101010
010011
100101
011010
001101
110100
Input:
.1....
.10.0.
1.11..
.1....
...1.0
......
Output:
011010
010101
101100
010011
100110
101001
Input:
.......1..
.00..0..1.
.0..1..0.0
..1...1...
1.1......1
.......1..
.0..1...0.
....11...0
.0.0..1..0
0...0...1.
Output:
0110010101
1001100110
1001101010
0110011001
1010100101
0101010110
1001101001
0110110100
1010011010
0101001011