/**
*
*
*/
import java.util.Random;
public class Sudoku {
public static void main(String args[]){
Random generator = new Random();
int edge=3, rowbase=0, colbase=0;
int[][] sudoku = new int [9][9];
int i=0, j=0, temp=0, l=0, m=0, n=0, count=0, rcounter=0;
int[] regionCheck = new int [9];
for(i=0; i<9; i++){
for (j=0; j<9; j++){
sudoku[i][j]=0;
}
}
boolean isUsed;
//Everything above is initialization, icky.
for (i=0; i<9; i++){
for(j=0; j<9; j++){
isUsed=false;
temp = generator.nextInt(9)+1;
for(l=0; l<9; l++){//Makes all vertical work.
if(sudoku[l][j] == temp){
isUsed=true;
}
}
for(m=0; m<9; m++){//makes all horizontal work
if(sudoku[i][m] == temp){
isUsed=true;
}
}
if(count >= 100){
for(l=0; l<9; l++){
sudoku[i][l]=0;
}
j=0;
}
if (count >1000){
count=0;
i--;
break;
}
rowbase = i-(i%3);
if(i==2 || i==5 || i==8 ){
if(rowbase == 0 || rowbase == 3 || rowbase == 6){
isUsed= RegionCheck.RegCheck(rowbase, sudoku);
}
}
if(isUsed==false){
sudoku[i][j]=temp;
}
else{
count++;
j--;
}//end else
}//End inner for loop
}//End outer for loop
for(i=0; i<9; i++){
for (j=0; j<9; j++){
System.out.print(sudoku[i][j] + " | ");
}
System.out.println();
System.out.println("-----------------------------------");
}
}//End main
}//end class
//////////////////////
///RegionCheck.java
//////////////////////
/**
*
*
*/
public class RegionCheck {
public static boolean RegCheck(int regionY, int[][] sudoku){
boolean okay = false;
int[] regionUsed = new int[9];
int i=0, j=0, regionTester=0, counter=0, numcount;
for (i=regionTester; i<regionTester+3; i++){
for (; j<3; j++){
regionUsed[counter]=sudoku[i][j];
counter++;
}
}
for(i=0; i<9; i++){
numcount=regionUsed[i];
for(j=0; j<9; j++){
if(j==i){
//null
}
else if(numcount == regionUsed[j]){
okay=false;
}
}
}
return okay;
}//End Method
}
LyoqCiAqCiAqIAogKi8KaW1wb3J0IGphdmEudXRpbC5SYW5kb207CnB1YmxpYyBjbGFzcyBTdWRva3UgewogICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBhcmdzW10pewogICAgICAgICAgICAKICAgICAgICAgICAgUmFuZG9tIGdlbmVyYXRvciA9IG5ldyBSYW5kb20oKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGludCBlZGdlPTMsIHJvd2Jhc2U9MCwgY29sYmFzZT0wOwogICAgICAgICAgICBpbnRbXVtdIHN1ZG9rdSA9IG5ldyBpbnQgWzldWzldOwogICAgICAgICAgICBpbnQgaT0wLCBqPTAsIHRlbXA9MCwgbD0wLCBtPTAsIG49MCwgY291bnQ9MCwgcmNvdW50ZXI9MDsKICAgICAgICAgICAgaW50W10gcmVnaW9uQ2hlY2sgPSBuZXcgaW50IFs5XTsKICAgICAgICAgICAgZm9yKGk9MDsgaTw5OyBpKyspewogICAgICAgICAgICAgICBmb3IgKGo9MDsgajw5OyBqKyspewogICAgICAgICAgICAgICAgICAgIHN1ZG9rdVtpXVtqXT0wOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9ICAgICAgICAgICAgCiAgICAgICAgICAgIGJvb2xlYW4gaXNVc2VkOwogICAgICAgICAgIAogICAgICAgICAgIC8vRXZlcnl0aGluZyBhYm92ZSBpcyBpbml0aWFsaXphdGlvbiwgaWNreS4KCiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIGZvciAoaT0wOyBpPDk7IGkrKyl7CiAgICAgICAgICAgICAgICBmb3Ioaj0wOyBqPDk7IGorKyl7CiAgICAgICAgICAgICAgICAgICAgaXNVc2VkPWZhbHNlOwogICAgICAgICAgICAgICAgICAgIHRlbXAgPSBnZW5lcmF0b3IubmV4dEludCg5KSsxOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGZvcihsPTA7IGw8OTsgbCsrKXsvL01ha2VzIGFsbCB2ZXJ0aWNhbCB3b3JrLgogICAgICAgICAgICAgICAgICAgICAgIGlmKHN1ZG9rdVtsXVtqXSA9PSB0ZW1wKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNVc2VkPXRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBmb3IobT0wOyBtPDk7IG0rKyl7Ly9tYWtlcyBhbGwgaG9yaXpvbnRhbCB3b3JrCiAgICAgICAgICAgICAgICAgICAgICAgaWYoc3Vkb2t1W2ldW21dID09IHRlbXApewogICAgICAgICAgICAgICAgICAgICAgICAgICBpc1VzZWQ9dHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICBpZihjb3VudCA+PSAxMDApewogICAgICAgICAgICAgICAgICAgICAgICBmb3IobD0wOyBsPDk7IGwrKyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWRva3VbaV1bbF09MDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBqPTA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCA+MTAwMCl7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50PTA7CiAgICAgICAgICAgICAgICAgICAgICAgIGktLTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJvd2Jhc2UgPSBpLShpJTMpOwogICAgICAgICAgICAgICAgICAgIGlmKGk9PTIgIHx8IGk9PTUgfHwgaT09OCApewogICAgICAgICAgICAgICAgICAgICAgICBpZihyb3diYXNlID09IDAgfHwgcm93YmFzZSA9PSAzIHx8IHJvd2Jhc2UgPT0gNil7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVXNlZD0gUmVnaW9uQ2hlY2suUmVnQ2hlY2socm93YmFzZSwgc3Vkb2t1KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmKGlzVXNlZD09ZmFsc2UpewogICAgICAgICAgICAgICAgICAgIHN1ZG9rdVtpXVtqXT10ZW1wOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICAgICAgICAgICAgICAgICBqLS07CiAgICAgICAgICAgICAgICAgICAgfS8vZW5kIGVsc2UKICAgICAgICAgICAgICAgIH0vL0VuZCBpbm5lciBmb3IgbG9vcAogICAgICAgICAgICB9Ly9FbmQgb3V0ZXIgZm9yIGxvb3AKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgZm9yKGk9MDsgaTw5OyBpKyspewogICAgICAgICAgICAgICBmb3IgKGo9MDsgajw5OyBqKyspewogICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoc3Vkb2t1W2ldW2pdICsgIiB8ICIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgfS8vRW5kIG1haW4KfS8vZW5kIGNsYXNzCgoKCgoKCgoKCgoKLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwovLy9SZWdpb25DaGVjay5qYXZhCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLyoqCiAqCiAqIAogKi8KcHVibGljIGNsYXNzIFJlZ2lvbkNoZWNrIHsKICAgIHB1YmxpYyAgc3RhdGljIGJvb2xlYW4gUmVnQ2hlY2soaW50IHJlZ2lvblksIGludFtdW10gc3Vkb2t1KXsKICAgICAgICBib29sZWFuIG9rYXkgPSBmYWxzZTsKICAgICAgICBpbnRbXSByZWdpb25Vc2VkID0gbmV3IGludFs5XTsKICAgICAgICBpbnQgaT0wLCBqPTAsIHJlZ2lvblRlc3Rlcj0wLCBjb3VudGVyPTAsIG51bWNvdW50OwogICAgICAgIGZvciAoaT1yZWdpb25UZXN0ZXI7IGk8cmVnaW9uVGVzdGVyKzM7IGkrKyl7CiAgICAgICAgICAgIGZvciAoOyBqPDM7IGorKyl7CiAgICAgICAgICAgICAgIHJlZ2lvblVzZWRbY291bnRlcl09c3Vkb2t1W2ldW2pdOwogICAgICAgICAgICAgICBjb3VudGVyKys7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZm9yKGk9MDsgaTw5OyBpKyspewogICAgICAgICAgICBudW1jb3VudD1yZWdpb25Vc2VkW2ldOwogICAgICAgICAgICBmb3Ioaj0wOyBqPDk7IGorKyl7CiAgICAgICAgICAgICAgICBpZihqPT1pKXsKICAgICAgICAgICAgICAgICAgICAvL251bGwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYobnVtY291bnQgPT0gcmVnaW9uVXNlZFtqXSl7CiAgICAgICAgICAgICAgICAgICAgb2theT1mYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gb2theTsKfS8vRW5kIE1ldGhvZAoKfQ==