2013-11-24 3 views
2

나는 스도쿠 퍼즐을 연구 중이며 유효한 숫자를 생성하지 않는다는 점을 제외하고는 제대로 작동하고 있습니다. 내 함수는 유효한 숫자를 생성하기로되어있다. (내 바이올린() 함수는 내가 here에서 가져온 여기 왜 내 기능이 제대로 작동하지 않습니까?

내 generatePuzzle() 함수입니다 :.. 내가 말했듯이

// Generate sudoku puzzle 
function generatePuzzle() { 
    for(var h = 1; h <= 10; h++) { 
     fiddle(rowVal); 
    } 
    //emptyCells(); 
    putCellVal(); 
    for(var f = 0; f < 80; f++) { 
     if (document.forms[0].elements[f].value != '') { 
      document.forms[0].elements[f].readOnly = 'readonly'; 
     } 
    } 
} 

, 그것은 유효한 번호를 생성하지 않습니다 내 fiddle() 기능은 여전히 ​​잘못 (http://blog.forret.com/2006/08/a-sudoku-challenge-generator/ ..) 내 JSFiddle에 대한

Click here

당신은 스도쿠 플레이어가 아닌 경우, 여기에 규칙은 다음과 같습니다
01,238,050,857,936,622,617,321 1 매 수 있어야 9 번만
굵은 테두리가 각각 3 × 3 평방 - 각각의 열은 1 매 수 있어야 번만
9 - 0
각 행은 1 매 수 있어야 - 9 한 번만

JSFiddle 링크 :는 바이올린 함수의 논리는 스왑 http://jsfiddle.net/oliverni/rq5m6/

+0

그리고 '유효한 숫자'는 무엇입니까? –

+1

나는 어떤 숫자가 유효한지 알고 싶다. 유효한 번호와 잘못된 번호가 무엇인지 어떻게 알 수 있습니까? 여기서 모두가 수정해야 할 것을 이미 알 수있는 스도쿠 선수가 될 것이라고 기대하지 마십시오. –

+0

그들은 말했듯이 더 많은 정보가 필요하지만 문제가 있습니다 - 변수 "rowVal"이 호출되지 않으므로'fiddle (rowVal);은'fiddle (h);이어야합니다. 그게 빠진 것이 아니라면. –

답변

2

, 행/열/블록 당신이 올바른지 올바른 값을 저장하는 rowVal 행렬을 실제로 검사 할 수 있습니다.

입력 요소에 값을 할당하는 방법에 문제가 있습니다.

function putCellVal() { 
    var z = 0; 
    for(var i = 0; i < rowVal.length; i++) { 
     for(var j = 0; j < rowVal[i].length; j++) { 
      document.forms[0].elements[z].value = rowVal[i][j]; 
      z++; 
     } 
    } 
} 

은 분명히 각 블록 테이블을 사용하고, 위의 할당 논리에서, 당신은 실제로 "블록"을 rowVal의 "행"을 할당한다. 첫 번째 블록의 값인 [1,9,8,4,2,3,6,5,7] 인 rowVal [0]의 값을 확인할 수 있습니다.

<table> 
<tr> 
    <td><input type="text" name="x0y0" maxlength="1"> 
    <td><input type="text" name="x1y0" maxlength="1"> 
    <td><input type="text" name="x2y0" maxlength="1"> 
</tr> 
<tr> 
    <td><input type="text" name="x0y1" maxlength="1"> 
    <td><input type="text" name="x1y1" maxlength="1"> 
    <td><input type="text" name="x2y1" maxlength="1"> 
</tr> 
<tr> 
    <td><input type="text" name="x0y2" maxlength="1"> 
    <td><input type="text" name="x1y2" maxlength="1"> 
    <td><input type="text" name="x2y2" maxlength="1"> 
</tr> 
</table> 
+0

고마워요! T는 바보 같았고 테이블 서식을 변경했을 때 그 부분을 변경하지 않았습니다. 나는 그것을 하나의 커다란 테이블로 사용했지만 사용자가 사각형을 볼 수 있도록 그것을 변경했습니다. –

+0

실제로 바이올린 기능이 잘못되었으므로 바이올린 기능이 잘못되었습니다. 여기에 내 질문이 업데이트되었습니다. –

0

됐어! 하나의 커다란 테이블을 9 개의 작은 테이블로 바꿨지 만 이제 x0y5가 요소 5가 아니라 요소 11이되었습니다!