본문 바로가기
스도쿠문제 풀이/데일리 스도쿠풀이

[문제풀이] The Daily Sudoku 2007년 07월 16일 VeryHard

by 김프로 2007. 7. 16.
 
    9           4
6     1   7      
4 2   3 8     5  
  4   5         1
    6       8    
5         6   3  
  5     6 3   7 8
      2   5     9
3           5    

※ 풀이과정 입니다. (셀 좌표는 [컬럼,로우])


-- 현재 빈칸에 올수있는 모든 후보들을 찾은 상태입니다. --
178 1378 9 6 5 2 137 18 4
6 38 358 1 4 7 239 289 23
4 2 17 3 8 9 167 5 67
279 4 237 5 2379 8 2679 269 1
1279 1379 6 479 12379 14 8 249 257
5 1789 1278 479 1279 6 2479 3 27
129 5 124 49 6 3 124 7 8
178 1678 1478 2 17 5 1346 146 9
3 16789 12478 4789 179 14 5 1246 26

L02 - Hidden Single : [3,2]셀 "5"값은 로우2 에서 유니크 값, 관련된 로우, 컬럼, 블럭에서 "5"값 제거
L02 - Hidden Single : [9,5]셀 "5"값은 로우5 에서 유니크 값, 관련된 로우, 컬럼, 블럭에서 "5"값 제거
L02 - Hidden Single : [7,8]셀 "3"값은 로우8 에서 유니크 값, 관련된 로우, 컬럼, 블럭에서 "3"값 제거
L02 - Hidden Single : [2,1]셀 "3"값은 로우1 에서 유니크 값, 관련된 로우, 컬럼, 블럭에서 "3"값 제거
L01 - Naked Single : [2,2]셀 "8"값과 관련된 로우, 컬럼, 블럭에서 "8"값 제거
L02 - Hidden Single : [8,1]셀 "8"값은 로우1 에서 유니크 값, 관련된 로우, 컬럼, 블럭에서 "8"값 제거
L02 - Hidden Single : [9,2]셀 "3"값은 로우2 에서 유니크 값, 관련된 로우, 컬럼, 블럭에서 "3"값 제거
L02 - Hidden Single : [5,5]셀 "3"값은 로우5 에서 유니크 값, 관련된 로우, 컬럼, 블럭에서 "3"값 제거
L02 - Hidden Single : [3,4]셀 "3"값은 로우4 에서 유니크 값, 관련된 로우, 컬럼, 블럭에서 "3"값 제거
L02 - Hidden Single : [3,6]셀 "8"값은 로우6 에서 유니크 값, 관련된 로우, 컬럼, 블럭에서 "8"값 제거
L02 - Hidden Single : [1,8]셀 "8"값은 로우8 에서 유니크 값, 관련된 로우, 컬럼, 블럭에서 "8"값 제거
L02 - Hidden Single : [4,9]셀 "8"값은 로우9 에서 유니크 값, 관련된 로우, 컬럼, 블럭에서 "8"값 제거

17 3 9 6 5 2 17 8 4
6 8 5 1 4 7 29 29 3
4 2 17 3 8 9 167 5 67
279 4 3 5 279 8 2679 269 1
1279 179 6 479 3 14 8 249 5
5 179 8 479 1279 6 2479 3 27
129 5 124 49 6 3 124 7 8
8 167 147 2 17 5 3 146 9
3 1679 1247 8 179 14 5 1246 26

L04 - InterSection Lock : 컬럼3 vs 블럭7, 블럭7의 "2"값은 반드시 컬럼3 내에 위치해야 함

17 3 9 6 5 2 17 8 4
6 8 5 1 4 7 29 29 3
4 2 17 3 8 9 167 5 67
279 4 3 5 279 8 2679 269 1
1279 179 6 479 3 14 8 249 5
5 179 8 479 1279 6 2479 3 27
19 5 124 49 6 3 124 7 8
8 167 147 2 17 5 3 146 9
3 1679 1247 8 179 14 5 1246 26

L04 - InterSection Lock : 컬럼4 vs 블럭5, 블럭5의 "7"값은 반드시 컬럼4 내에 위치해야 함

17 3 9 6 5 2 17 8 4
6 8 5 1 4 7 29 29 3
4 2 17 3 8 9 167 5 67
279 4 3 5 29 8 2679 269 1
1279 179 6 479 3 14 8 249 5
5 179 8 479 129 6 2479 3 27
19 5 124 49 6 3 124 7 8
8 167 147 2 17 5 3 146 9
3 1679 1247 8 179 14 5 1246 26

L04 - InterSection Lock : 컬럼8 vs 블럭9, 블럭9의 "1"값은 반드시 컬럼8 내에 위치해야 함

17 3 9 6 5 2 17 8 4
6 8 5 1 4 7 29 29 3
4 2 17 3 8 9 167 5 67
279 4 3 5 29 8 2679 269 1
1279 179 6 479 3 14 8 249 5
5 179 8 479 129 6 2479 3 27
19 5 124 49 6 3 24 7 8
8 167 147 2 17 5 3 146 9
3 1679 1247 8 179 14 5 1246 26

