From c91056c345f698370455f1b7535b3e11b7012108 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klaas=20B=C3=B6rgmann?= Date: Wed, 22 May 2024 12:27:52 +0200 Subject: [PATCH] first commit --- .DS_Store | Bin 0 -> 6148 bytes main.cpp | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ readme.md | 0 sudoku | Bin 0 -> 17168 bytes sudoku.py | 57 ++++++++++++++++++++++++++++++++++++++++ 5 files changed, 134 insertions(+) create mode 100644 .DS_Store create mode 100644 main.cpp create mode 100644 readme.md create mode 100755 sudoku create mode 100644 sudoku.py diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 +#include +// #include +using namespace std; +int start[9][9] = +{ +{ 0, 8, 0, 0, 2, 0, 5, 6, 0 }, +{ 0, 0, 0, 1, 0, 0, 0, 0, 7 }, +{ 0, 0, 0, 0, 0, 0, 0, 0, 0 }, +{ 0, 5, 0, 0, 9, 0, 4, 0, 8 }, +{ 0, 0, 7, 8, 0, 0, 0, 0, 3 }, +{ 0, 9, 0, 0, 1, 0, 0, 5, 0 }, +{ 2, 0, 4, 0, 0, 0, 8, 0, 0 }, +{ 0, 6, 0, 0, 8, 5, 0, 0, 0 }, +{ 0, 0, 0, 2, 0, 0, 1, 0, 0 } +}; + +bool isfine(int feld[9][9], int x, int y) +{ +// doppelte Zahl in Zeile oder Spalte? +for (int yi = 0; yi < 9; yi++) +if (yi != y && feld[x][yi] == feld[x][y]) +return false; +for (int xi = 0; xi < 9; xi++) +if (xi != x && feld[xi][y] == feld[x][y]) +return false; + +// Neuner-Kästchen-Test +int x1 = (x / 3) * 3; +int y1 = (y / 3) * 3; +for (int xk = x1; xk < x1 + 3; xk++) +for (int yk = y1; yk < y1 + 3; yk++) +if ((xk!=x || yk!=y) && feld[xk][yk]==feld[x][y]) +return false; + +return true; +} + +bool nextone(int feld[9][9], int x, int y) +{ +if (y == 9) { y = 0; x++; }; +if (x == 9) return true; + +if (feld[x][y] > 0) +{ +if (!isfine(feld, x, y)) return false; +return nextone(feld, x, y + 1); +} +else for (feld[x][y] = 1; feld[x][y] <= 9; feld[x][y]++) +{ +if (!isfine(feld, x, y)) continue; +if (nextone(feld, x, y + 1)) return true; +} +feld[x][y] = 0; +return false; +} + +int main(int argc, char **argv) +{ + clock_t time1, tstart; + + tstart = clock(); +if (nextone(start, 0, 0)) +{ +for (int x = 0; x < 9; x++) +{ +for (int y = 0; y < 9; y++) + cout << start[x][y]; + cout << endl; +} +} +else cout << "Nope!" << endl; + +time1=clock(); +cout<Z{7 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 literal 0 HcmV?d00001 diff --git a/sudoku.py b/sudoku.py new file mode 100644 index 0000000..2fa9e23 --- /dev/null +++ b/sudoku.py @@ -0,0 +1,57 @@ +start = [[0, 8, 0, 0, 2, 0, 5, 6, 0], + [0, 0, 0, 1, 0, 0, 0, 0, 7], + [0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 5, 0, 0, 9, 0, 4, 0, 8], + [0, 0, 7, 8, 0, 0, 0, 0, 3], + [0, 9, 0, 0, 1, 0, 0, 5, 0], + [2, 0, 4, 0, 0, 0, 8, 0, 0], + [0, 6, 0, 0, 8, 5, 0, 0, 0], + [0, 0, 0, 2, 0, 0, 1, 0, 0]] + + +def isfine(feld, x, y): + for (int yi = 0; yi < 9; yi++): + if (yi != y && feld[x][yi] == feld[x][y]): + return false; + for (int xi = 0; xi < 9; xi++): + if (xi != x && feld[xi][y] == feld[x][y]): + return false; + x1 = (x / 3) * 3; + y1 = (y / 3) * 3; + for (int xk = x1; xk < x1 + 3; xk++): + for (int yk = y1; yk < y1 + 3; yk++): + if ((xk!=x || yk!=y) && feld[xk][yk]==feld[x][y]): + return false; + + return true; +} + +def nextone(feld, x, y): + if (y == 9): + y = 0; + x++; + if (x == 9): + return true; + if (feld[x][y] > 0): + if (!isfine(feld, x, y)) return false; + return nextone(feld, x, y + 1); + else: + for (feld[x][y] = 1; feld[x][y] <= 9; feld[x][y]++): + if (!isfine(feld, x, y)) continue; + if (nextone(feld, x, y + 1)) return true; + feld[x][y] = 0; + return false; + + +tstart = clock(); +if (nextone(start, 0, 0)): + for (int x = 0; x < 9; x++): + + for (int y = 0; y < 9; y++): + cout << start[x][y]; + cout << endl; +else: + print("Unmöglich!"); + +time1=clock(); +print(tstart." - " .time1."*".CLOCKS_PER_SEC)