-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();
}
}
}
何らかの理由で機能しませんでしたが、それは素晴らしいアイデアです。私はそれがモジュロハハとは関係があることを知っていました – Tai