스도쿠(sdoku) 알고리즘 아시는분 계신가요?
글쓴이: bingsinson / 작성시간: 화, 2006/05/23 - 11:44오후
군대갔다와서 오랜만에 공부좀해보려니까 아무것도 모르겠네요
요즘 스도쿠가 유행이길래 간단하게 한번 만들어보려고 하니까..
안되네요
혹시 알고리즘 알고 계신분 있나요?
문제푸는 알고리즘이 아니라 문제만드는 알고리즘이요
인터넷찾아봐도 문제푸는 것에 대한 알고리즘만 있고 만드는데에 관한 알고리즘은
없네요..
Forums:
문제푸는는 거나
문제푸는는 거나 만드는거나 다를게 있나요?
임의의 위치를 선택하고 규칙에 어긋나지 않는 무작위수를 대입한다. 아닌가요?
제생각에는 이러면 될것 같은데.....
저도 첨엔 그렇게 생각했는데..
bini // 첨엔 그렇게 생각하고 짜봤는데 막상 짜보니까 안되네요
제가 잘못 짠건지...^^;; 그래서 답이랑 문제랑 알고리즘이 틀리구나 라고 생각을..
스도쿠가 뭡니까?
전혀 듣도 보도 못한 것이라 다른 분 답글 다시면 훔쳐(?)보려 했는데, 궁금해서 못참겠군요.
만약!! 오늘 안에 안가르쳐 주시면!! 바로 구글에서 찾아보겠습니다.
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
스도쿠란
검색엔진에서 스도쿠를 치시면 많이 나올겁니다 ^^;
저도 개인적으로 스도쿠를 풀어본적은 한번도 없읍니다.
물론 스도쿠를 푸는 간단한 프로그램은 짜본적은 있지만.....
일반적인 9x9 외에도 여러종류가 있는것 같더군요.
9x9의 형태는 간단합니다. 9x9의 행렬을 상상하세요
아래의 규칙에 맞게 수를 대입시키면 됩니다.
임의의 가로줄에 1..9의 수가 반드시 하나씩 존재
임의의 세로줄에 1..9의 수가 반드시 하나씩 존재
임의의 3x3행렬에 1..9의 수가 반드시 하나씩 존재
위에서 임의의 3x3이란 가로 1..3 세로 1..3 이 하나의 3x3의 행렬,
다음 가로 4..6 세로 1..3이 하나의 3x3의 행렬..., 가로 1..3 세로 4..6 이 또하나의 3x3의 행렬... 아시겠죠.
정말요?
그건 그렇게 쉬운 문제가 아닙니다.
제가 여러번 프로그램을 짜면서 1부터 5행까지의 겹치지 않는 난수 발생은 가능했습니다만, 5행까지의 난수 발생이 완성 됐다면 그 때부터 답은 하나가 되는데 6행에서의 잘못된 값이 들어오게 되면 7행에서의 무한루프... 그 무한 루프를 체크할 방법도 생각해봤습니다만 쉽지만 않네요.
잘 만드는 게
잘 만드는 게 생각보다 쉽지 않을 것 같습니다... 푸는 건 쉽습니다. (빠르게 만들기 위해서 knuth 아저씨의 춤추는 알고리즘이던가도 등장하지만..)
다음과 같은게 궁금하기도 합니다.
주어진 문제에 해답이 하나만 있는 것을 증명할 수 있는가?
주어진 문제에 해답이 존재한다는 것을 증명할 수 있는가?
만일 해의 존재여부를 알 수 없다면 문제를 만들고도 이 것이 풀릴 수 있는 문제인지 알 수가 없겠죠? 그렇다면 문제를 random 생성하고, 유한 시간동안 풀기 시도를 해서 풀리면 이걸 "만든 문제다"라고 하기에는... 문제 만드는 알고리즘이라고 할 수 없겠죠?
"항상 풀릴 수 있는 문제를 생성하는 알고리즘"이 존재하지만, "주어진 문제에 해답의 존재 여부를 답하는 알고리즘"이 존재하지 않는 상황이 존재할 수 있을까요?
슬슬 헷갈립니다 -o-;
예전에 찾아보면서 언뜻 관련 내용을 본 것 같긴 한데..
해가 없는 경우도
해가 없는 경우도 있나요? 몰라서요 ^^; 저는 해가 항상 존재한다고 가정하고 말씀드렸는데......
해가 항상 존재한다고 가정했을때 단순히 문제만을 만드는 경우라면 될것 같구요.
문제를 만들고 해답을 검증하고 해답을 제시하는 프로그램이라면.....
해가 여러개 일때라도 정답의 판정에는 문제가 없지만, 정답을 요구하는 경우라면......
난이도를 조절하는것도 그렇고.....
댓글 달기