L04 - InterSection Lock : 로우7 vs 블럭7, 블럭7의 "1"값은 반드시 로우7 내에 위치해야 함

17 3 9 6 5 2 17 8 4
6 8 5 1 4 7 29 29 3
4 2 17 3 8 9 167 5 67
279 4 3 5 29 8 2679 269 1
1279 179 6 479 3 14 8 249 5
5 179 8 479 129 6 2479 3 27
19 5 124 49 6 3 24 7 8
8 67 47 2 17 5 3 146 9
3 679 247 8 179 14 5 1246 26

L04 - InterSection Lock : 컬럼2 vs 블럭4, 블럭4의 "1"값은 반드시 컬럼2 내에 위치해야 함

17 3 9 6 5 2 17 8 4
6 8 5 1 4 7 29 29 3
4 2 17 3 8 9 167 5 67
279 4 3 5 29 8 2679 269 1
279 179 6 479 3 14 8 249 5
5 179 8 479 129 6 2479 3 27
19 5 124 49 6 3 24 7 8
8 67 47 2 17 5 3 146 9
3 679 247 8 179 14 5 1246 26

L10 - X-Wing : [로우1,4] vs [컬럼1,7] 교차점 "7"값, 컬럼1,7 에서 로우1,4 제외한 나머지셀의 "7"값 제거

17 3 9 6 5 2 17 8 4
6 8 5 1 4 7 29 29 3
4 2 17 3 8 9 16 5 67
279 4 3 5 29 8 2679 269 1
29 179 6 479 3 14 8 249 5
5 179 8 479 129 6 249 3 27
19 5 124 49 6 3 24 7 8
8 67 47 2 17 5 3 146 9
3 679 247 8 179 14 5 1246 26

L06 - Naked Triple : 컬럼7 {2,6,7}번째 셀 "249"값은 Subset 패턴3, 나머지셀에서 "249"값 제거

17 3 9 6 5 2 17 8 4
6 8 5 1 4 7 29 29 3
4 2 17 3 8 9 16 5 67
279 4 3 5 29 8 67 269 1
29 179 6 479 3 14 8 249 5
5 179 8 479 129 6 249 3 27
19 5 124 49 6 3 24 7 8
8 67 47 2 17 5 3 146 9
3 679 247 8 179 14 5 1246 26

Z99 - Substitution : 현재적용된 로직으로 더 이상 문제를 풀수없어 대입법을 사용합니다. [1,1]셀 "17"값중 "1"값 대입
L01 - Naked Single : [1,1]셀 "1"값과 관련된 로우, 컬럼, 블럭에서 "1"값 제거
L01 - Naked Single : [7,1]셀 "7"값과 관련된 로우, 컬럼, 블럭에서 "7"값 제거
L01 - Naked Single : [3,3]셀 "7"값과 관련된 로우, 컬럼, 블럭에서 "7"값 제거
L01 - Naked Single : [9,3]셀 "6"값과 관련된 로우, 컬럼, 블럭에서 "6"값 제거
L01 - Naked Single : [7,4]셀 "6"값과 관련된 로우, 컬럼, 블럭에서 "6"값 제거
L01 - Naked Single : [1,7]셀 "9"값과 관련된 로우, 컬럼, 블럭에서 "9"값 제거
L01 - Naked Single : [4,7]셀 "4"값과 관련된 로우, 컬럼, 블럭에서 "4"값 제거
L01 - Naked Single : [7,7]셀 "2"값과 관련된 로우, 컬럼, 블럭에서 "2"값 제거

1 3 9 6 5 2 7 8 4
6 8 5 1 4 7 9 29 3
4 2 7 3 8 9 1 5 6
27 4 3 5 29 8 6 29 1
2 179 6 79 3 14 8 249 5
5 179 8 79 129 6 49 3 27
9 5 1 4 6 3 2 7 8
8 67 4 2 17 5 3 146 9
3 67 24 8 179 1 5 146 Error

Z99 - RollbackSudoku : 오류발생 [1,1]셀 "17"값 중 "1" 대입 이전상태로 복원

17 3 9 6 5 2 17 8 4
6 8 5 1 4 7 29 29 3
4 2 17 3 8 9 16 5 67
279 4 3 5 29 8 67 269 1
29 179 6 479 3 14 8 249 5
5 179 8 479 129 6 249 3 27
19 5 124 49 6 3 24 7 8
8 67 47 2 17 5 3 146 9
3 679 247 8 179 14 5 1246 26

