2017-03-12 3 views
-2

私は数独解決プログラムをコーディングしており、合計で(0,0)から(8,8)、9x9 = 81セルまでのすべての座標点を反復するためのdouble forループを持っています。私は数字の文字列でセルに値を書き込もうとしていますが、それ以外の便利なメソッドは見つけられません。.charAt(i)は動作しません。0〜80の整数をポイント座標(0,0) - >(8,8)に変換する方法は?

私はループと(for j = 0; j < 9; j++)の二重ループを使用して座標を繰り返し使用しています。

0から80までの整数をポイント座標形式に変換する方法は誰も知っていますか(できればループの2倍なし)。

   StringBuilder sb = new StringBuilder(); 

       for (int i = 0; i < 9; i++) { 
        for (int j = 0; j < 9; j++) { 
         if (i == 0 && j == 0) { 
          sb.append(
            sudokuPuzzle.getSudokuCell(new Point(j, i)).toString().substring(76, 77)); 
         } else if (i == 0 && j == 1 || i == 1 && j == 0) { 
          sb.append(
            sudokuPuzzle.getSudokuCell(new Point(j, i)).toString().substring(77, 78)); 
         } else if (i == 0 && j < 9 || i == 1 && j == 1 || i >= 2 && j == 0) { 
          sb.append(
            sudokuPuzzle.getSudokuCell(new Point(j, i)).toString().substring(78, 79)); 
         } else if (i == 1 && j < 9 || i >= 2 && j == 1) { 
          sb.append(
            sudokuPuzzle.getSudokuCell(new Point(j, i)).toString().substring(79, 80)); 
         } else if (i >= 2 && j < 9 || i >= 2 && j == 1) { 
          sb.append(
            sudokuPuzzle.getSudokuCell(new Point(j, i)).toString().substring(80, 81)); 
         } 
        } 
       } 
       System.out.println(sb); 


       // for all sudoku cells 
       for (int i = 0; i < 9; i++) { 
        for (int j = 0; j < 9; j++) { 
         System.out.println(sb.charAt(i)); 
         int nextValue = sb.charAt(i); 

         if (nextValue != 0) { 
          // get next sudoku cell 
          SudokuCell sudokuCell = sudokuPuzzle.getSudokuCell(new Point(j, i)); 
          // set values 
          sudokuCell.setValue(nextValue); 
          sudokuCell.setIsInitial(true); 
          sudokuPuzzle.removePossibleValue(sudokuCell); 
          sudokuCell.clearPossibleValues(); 
          sudokuFrame.repaintSudokuPanel(); 
         } 
        } 
       } 

答えて

3

通常のマッピングに相当するi -> (i/9, i % 9)のマッピングを使用してください。

+0

何らかの理由で機能しませんでしたが、それは素晴らしいアイデアです。私はそれがモジュロハハとは関係があることを知っていました – Tai

関連する問題