Tag: 업데이트
SudokuSolver의 치명적인 설계 오류를 바로잡았다
by Cyrus H. on Feb.08, 2010, under Java, Made by myself, Objective-C
처음 만들었을 당시에는 눈에 보이지 않던 결함이었다. 하지만 Star Burst Leo 스도쿠에 대해 Kippler님의 스도쿠 풀이 프로그램과 경쟁을 시켰을 때, 내 응용 프로그램이 이상하게도 오래 걸린다고 느꼈다. 왜 그런지에 대해 궁금해하던 차에 내 눈에 들어온 것은, 3×3 그리드에 중복된 숫자가 들어간 딱 그 장면이었다. 3×3 그리드 내부에 숫자 1이 두 개가 들어가 있었던 것. 그때서야 깨달았다. 내가 만든 응용 프로그램에서 입력 가능한 숫자를 얻을 때, 행과 열에서만 중복 숫자를 제거하고 3×3 그리드 내부에서는 중복을 제거하지 않았던 것.
이번 버전에서는 완벽하게 중복 숫자를 제거해서, 쓸데없는 탐색을 큰 폭으로 줄였다. 그 결과, 아까 말한 그 Star Burst Leo 스도쿠1를 풀어내는데 38초 가량이 걸리고, 그보다 더 복잡한 탐색을 요하는 Star Burst Regulus 스도쿠2를 푸는 데는 약 39초가 걸린다. 근데 어째 수치적으로 말이 안 되는 것 같다?
또, 이번 버전에서 추가된 가장 큰 기능은 실시간으로 풀이 과정을 볼 수 있다는 것이다.
덧붙임. Java 버전도 같이 수정했다.


