2013-05-14 2 views
2

THIS 숙제파이썬 스도쿠 해결사 버그를 어떻게 수정합니까?


안녕하세요된다. 나는 파이썬 스도쿠 해결사를 만들어야했고, 이것이 내가 생각해 낸 것이다. 나는 그것을 실행할 때, 첫 번째 채우기 호출은 오류가 아래의 원인, 그러나

http://pastebin.com/JRKaqSed

는 (내 입력을 포함하고 출력 내가 얻을). 같은 시간에 1에서 2 개의 셀을 추가하는 것 같습니다.

0 5 9 0 0 0 4 8 3 #Current row being tested 
To Add, 1 #Number to add 
0 5 #Row, Column 
0 5 9 0 1 1 4 8 3 #Row it outputs 

왜 그렇게하는지 알 수 없습니다. 어떤 도움을 주시면 감사하겠습니다.

당신에게

편집 감사합니다

나는 버그를 발견했다. 각 행의 시작 부분에서만 rowSet을 생성하므로 숫자가 이미 사용되었는지는 알 수 없습니다.

그러나, 내 코드는 여전히 스도쿠 그리드

+0

'pdb'은 친구입니다 – shx2

+0

버그를 발견했습니다. 하지만 내 코드는 완성 된 그리드에 도달하지 않습니다./ – AceFire6

+0

향후 사용자를 위해 문제의 해결책을 게시해야합니다. – KronoS

답변

3

나는 당신이 얻을 오류를 복제 할 수 없습니다 완료되지 않습니다,하지만 당신은 스도쿠 그리드 읽을 방법에 문제가있다.

0 5 9 0 0 0 4 8 3 
0 0 0 0 0 0 0 1 2 
0 1 0 0 2 8 0 0 0 
0 9 8 0 7 4 0 2 0 
0 4 0 0 8 0 0 3 0 
0 7 0 6 3 0 5 4 0 
0 0 0 1 6 0 0 5 0 
6 2 0 0 0 0 0 0 0 
7 3 5 0 0 0 8 6 0 
이 파일에 당신이 할 방법 읽기

:

fi = open("sudoku.txt", "r") 
inFile = fi.read() 
grid = [list(i) for i in inFile.split("\n")] 

이 목록의 목록의 격자를 만듭니다,하지만 당신이 기대하는 일. 예를 들어, 다음은 첫 번째 줄의 :

['0', ' ', '5', ' ', '9', ' ', '0', ' ', '0', ' ', '0', ' ', '4', ' ', '8', ' ', '3']

대신 문자열로 파일을 읽어 줄 바꿈에 분할, 당신은 열려있는 파일 개체를 통해 루프에게 공간 분할에 각 행을 분할 할 수 있습니다 .

fi = open("sudoku.txt", "r") 
grid = [] 
for line in fi: 
    grid.append([int(i) for i in line.split(" ")]) 

그래서 나는 당신의 문제가 계속 있기 때문에, 그것은 스도쿠 해결이 고정 (그리고 또 다른 문제 어딘가에 oldGrid에 대한) 후 그리드에 존재하는 공간에 관련이 있었다 생각합니다.

+0

죄송합니다, 잘못된 입력을주었습니다. 내가 실제로 사용하는 입력은 그것의 공간이 분리 된 버전입니다. 또한 : 버그를 발견했지만 응답 해 주셨습니다. pastebin의 내 붙여 넣기를 올바른 입력으로 업데이트했습니다. http://pastebin.com/JRKaqSed – AceFire6

+0

@ AceFire6 이제 작동합니까? 그리드를 읽고 올바르게 인쇄하는 것이 지금까지 내가 가진 유일한 문제 였기 때문에. 분명히 솔루션을 검증하지는 못했지만 잘 작동하는 것처럼 보였습니다. –

+0

아니요, 그리드를 완전히 해결하지 못합니다. 그것은 pastebin.com/8sgUzXVN에 도착한 다음 새로운 그리드 위치에 채우기를 멈 춥니 다. – AceFire6

0

버그를 발견했습니다. 각 행의 시작 부분에 행 집합 만 생성 중이므로 문제가 발생한 번호가 이미 사용되었는지 알 수 없습니다. 그것은 아직 아니지만 출력 완전히 마무리 스도쿠 그리드를 수행 http://pastebin.com/JRKaqSed

: 여기

는 수정 된 코드입니다.

+0

아마도 부분적으로 해결 된 스도쿠 퍼즐을 테스트로 사용하여 올바르게 다루지 않는 사례가 있는지 파악해야합니다. 또는 특정 조건을 확인한다고 생각되는 함수에 대한 단위 테스트를 작성할 것을 고려하십시오. –