Z99 - Substitution : [1,1]셀 "17"값중 다음값 "7" 대입
L01 - Naked Single : [1,1]셀 "7"값과 관련된 로우, 컬럼, 블럭에서 "7"값 제거
L01 - Naked Single : [7,1]셀 "1"값과 관련된 로우, 컬럼, 블럭에서 "1"값 제거
L01 - Naked Single : [3,3]셀 "1"값과 관련된 로우, 컬럼, 블럭에서 "1"값 제거
L01 - Naked Single : [7,3]셀 "6"값과 관련된 로우, 컬럼, 블럭에서 "6"값 제거
L01 - Naked Single : [9,3]셀 "7"값과 관련된 로우, 컬럼, 블럭에서 "7"값 제거
L01 - Naked Single : [9,6]셀 "2"값과 관련된 로우, 컬럼, 블럭에서 "2"값 제거
L01 - Naked Single : [9,9]셀 "6"값과 관련된 로우, 컬럼, 블럭에서 "6"값 제거

7 3 9 6 5 2 1 8 4
6 8 5 1 4 7 29 29 3
4 2 1 3 8 9 6 5 7
29 4 3 5 29 8 7 69 1
29 179 6 479 3 14 8 49 5
5 179 8 479 19 6 49 3 2
19 5 24 49 6 3 24 7 8
8 67 47 2 17 5 3 14 9
3 79 247 8 179 14 5 124 6

L02 - Hidden Single : [8,4]셀 "6"값은 로우4 에서 유니크 값, 관련된 로우, 컬럼, 블럭에서 "6"값 제거
L02 - Hidden Single : [1,5]셀 "2"값은 로우5 에서 유니크 값, 관련된 로우, 컬럼, 블럭에서 "2"값 제거
L01 - Naked Single : [1,4]셀 "9"값과 관련된 로우, 컬럼, 블럭에서 "9"값 제거

7 3 9 6 5 2 1 8 4
6 8 5 1 4 7 29 29 3
4 2 1 3 8 9 6 5 7
9 4 3 5 2 8 7 6 1
2 17 6 479 3 14 8 49 5
5 17 8 479 19 6 49 3 2
1 5 24 49 6 3 24 7 8
8 67 47 2 17 5 3 14 9
3 79 247 8 179 14 5 124 6

L02 - Hidden Single : [4,7]셀 "9"값은 로우7 에서 유니크 값, 관련된 로우, 컬럼, 블럭에서 "9"값 제거
L02 - Hidden Single : [8,5]셀 "9"값은 로우5 에서 유니크 값, 관련된 로우, 컬럼, 블럭에서 "9"값 제거
L01 - Naked Single : [8,2]셀 "2"값과 관련된 로우, 컬럼, 블럭에서 "2"값 제거
L01 - Naked Single : [7,6]셀 "4"값과 관련된 로우, 컬럼, 블럭에서 "4"값 제거
L01 - Naked Single : [7,7]셀 "2"값과 관련된 로우, 컬럼, 블럭에서 "2"값 제거
L01 - Naked Single : [4,6]셀 "7"값과 관련된 로우, 컬럼, 블럭에서 "7"값 제거
L01 - Naked Single : [3,7]셀 "4"값과 관련된 로우, 컬럼, 블럭에서 "4"값 제거
L01 - Naked Single : [3,8]셀 "7"값과 관련된 로우, 컬럼, 블럭에서 "7"값 제거
L01 - Naked Single : [5,8]셀 "1"값과 관련된 로우, 컬럼, 블럭에서 "1"값 제거
L01 - Naked Single : [8,8]셀 "4"값과 관련된 로우, 컬럼, 블럭에서 "4"값 제거
L01 - Naked Single : [6,9]셀 "4"값과 관련된 로우, 컬럼, 블럭에서 "4"값 제거
L01 - Naked Single : [6,5]셀 "1"값과 관련된 로우, 컬럼, 블럭에서 "1"값 제거

7 3 9 6 5 2 1 8 4
6 8 5 1 4 7 9 2 3
4 2 1 3 8 9 6 5 7
9 4 3 5 2 8 7 6 1
2 7 6 4 3 1 8 9 5
5 1 8 7 9 6 4 3 2
1 5 4 9 6 3 2 7 8
8 6 7 2 1 5 3 4 9
3 9 2 8 7 4 5 1 6

Logic 사용횟수
L01 - Naked Single 60회
L02 - Hidden Single 15회
L04 - InterSection Lock 5회
L06 - Naked Triple 1회
L10 - X-Wing 1회
Z99 - Substitution 2회
Z99 - RollbackSudoku 1회

소요시간 : 0분 0.312초

Logic 순서
L01 - Naked Single
L02 - Hidden Single
L03 - Naked Pair
L04 - InterSection Lock
L05 - Hidden Pair
L06 - Naked Triple
L07 - Hidden Triple
L08 - Naked Quad
L09 - Hidden Quad
L10 - X-Wing
L11 - Sword-Fish
L12 - Jelly-Fish
Z99 - Substitution
Z99 - RollbackSudoku

현재 모든로직이 완성되지않아 "L12"번 까지의 풀이법으로 문제를 풀수없는경우 Z99 - Substitution(대입법)을 이용합니다.
L12 - Jelly-Fish 풀이법보다 상위 풀이법은 현재 작업중입니다.

Sudoku K ver3.11.723 by keetekee / Sudoku Programming http://resrc.tistory.com