/ Published in: C++
This is a Sudoku solver that I made; it isn't so great yet, you do have to supply quite a bit of information, but it is still a work in progress.
Expand |
Embed | Plain Text
//As you can tell, I am a 'for' loop junkie... /* Puzzle [?][4]|[?][2] [3][2]|[4][?] ------------- [2][?]|[?][4] [?][1]|[?][3] 7 ?'s 9 knowns */ /* [1][4]|[3][2] [3][2]|[4][1] ------------- [2][3]|[1][4] [4][1]|[2][3] */ #include <iostream> #include <cstdlib> #include <string> #include <algorithm> using namespace std; void sudokuSolve() { string myRow[4]; string numbers[] = {"1", "2", "3", "4"}; char numbers1[] = {'1', '2', '3', '4'}; int a, b, c, d, e, f, x, z, p, y, myLoop, theLoop; string sudoku[] = {"?4?2", "324?", "2??4", "?1?3"}; string myBox[4]; string command; for (a = 0; a < 2; a++) { cout << "[" << sudoku[a].at(0) << "|" << sudoku[a].at(1) << "]|[" << sudoku[a].at(2) << "|" << sudoku[a].at(3) << "]" << endl; } cout << "-----------" << endl; for (a = 2; a < 4; a++) { cout << "[" << sudoku[a].at(0) << "|" << sudoku[a].at(1) << "]|[" << sudoku[a].at(2) << "|" << sudoku[a].at(3) << "]" << endl; } cin >> command; if (command == "solve") { system("cls"); for (theLoop = 0; theLoop < 4; theLoop++) { for (myLoop = 0; myLoop < 4; myLoop++) { for (a = 0; a < 4; a++) { for (b = 0; b < 4; b++) { if (sudoku[a].at(b) == numbers1[myLoop]) { for (c = 0; c < 4; c++) { if (sudoku[c].at(b) == '?') { sudoku[c].replace(b, 1, "#"); } } for (c = 0; c < 4; c++) { if (sudoku[a].at(c) == '?') { sudoku[a].replace(c, 1, "#"); } } for (x = 0; x < 4; x=x+2) { for (z = 0; z < 4; z=z+2) { for (c = x; c < x+1; c++) { for (d = z; d < z+1; d++) { if (sudoku[c].at(d) == '?') { sudoku[c].replace(d, 1, "X"); for (e = 0; e < 4; e++) { if (sudoku[c].at(e) != '?') { sudoku[c].replace(d, 1, numbers[myLoop]); } else if(sudoku[c].at(e) == '?') { sudoku[c].replace(e, 1, "#"); sudoku[c].replace(d, 1, "#"); } } } } } } } } } } for (p = 0; p < 4; p++) { for (y = 0; y < 4; y++) { if (sudoku[p].at(y) == '#') { sudoku[p].replace(y, 1, "?"); } } } for (int a1 = 0; a1 < 4; a1++) { if (sudoku[0].at(a1) == '?' && sudoku[1].at(a1) != '?' && sudoku[2].at(a1) != '?' && sudoku[3].at(a1) != '?' && sudoku[0].at(a1) != sudoku[1].at(a1) && sudoku[0].at(a1) != sudoku[2].at(a1) && sudoku[0].at(a1) != sudoku[3].at(a1) && numbers1[myLoop] != sudoku[1].at(a1) && numbers1[myLoop] != sudoku[2].at(a1) && numbers1[myLoop] != sudoku[3].at(a1)) { sudoku[0].replace(a1, 1, numbers[myLoop]); } else if (sudoku[0].at(a1) != '?' && sudoku[1].at(a1) == '?' && sudoku[2].at(a1) != '?' && sudoku[3].at(a1) != '?' && sudoku[1].at(a1) != sudoku[0].at(a1) && sudoku[1].at(a1) != sudoku[2].at(a1) && sudoku[1].at(a1) != sudoku[3].at(a1) && numbers1[myLoop] != sudoku[0].at(a1) && numbers1[myLoop] != sudoku[2].at(a1) && numbers1[myLoop] != sudoku[3].at(a1)) { sudoku[1].replace(a1, 1, numbers[myLoop]); } else if (sudoku[0].at(a1) != '?' && sudoku[1].at(a1) != '?' && sudoku[2].at(a1) == '?' && sudoku[3].at(a1) != '?' && sudoku[2].at(a1) != sudoku[0].at(a1) && sudoku[2].at(a1) != sudoku[1].at(a1) && sudoku[2].at(a1) != sudoku[3].at(a1) && numbers1[myLoop] != sudoku[0].at(a1) && numbers1[myLoop] != sudoku[1].at(a1) && numbers1[myLoop] != sudoku[3].at(a1)) { sudoku[2].replace(a1, 1, numbers[myLoop]); } if (sudoku[0].at(a1) != '?' && sudoku[1].at(a1) != '?' && sudoku[2].at(a1) != '?' && sudoku[3].at(a1) == '?' && sudoku[3].at(a1) != sudoku[0].at(a1) && sudoku[3].at(a1) != sudoku[1].at(a1) && sudoku[3].at(a1) != sudoku[2].at(a1) && numbers1[myLoop] != sudoku[0].at(a1) && numbers1[myLoop] != sudoku[1].at(a1) && numbers1[myLoop] != sudoku[2].at(a1)) { sudoku[3].replace(a1, 1, numbers[myLoop]); } } } } for (a = 0; a < 2; a++) { cout << "[" << sudoku[a].at(0) << "|" << sudoku[a].at(1) << "]|[" << sudoku[a].at(2) << "|" << sudoku[a].at(3) << "]" << endl; } cout << "-----------" << endl; for (a = 2; a < 4; a++) { cout << "[" << sudoku[a].at(0) << "|" << sudoku[a].at(1) << "]|[" << sudoku[a].at(2) << "|" << sudoku[a].at(3) << "]" << endl; } } } int main() { sudokuSolve(); system("pause"); }
You need to login to post a comment.
