数独作成 途中経過1
それっぽいかもしれないけど、これはまだただのデザインの段階、プログラミングらしい作業文はほとんどないです。
とりあえず、図と問題入力終了です!
次に、どうやって答えを求めさせるか?
今パッと思いつく考えとしては、
縦列、横列ともに1〜9までなので、比較的マスが埋められている文からfor文を使って、1〜9まで縦横共にない数字埋めると指定してうめるみたいな感じでできないかなーと考えています。
多次元配列 [行数][列数] であって、x軸とy軸ではないので要注意です。いうてみるならば、行数=y軸 列数=x軸 と並べ方が逆になっている。
private int masu = new int[9][9];
Main
public class Main {
public static void main(String args) {
//
Game game = new Game();
game.start();
}
public static void main(String args) {
//
Game game = new Game();
game.start();
}
}
Game
import java.util.Scanner;
public class Game {
public void start() {
int x;
int y;
boolean blackTurn;
blackTurn = true;
System.out.println("ゲームスタート!");
Board board = new Board();
board.show();
}
}
public class Game {
public void start() {
int x;
int y;
boolean blackTurn;
blackTurn = true;
System.out.println("ゲームスタート!");
Board board = new Board();
board.show();
}
}
Board
public class Board {
private int [] masu = new int[9][9];
public Board() {
for(int row=0; row<9; row++) {
for(int column=0; column<9; column++) {
masu[row][column] = 0;
}
}
//初期配置
//http://www.sudokugame.org/ 問題参照
masu[0][1] = 2; masu[0][2] = 7;masu[0][3] = 9; masu[0][6] = 4;
masu[0][7] = 6; masu[1][0] = 4;masu[1][1] = 9; masu[1][2] = 1;
masu[1][5] = 6; masu[2][5] = 3;masu[3][0] = 7; masu[3][2] = 6;
masu[3][3] = 3; masu[3][4] = 8;masu[3][6] = 9; masu[3][8] = 4;
masu[4][0] = 8; masu[4][1] = 1;masu[4][3] = 5; masu[4][4] = 9;
masu[4][6] = 6; masu[4][7] = 3;masu[5][1] = 4; masu[5][5] = 7;
masu[5][7] = 2; masu[5][8] = 5;masu[6][0] = 5; masu[6][1] = 3;
masu[6][2] = 4; masu[6][3] = 7;masu[6][4] = 2; masu[6][6] = 1;
masu[6][7] = 8; masu[7][0] = 2;masu[7][1] = 7; masu[7][2] = 8;
masu[7][4] = 5; masu[7][5] = 1;masu[7][6] = 3; masu[7][7] = 4;
masu[7][8] = 9; masu[8][0] = 1;masu[8][1] = 6; masu[8][3] = 4;
masu[8][5] = 8; masu[8][6] = 5;masu[8][8] = 2;
}
public void show() {
System.out.println(" 1 2 3 4 5 6 7 8 9");
System.out.println(" - - - - - - - - -");
for(int row=0; row<9; row++) {
System.out.print(row+1 +"|");
for(int column=0; column<9; column++) {
switch(masu[row][column]) {
case 0: System.out.print(" "); break;
case 1: System.out.print(" 1"); break;
case 2: System.out.print(" 2"); break;
case 3: System.out.print(" 3"); break;
case 4: System.out.print(" 4"); break;
case 5: System.out.print(" 5"); break;
case 6: System.out.print(" 6"); break;
case 7: System.out.print(" 7"); break;
case 8: System.out.print(" 8"); break;
case 9: System.out.print(" 9"); break;
}
}
System.out.println();
}
}
}
private int [] masu = new int[9][9];
public Board() {
for(int row=0; row<9; row++) {
for(int column=0; column<9; column++) {
masu[row][column] = 0;
}
}
//初期配置
//http://www.sudokugame.org/ 問題参照
masu[0][1] = 2; masu[0][2] = 7;masu[0][3] = 9; masu[0][6] = 4;
masu[0][7] = 6; masu[1][0] = 4;masu[1][1] = 9; masu[1][2] = 1;
masu[1][5] = 6; masu[2][5] = 3;masu[3][0] = 7; masu[3][2] = 6;
masu[3][3] = 3; masu[3][4] = 8;masu[3][6] = 9; masu[3][8] = 4;
masu[4][0] = 8; masu[4][1] = 1;masu[4][3] = 5; masu[4][4] = 9;
masu[4][6] = 6; masu[4][7] = 3;masu[5][1] = 4; masu[5][5] = 7;
masu[5][7] = 2; masu[5][8] = 5;masu[6][0] = 5; masu[6][1] = 3;
masu[6][2] = 4; masu[6][3] = 7;masu[6][4] = 2; masu[6][6] = 1;
masu[6][7] = 8; masu[7][0] = 2;masu[7][1] = 7; masu[7][2] = 8;
masu[7][4] = 5; masu[7][5] = 1;masu[7][6] = 3; masu[7][7] = 4;
masu[7][8] = 9; masu[8][0] = 1;masu[8][1] = 6; masu[8][3] = 4;
masu[8][5] = 8; masu[8][6] = 5;masu[8][8] = 2;
}
public void show() {
System.out.println(" 1 2 3 4 5 6 7 8 9");
System.out.println(" - - - - - - - - -");
for(int row=0; row<9; row++) {
System.out.print(row+1 +"|");
for(int column=0; column<9; column++) {
switch(masu[row][column]) {
case 0: System.out.print(" "); break;
case 1: System.out.print(" 1"); break;
case 2: System.out.print(" 2"); break;
case 3: System.out.print(" 3"); break;
case 4: System.out.print(" 4"); break;
case 5: System.out.print(" 5"); break;
case 6: System.out.print(" 6"); break;
case 7: System.out.print(" 7"); break;
case 8: System.out.print(" 8"); break;
case 9: System.out.print(" 9"); break;
}
}
System.out.println();
}
}
}