2010년 4월 16일 금요일

스도쿠 풀어주는 프로그램 공개

스도쿠를 풀 때마다 이걸 컴퓨터로 풀어보고 싶었다.
이미 유사한 프로그램들이 많이 나와있지만, 직접 만들어보는 것이랑은 다르니...

그래서 한번 만들어봤다.

혼자 열나게 문제를 푸는 중...


이 프로그램의 기능은 아래와 같다.

1. 주어진 값을 기준으로 문제 풀기
2. 지정된 갯수 만큼 숫자가 남는 문제 생성
3. 저장되어있는 예제 보여주기(3개)
4. 풀이를 파일로 저장


기본적인 알고리즘은 아래와 같다.

1. 27개의 각 칸에 9개(1~9)의 BOOL 배열 생성, true로 설정
2. fixed 된 전 셀에 대해 같은 행, 같은 열, 같은 3x3 칸에서 fixed된 값에 대해 false로 지정
3. 각 행, 각 열, 각 3x3 칸에서 가능한 후보 숫자 중 유일한 것이 있으면 이 값을 fixed 값으로 수정
4. 더 이상 진행할 수 없을 때까지 2-3 반복
5. 27개의 각 칸에 남아있는 후보군 숫자를 일일이 대입

프로그램은 아래 링크에서 다운받을 수 있다.


덧. 위키피디아에 올라와있는 스도쿠의 예제를 보면 답이 2개로 나와있는데, 둘 중 앞의 것만 맞다.
뒤의 것은 5번째 열에 5가 2개고, 3이 없다.
(편집해놓았는데, 아직은 반영이 안된 듯)

위키의 예제를 직접 풀어본 것


댓글 8개:

  1. 우와!! 이런것도 있군요. 시간은 남는데 뭔가 할일은 없을때 핸드폰을 거내서 스도쿠를 풀지요ㅎㅎ

    이거 같다가 몇문제 만들어서 조카들에게 뿌려야 겠어요.ㅎㅎㅎ

    답글삭제
  2. @OborodokiO - 2010/04/16 01:38
    나름 시간이 잘 가는 놀이인데, 이번엔 아예 프로그램을 만드는 걸로 시간을 보냈습니다. ㅎㅎ

    답글삭제
  3. 일하러 가신분이!!! -ㅁ-!! ㅋㅋ

    그나저나.. 저는 그냥 핸드폰에 게임 두가지 있는데

    수도쿠는 귀찮고.. 그냥 밍글맹글이나 한다죠(헥사)

    답글삭제
  4. 스도쿠... 군대에서 말년에 참 많이 했는데 실력은 별로 늘지 않더군요. 크

    재미있는 걸 만드셨네요. ^^

    이 프로그램은 국산인가요 독일산인가요.

    답글삭제
  5. @구차니 - 2010/04/16 09:55
    업무역량을 키우기 위해 알고리즘 공부중... ㅎㅎ

    답글삭제
  6. @terminee - 2010/04/16 15:08
    흠흠... 생각해보니 독일산이군요. 헤헤

    답글삭제
  7. trackback from: C언어 스도쿠 자동풀이 프로그램
    프로그램 다운로드 스도쿠.zip #include #include #include int table[9][9]; //입력한 스도쿠 저장 int completed=0; //완성된 스도쿠 갯수 저장 FILE *out; typedef struct This //빈칸을 가리키는 연결리스트 { int y,x; //y행, x열 좌표 int cand[10]; //후보숫자 표시배열 struct This *next; //다음칸 }blank; blank *head, *t..

    답글삭제