From 670027c119f300b713d059567267a382d8b01833 Mon Sep 17 00:00:00 2001 From: Trianta <56975502+Trimutex@users.noreply.github.com> Date: Sun, 22 Oct 2023 05:29:20 -0500 Subject: [PATCH] Final preparations for project --- src/sudoku.cpp | 47 +++++++++++++++++++++++++++++++++++++++++-- src/sudoku.hpp | 1 + src/sudoku_solver.cpp | 4 ++++ 3 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src/sudoku.cpp b/src/sudoku.cpp index 4911f30..903f035 100644 --- a/src/sudoku.cpp +++ b/src/sudoku.cpp @@ -19,29 +19,72 @@ void Sudoku::FillBoard(std::string filePath) { sudokuFile >> line; std::cout << line << std::endl; } + // TODO: Finish inputting sudoku file + // Really just needs to be split by digit then stored } +// TODO: Implement solving algorithm void Sudoku::Solve(void) { } +// TODO: Add checking for full board completion bool Sudoku::IsBoardSolved(void) { return true; } +// TODO: Add printing of board for visuals +// Maybe also print during solve? +void Sudoku::Print(void) { + +} + +// TODO: Add checking for row completion bool Sudoku::IsRowComplete(int row) { return true; } +// TODO: Add checking for column completion bool Sudoku::IsColumnComplete(int column) { return true; } +// WARNING: This function and one below could be swapped, untested std::vector Sudoku::GetUnusedInRow(int row) { - + std::vector leftOver{0,1,2,3,4,5,6,7,8,9}; + int number; + for (int i = 0; i < 9; i++) { + number = board[i][row]; + if (leftOver[number] == number) { + leftOver[number] = 0; + } + if (leftOver[number] == 0) { // Two of same number was placed + leftOver[number] = -1; + } + } + for (auto it = leftOver.begin(); it != leftOver.end();) { + if (*it == 0) { it = leftOver.erase(it); } + else { ++it; } + } + return leftOver; } std::vector Sudoku::GetUnusedInColumn(int column) { - + std::vector leftOver{0,1,2,3,4,5,6,7,8,9}; + int number; + for (int i = 0; i < 9; i++) { + number = board[column][i]; + if (leftOver[number] == number) { + leftOver[number] = 0; + } + if (leftOver[number] == 0) { // Two of same number was placed + leftOver[number] = -1; + } + } + for (auto it = leftOver.begin(); it != leftOver.end();) { + if (*it == 0) { it = leftOver.erase(it); } + else { ++it; } + } + return leftOver; } diff --git a/src/sudoku.hpp b/src/sudoku.hpp index 5bb8552..a466e61 100644 --- a/src/sudoku.hpp +++ b/src/sudoku.hpp @@ -11,6 +11,7 @@ public: void FillBoard(std::string filePath); void Solve(void); bool IsBoardSolved(void); + void Print(void); private: bool IsRowComplete(int row); bool IsColumnComplete(int column); diff --git a/src/sudoku_solver.cpp b/src/sudoku_solver.cpp index a325153..05f35f9 100644 --- a/src/sudoku_solver.cpp +++ b/src/sudoku_solver.cpp @@ -1,5 +1,9 @@ #include "sudoku.hpp" +// TODO: +// Take in sudoku file from arguments +// Run solve +// Print solution int main(void) { return 0; }