数独作成 途中経過2 3マスx3ますの数独完成したよ!
いちよう、3マスx3マスの超簡単な数独は完成しました!!!!!
でもこれの問題は9マスに対応できないと思います。なぜなら、横の数字のみの計算によって答えを出しているから。
6ー(問題の数字)=代入すべき数字
みたいに計算しちゃってるのです。この問題は最高でも穴の部分が1マスしかないため、計算が容易にできますが、一つの列で2つ以上の穴の空いた問題はこの計算式じゃおそらく成り立たないのです。
あー、これを解決できるのやら、、、
とにかく一歩一歩着実に進んで完成を目指します!
明日は9マスx9マスに挑戦です!!!
public class Board {
private int masu = new int[3][3];
public Board() {
for(int row=0; row<3; row++) {
for(int column=0; column<3; column++) {
masu[row][column] = 0;
}
}
//初期配置
//http://www.sudokugame.org/ 問題参照
/*masu[0][0] = 1;*/masu[0][1] = 2;masu[0][2] = 3;
/*masu[1][0] = 2*/;masu[1][1] = 3;masu[1][2] = 1;
masu[2][0] = 3;masu[2][1] = 1;/*masu[2][2] = 2;*/
}
public void show() {
System.out.println(" 1 2 3");
System.out.println(" - - -");
for(int row=0; row<3; row++) {
System.out.print(row+1 +"|");
for(int column=0; column<3; 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;
}
}
//これで次の行に改行している
System.out.println();
}
System.out.println("---------");
for (int row = 0; row< 1; row++) {
System.out.println(row + " 番目要素");
// j = 0 から初めて j < searches[i].length である間は繰り返し
for (int column = 0; column < masu[row].length; column++) {
System.out.print(masu[row][column] + "; ");
if(masu[row][column] == 0){
System.out.println("");
System.out.println("0あった");
//22:45代入方法はあってます!!!!あとはどうやって1だと理解し代入するか?
masu[row][column] = 6 - masu[0][1] - masu[0][2];
} }
System.out.println("");
}
for (int row = 1; row< 2; row++) {
System.out.println(row + " 番目要素");
// j = 0 から初めて j < searches[i].length である間は繰り返し
for (int column = 0; column < masu[row].length; column++) {
System.out.print(masu[row][column] + "; ");
if(masu[row][column] == 0){
System.out.println("");
System.out.println("0あった");
masu[row][column] = 6 - masu[1][1] - masu[1][2];
} }
System.out.println("");
}
for (int row = 2; row< 3; row++) {
System.out.println(row + " 番目要素");
// j = 0 から初めて j < searches[i].length である間は繰り返し
for (int column = 0; column < masu[row].length; column++) {
System.out.print(masu[row][column] + "; ");
if(masu[row][column] == 0){
System.out.println("");
System.out.println("0あった");
masu[row][column] = 6 - masu[2][0] - masu[2][1];
} }
System.out.println("");
}
//23:00代入した数字を入れて表示することに成功!!
System.out.println(" 1 2 3");
System.out.println(" - - -");
for(int row=0; row<3; row++) {
System.out.print(row+1 +"|");
for(int column=0; column<3; 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;
}
}
//これで次の行に改行している
System.out.println();
}
}
}
private int masu = new int[3][3];
public Board() {
for(int row=0; row<3; row++) {
for(int column=0; column<3; column++) {
masu[row][column] = 0;
}
}
//初期配置
//http://www.sudokugame.org/ 問題参照
/*masu[0][0] = 1;*/masu[0][1] = 2;masu[0][2] = 3;
/*masu[1][0] = 2*/;masu[1][1] = 3;masu[1][2] = 1;
masu[2][0] = 3;masu[2][1] = 1;/*masu[2][2] = 2;*/
}
public void show() {
System.out.println(" 1 2 3");
System.out.println(" - - -");
for(int row=0; row<3; row++) {
System.out.print(row+1 +"|");
for(int column=0; column<3; 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;
}
}
//これで次の行に改行している
System.out.println();
}
System.out.println("---------");
for (int row = 0; row< 1; row++) {
System.out.println(row + " 番目要素");
// j = 0 から初めて j < searches[i].length である間は繰り返し
for (int column = 0; column < masu[row].length; column++) {
System.out.print(masu[row][column] + "; ");
if(masu[row][column] == 0){
System.out.println("");
System.out.println("0あった");
//22:45代入方法はあってます!!!!あとはどうやって1だと理解し代入するか?
masu[row][column] = 6 - masu[0][1] - masu[0][2];
} }
System.out.println("");
}
for (int row = 1; row< 2; row++) {
System.out.println(row + " 番目要素");
// j = 0 から初めて j < searches[i].length である間は繰り返し
for (int column = 0; column < masu[row].length; column++) {
System.out.print(masu[row][column] + "; ");
if(masu[row][column] == 0){
System.out.println("");
System.out.println("0あった");
masu[row][column] = 6 - masu[1][1] - masu[1][2];
} }
System.out.println("");
}
for (int row = 2; row< 3; row++) {
System.out.println(row + " 番目要素");
// j = 0 から初めて j < searches[i].length である間は繰り返し
for (int column = 0; column < masu[row].length; column++) {
System.out.print(masu[row][column] + "; ");
if(masu[row][column] == 0){
System.out.println("");
System.out.println("0あった");
masu[row][column] = 6 - masu[2][0] - masu[2][1];
} }
System.out.println("");
}
//23:00代入した数字を入れて表示することに成功!!
System.out.println(" 1 2 3");
System.out.println(" - - -");
for(int row=0; row<3; row++) {
System.out.print(row+1 +"|");
for(int column=0; column<3; 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;
}
}
//これで次の行に改行している
System.out.println();
}
}
}