generated from Trianta/cpp-unity-template
Finished project #1
@ -1,7 +1,7 @@
|
|||||||
cmake_minimum_required(VERSION 3.10)
|
cmake_minimum_required(VERSION 3.10)
|
||||||
|
|
||||||
project(
|
project(
|
||||||
something
|
sudoku
|
||||||
LANGUAGES CXX)
|
LANGUAGES CXX)
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 11 CACHE STRING "The C++ standard to use")
|
set(CMAKE_CXX_STANDARD 11 CACHE STRING "The C++ standard to use")
|
||||||
|
22
README.md
22
README.md
@ -1,4 +1,12 @@
|
|||||||
# cpp-unity-template
|
# sudoku-solver
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
Uses a single sudoku file as input
|
||||||
|
|
||||||
|
Tests were ran on sudoku-easy-50 split into individual files
|
||||||
|
|
||||||
|
All were successfully solved
|
||||||
|
|
||||||
## Compiling the project
|
## Compiling the project
|
||||||
|
|
||||||
@ -11,20 +19,24 @@ In order to compile the project, simply run these two commands:
|
|||||||
cmake --build build
|
cmake --build build
|
||||||
|
|
||||||
## Running the Project
|
## Running the Project
|
||||||
The program should now be compiled at ./build/bin/something
|
The program should now be compiled at ./build/bin/sudoku
|
||||||
|
|
||||||
Simply run the program using:
|
Simply run the program using:
|
||||||
|
|
||||||
build/bin/something
|
build/bin/sudoku
|
||||||
|
|
||||||
## Testing the Project
|
## Testing the Project
|
||||||
|
|
||||||
|
Prerequisites
|
||||||
|
- Unity (Throw the Switch) | [AUR](https://aur.archlinux.org/packages/unity-test)
|
||||||
|
|
||||||
In order to compile the tests for the project, simply run these two commands:
|
In order to compile the tests for the project, simply run these two commands:
|
||||||
|
|
||||||
cmake -DCMAKE_BUILD_TYPE=Debug -B build -S .
|
cmake -DCMAKE_BUILD_TYPE=Debug -B build -S .
|
||||||
cmake --build build
|
cmake --build build
|
||||||
|
|
||||||
The program should now be compiled at ./build/bin/somethingTest
|
The program should now be compiled at ./build/bin/sudoku
|
||||||
|
|
||||||
Simply run the tests using:
|
Simply run the tests using:
|
||||||
|
|
||||||
build/bin/somethingTest
|
build/bin/testing
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
add_executable(something
|
add_executable(sudoku
|
||||||
./main.cpp
|
./sudoku_solver.cpp
|
||||||
|
./sudoku.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
target_include_directories(something PUBLIC ${CMAKE_CURRENT_LIST_DIR})
|
|
||||||
|
@ -1,6 +0,0 @@
|
|||||||
#include <iostream>
|
|
||||||
|
|
||||||
int main(void) {
|
|
||||||
std::cout << "Hello world" << std::endl;
|
|
||||||
return 0;
|
|
||||||
}
|
|
152
src/sudoku.cpp
Normal file
152
src/sudoku.cpp
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
#include "sudoku.hpp"
|
||||||
|
#include <fstream>
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
|
||||||
|
Sudoku::Sudoku(void) {
|
||||||
|
board.resize(9, std::vector<int>(9, -1));
|
||||||
|
}
|
||||||
|
|
||||||
|
void Sudoku::FillBoard(std::string filePath) {
|
||||||
|
std::ifstream sudokuFile(filePath);
|
||||||
|
if (!sudokuFile) {
|
||||||
|
std::cerr << "Error opening file: " << filePath << std::endl;
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
std::string line;
|
||||||
|
int height = 0;
|
||||||
|
while (!sudokuFile.eof() && height < 9) {
|
||||||
|
sudokuFile >> line;
|
||||||
|
for (int i = 0; i < 9; ++i) { board[height][i] = line[i] - '0'; }
|
||||||
|
++height;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Base global call for solving
|
||||||
|
void Sudoku::Solve(void) {
|
||||||
|
_Solve();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Sudoku::IsBoardSolved(void) {
|
||||||
|
int column, row;
|
||||||
|
if (!FindEmptyCell(&column, &row)) { return true; }
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Sudoku::Print(void) {
|
||||||
|
std::cout << "===================" << std::endl;
|
||||||
|
for (auto i : board) {
|
||||||
|
std::cout << '|';
|
||||||
|
for (auto j : i) {
|
||||||
|
std::cout << j << '|';
|
||||||
|
}
|
||||||
|
std::cout << std::endl;
|
||||||
|
}
|
||||||
|
std::cout << "===================" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Sudoku::RawPrint(void) {
|
||||||
|
for (auto i : board) {
|
||||||
|
for (auto j : i) {
|
||||||
|
std::cout << j;
|
||||||
|
}
|
||||||
|
std::cout << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Recursive call for solving
|
||||||
|
bool Sudoku::_Solve(void) {
|
||||||
|
int column, row;
|
||||||
|
if (!FindEmptyCell(&column, &row)) { return true; }
|
||||||
|
for (int i : GetUnusedRow(row)) {
|
||||||
|
for (int j : GetUnusedColumn(column)) {
|
||||||
|
for (int k : GetUnusedSubgrid(column, row)) {
|
||||||
|
if (i == j == k) {
|
||||||
|
board[row][column] = i;
|
||||||
|
if (_Solve()) { return true; }
|
||||||
|
board[row][column] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fills column and row of an empty cell and returns true
|
||||||
|
// If no empty cell is found, return false
|
||||||
|
bool Sudoku::FindEmptyCell(int* column, int* row) {
|
||||||
|
for (*row = 0; *row < 9; ++(*row)) {
|
||||||
|
for (*column = 0; *column < 9; ++(*column)) {
|
||||||
|
if (board[*row][*column] == 0) { return true; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Sudoku::IsValidPlacement(int column, int row, int box) {
|
||||||
|
// Check column and row
|
||||||
|
for (int i = 0; i < 9; ++i) {
|
||||||
|
if (board[row][i] == box || board[i][column] == box) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check subgrid
|
||||||
|
int startRow = row - row % 3;
|
||||||
|
int startColumn = column - column % 3;
|
||||||
|
for (int i = 0; i < 3; ++i) {
|
||||||
|
for (int j = 0; j < 3; ++j) {
|
||||||
|
if (board[startRow + i][startColumn + j] == box) { return false; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<int> Sudoku::GetUnusedRow(int row) {
|
||||||
|
std::vector<int> leftOver{0,1,2,3,4,5,6,7,8,9};
|
||||||
|
int box;
|
||||||
|
for (int i = 0; i < 9; i++) {
|
||||||
|
box = board[row][i];
|
||||||
|
if (leftOver[box] == box) { leftOver[box] = 0; }
|
||||||
|
}
|
||||||
|
for (auto it = leftOver.begin(); it != leftOver.end();) {
|
||||||
|
if (*it == 0) { it = leftOver.erase(it); }
|
||||||
|
else { ++it; }
|
||||||
|
}
|
||||||
|
return leftOver;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<int> Sudoku::GetUnusedColumn(int column) {
|
||||||
|
std::vector<int> leftOver{0,1,2,3,4,5,6,7,8,9};
|
||||||
|
int box;
|
||||||
|
for (int i = 0; i < 9; i++) {
|
||||||
|
box = board[i][column];
|
||||||
|
if (leftOver[box] == box) { leftOver[box] = 0; }
|
||||||
|
}
|
||||||
|
for (auto it = leftOver.begin(); it != leftOver.end();) {
|
||||||
|
if (*it == 0) { it = leftOver.erase(it); }
|
||||||
|
else { ++it; }
|
||||||
|
}
|
||||||
|
return leftOver;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<int> Sudoku::GetUnusedSubgrid(int column, int row) {
|
||||||
|
std::vector<int> leftOver{0,1,2,3,4,5,6,7,8,9};
|
||||||
|
int box;
|
||||||
|
int startRow = row - row % 3;
|
||||||
|
int startColumn = column - column % 3;
|
||||||
|
for (int i = 0; i < 3; ++i) {
|
||||||
|
for (int j = 0; j < 3; ++j) {
|
||||||
|
box = board[row][column];
|
||||||
|
if (board[startRow + i][startColumn + j] == box) {
|
||||||
|
leftOver[box] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (auto it = leftOver.begin(); it != leftOver.end();) {
|
||||||
|
if (*it == 0) { it = leftOver.erase(it); }
|
||||||
|
else { ++it; }
|
||||||
|
}
|
||||||
|
return leftOver;
|
||||||
|
}
|
25
src/sudoku.hpp
Normal file
25
src/sudoku.hpp
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
#ifndef SUDOKU_HPP
|
||||||
|
#define SUDOKU_HPP
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
class Sudoku {
|
||||||
|
public:
|
||||||
|
Sudoku(void);
|
||||||
|
std::vector< std::vector<int> > board;
|
||||||
|
void FillBoard(std::string filePath);
|
||||||
|
void Solve(void);
|
||||||
|
bool IsBoardSolved(void);
|
||||||
|
void Print(void);
|
||||||
|
void RawPrint(void);
|
||||||
|
private:
|
||||||
|
bool _Solve(void);
|
||||||
|
bool FindEmptyCell(int* column, int* row);
|
||||||
|
bool IsValidPlacement(int column, int row, int box);
|
||||||
|
std::vector<int> GetUnusedRow(int row);
|
||||||
|
std::vector<int> GetUnusedColumn(int column);
|
||||||
|
std::vector<int> GetUnusedSubgrid(int column, int row);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
14
src/sudoku_solver.cpp
Normal file
14
src/sudoku_solver.cpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#include "sudoku.hpp"
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int main(int argc, char* argv[]) {
|
||||||
|
if (argc != 2) {
|
||||||
|
std::cerr << "Usage: " << argv[0] << " path/to/sudoku" << std::endl;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
Sudoku newGame;
|
||||||
|
newGame.FillBoard(argv[1]);
|
||||||
|
newGame.Solve();
|
||||||
|
newGame.RawPrint();
|
||||||
|
return 0;
|
||||||
|
}
|
@ -1,7 +1,9 @@
|
|||||||
find_package(unity REQUIRED)
|
find_package(unity REQUIRED)
|
||||||
include_directories(${CMAKE_SOURCE_DIR}/src)
|
include_directories(${sudoku_SOURCE_DIR}/src)
|
||||||
add_executable(testing
|
add_executable(testing
|
||||||
test.cpp
|
test.cpp
|
||||||
|
test_list.cpp
|
||||||
|
../src/sudoku.cpp
|
||||||
)
|
)
|
||||||
set_target_properties(testing PROPERTIES LINKER_LANGUAGE CXX)
|
set_target_properties(testing PROPERTIES LINKER_LANGUAGE CXX)
|
||||||
target_link_libraries(testing unity)
|
target_link_libraries(testing unity)
|
||||||
|
9
test/files/sudoku-easy-01.txt
Normal file
9
test/files/sudoku-easy-01.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
003020600
|
||||||
|
900305001
|
||||||
|
001806400
|
||||||
|
008102900
|
||||||
|
700000008
|
||||||
|
006708200
|
||||||
|
002609500
|
||||||
|
800203009
|
||||||
|
005010300
|
9
test/files/sudoku-easy-02.txt
Normal file
9
test/files/sudoku-easy-02.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
200080300
|
||||||
|
060070084
|
||||||
|
030500209
|
||||||
|
000105408
|
||||||
|
000000000
|
||||||
|
402706000
|
||||||
|
301007040
|
||||||
|
720040060
|
||||||
|
004010003
|
9
test/files/sudoku-easy-03.txt
Normal file
9
test/files/sudoku-easy-03.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
000000907
|
||||||
|
000420180
|
||||||
|
000705026
|
||||||
|
100904000
|
||||||
|
050000040
|
||||||
|
000507009
|
||||||
|
920108000
|
||||||
|
034059000
|
||||||
|
507000000
|
9
test/files/sudoku-easy-04.txt
Normal file
9
test/files/sudoku-easy-04.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
030050040
|
||||||
|
008010500
|
||||||
|
460000012
|
||||||
|
070502080
|
||||||
|
000603000
|
||||||
|
040109030
|
||||||
|
250000098
|
||||||
|
001020600
|
||||||
|
080060020
|
9
test/files/sudoku-easy-05.txt
Normal file
9
test/files/sudoku-easy-05.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
020810740
|
||||||
|
700003100
|
||||||
|
090002805
|
||||||
|
009040087
|
||||||
|
400208003
|
||||||
|
160030200
|
||||||
|
302700060
|
||||||
|
005600008
|
||||||
|
076051090
|
9
test/files/sudoku-easy-06.txt
Normal file
9
test/files/sudoku-easy-06.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
100920000
|
||||||
|
524010000
|
||||||
|
000000070
|
||||||
|
050008102
|
||||||
|
000000000
|
||||||
|
402700090
|
||||||
|
060000000
|
||||||
|
000030945
|
||||||
|
000071006
|
9
test/files/sudoku-easy-07.txt
Normal file
9
test/files/sudoku-easy-07.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
043080250
|
||||||
|
600000000
|
||||||
|
000001094
|
||||||
|
900004070
|
||||||
|
000608000
|
||||||
|
010200003
|
||||||
|
820500000
|
||||||
|
000000005
|
||||||
|
034090710
|
9
test/files/sudoku-easy-08.txt
Normal file
9
test/files/sudoku-easy-08.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
480006902
|
||||||
|
002008001
|
||||||
|
900370060
|
||||||
|
840010200
|
||||||
|
003704100
|
||||||
|
001060049
|
||||||
|
020085007
|
||||||
|
700900600
|
||||||
|
609200018
|
9
test/files/sudoku-easy-09.txt
Normal file
9
test/files/sudoku-easy-09.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
000900002
|
||||||
|
050123400
|
||||||
|
030000160
|
||||||
|
908000000
|
||||||
|
070000090
|
||||||
|
000000205
|
||||||
|
091000050
|
||||||
|
007439020
|
||||||
|
400007000
|
9
test/files/sudoku-easy-10.txt
Normal file
9
test/files/sudoku-easy-10.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
001900003
|
||||||
|
900700160
|
||||||
|
030005007
|
||||||
|
050000009
|
||||||
|
004302600
|
||||||
|
200000070
|
||||||
|
600100030
|
||||||
|
042007006
|
||||||
|
500006800
|
9
test/files/sudoku-easy-11.txt
Normal file
9
test/files/sudoku-easy-11.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
000125400
|
||||||
|
008400000
|
||||||
|
420800000
|
||||||
|
030000095
|
||||||
|
060902010
|
||||||
|
510000060
|
||||||
|
000003049
|
||||||
|
000007200
|
||||||
|
001298000
|
9
test/files/sudoku-easy-12.txt
Normal file
9
test/files/sudoku-easy-12.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
062340750
|
||||||
|
100005600
|
||||||
|
570000040
|
||||||
|
000094800
|
||||||
|
400000006
|
||||||
|
005830000
|
||||||
|
030000091
|
||||||
|
006400007
|
||||||
|
059083260
|
9
test/files/sudoku-easy-13.txt
Normal file
9
test/files/sudoku-easy-13.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
300000000
|
||||||
|
005009000
|
||||||
|
200504000
|
||||||
|
020000700
|
||||||
|
160000058
|
||||||
|
704310600
|
||||||
|
000890100
|
||||||
|
000067080
|
||||||
|
000005437
|
9
test/files/sudoku-easy-14.txt
Normal file
9
test/files/sudoku-easy-14.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
630000000
|
||||||
|
000500008
|
||||||
|
005674000
|
||||||
|
000020000
|
||||||
|
003401020
|
||||||
|
000000345
|
||||||
|
000007004
|
||||||
|
080300902
|
||||||
|
947100080
|
9
test/files/sudoku-easy-15.txt
Normal file
9
test/files/sudoku-easy-15.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
000020040
|
||||||
|
008035000
|
||||||
|
000070602
|
||||||
|
031046970
|
||||||
|
200000000
|
||||||
|
000501203
|
||||||
|
049000730
|
||||||
|
000000010
|
||||||
|
800004000
|
9
test/files/sudoku-easy-16.txt
Normal file
9
test/files/sudoku-easy-16.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
361025900
|
||||||
|
080960010
|
||||||
|
400000057
|
||||||
|
008000471
|
||||||
|
000603000
|
||||||
|
259000800
|
||||||
|
740000005
|
||||||
|
020018060
|
||||||
|
005470329
|
9
test/files/sudoku-easy-17.txt
Normal file
9
test/files/sudoku-easy-17.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
050807020
|
||||||
|
600010090
|
||||||
|
702540006
|
||||||
|
070020301
|
||||||
|
504000908
|
||||||
|
103080070
|
||||||
|
900076205
|
||||||
|
060090003
|
||||||
|
080103040
|
9
test/files/sudoku-easy-18.txt
Normal file
9
test/files/sudoku-easy-18.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
080005000
|
||||||
|
000003457
|
||||||
|
000070809
|
||||||
|
060400903
|
||||||
|
007010500
|
||||||
|
408007020
|
||||||
|
901020000
|
||||||
|
842300000
|
||||||
|
000100080
|
9
test/files/sudoku-easy-19.txt
Normal file
9
test/files/sudoku-easy-19.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
003502900
|
||||||
|
000040000
|
||||||
|
106000305
|
||||||
|
900251008
|
||||||
|
070408030
|
||||||
|
800763001
|
||||||
|
308000104
|
||||||
|
000020000
|
||||||
|
005104800
|
9
test/files/sudoku-easy-20.txt
Normal file
9
test/files/sudoku-easy-20.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
000000000
|
||||||
|
009805100
|
||||||
|
051907420
|
||||||
|
290401065
|
||||||
|
000000000
|
||||||
|
140508093
|
||||||
|
026709580
|
||||||
|
005103600
|
||||||
|
000000000
|
9
test/files/sudoku-easy-21.txt
Normal file
9
test/files/sudoku-easy-21.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
020030090
|
||||||
|
000907000
|
||||||
|
900208005
|
||||||
|
004806500
|
||||||
|
607000208
|
||||||
|
003102900
|
||||||
|
800605007
|
||||||
|
000309000
|
||||||
|
030020050
|
9
test/files/sudoku-easy-22.txt
Normal file
9
test/files/sudoku-easy-22.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
005000006
|
||||||
|
070009020
|
||||||
|
000500107
|
||||||
|
804150000
|
||||||
|
000803000
|
||||||
|
000092805
|
||||||
|
907006000
|
||||||
|
030400010
|
||||||
|
200000600
|
9
test/files/sudoku-easy-23.txt
Normal file
9
test/files/sudoku-easy-23.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
040000050
|
||||||
|
001943600
|
||||||
|
009000300
|
||||||
|
600050002
|
||||||
|
103000506
|
||||||
|
800020007
|
||||||
|
005000200
|
||||||
|
002436700
|
||||||
|
030000040
|
9
test/files/sudoku-easy-24.txt
Normal file
9
test/files/sudoku-easy-24.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
004000000
|
||||||
|
000030002
|
||||||
|
390700080
|
||||||
|
400009001
|
||||||
|
209801307
|
||||||
|
600200008
|
||||||
|
010008053
|
||||||
|
900040000
|
||||||
|
000000800
|
9
test/files/sudoku-easy-25.txt
Normal file
9
test/files/sudoku-easy-25.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
360020089
|
||||||
|
000361000
|
||||||
|
000000000
|
||||||
|
803000602
|
||||||
|
400603007
|
||||||
|
607000108
|
||||||
|
000000000
|
||||||
|
000418000
|
||||||
|
970030014
|
9
test/files/sudoku-easy-26.txt
Normal file
9
test/files/sudoku-easy-26.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
500400060
|
||||||
|
009000800
|
||||||
|
640020000
|
||||||
|
000001008
|
||||||
|
208000501
|
||||||
|
700500000
|
||||||
|
000090084
|
||||||
|
003000600
|
||||||
|
060003002
|
9
test/files/sudoku-easy-27.txt
Normal file
9
test/files/sudoku-easy-27.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
007256400
|
||||||
|
400000005
|
||||||
|
010030060
|
||||||
|
000508000
|
||||||
|
008060200
|
||||||
|
000107000
|
||||||
|
030070090
|
||||||
|
200000004
|
||||||
|
006312700
|
9
test/files/sudoku-easy-28.txt
Normal file
9
test/files/sudoku-easy-28.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
000000000
|
||||||
|
079050180
|
||||||
|
800000007
|
||||||
|
007306800
|
||||||
|
450708096
|
||||||
|
003502700
|
||||||
|
700000005
|
||||||
|
016030420
|
||||||
|
000000000
|
9
test/files/sudoku-easy-29.txt
Normal file
9
test/files/sudoku-easy-29.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
030000080
|
||||||
|
009000500
|
||||||
|
007509200
|
||||||
|
700105008
|
||||||
|
020090030
|
||||||
|
900402001
|
||||||
|
004207100
|
||||||
|
002000800
|
||||||
|
070000090
|
9
test/files/sudoku-easy-30.txt
Normal file
9
test/files/sudoku-easy-30.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
200170603
|
||||||
|
050000100
|
||||||
|
000006079
|
||||||
|
000040700
|
||||||
|
000801000
|
||||||
|
009050000
|
||||||
|
310400000
|
||||||
|
005000060
|
||||||
|
906037002
|
9
test/files/sudoku-easy-31.txt
Normal file
9
test/files/sudoku-easy-31.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
000000080
|
||||||
|
800701040
|
||||||
|
040020030
|
||||||
|
374000900
|
||||||
|
000030000
|
||||||
|
005000321
|
||||||
|
010060050
|
||||||
|
050802006
|
||||||
|
080000000
|
9
test/files/sudoku-easy-32.txt
Normal file
9
test/files/sudoku-easy-32.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
000000085
|
||||||
|
000210009
|
||||||
|
960080100
|
||||||
|
500800016
|
||||||
|
000000000
|
||||||
|
890006007
|
||||||
|
009070052
|
||||||
|
300054000
|
||||||
|
480000000
|
9
test/files/sudoku-easy-33.txt
Normal file
9
test/files/sudoku-easy-33.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
608070502
|
||||||
|
050608070
|
||||||
|
002000300
|
||||||
|
500090006
|
||||||
|
040302050
|
||||||
|
800050003
|
||||||
|
005000200
|
||||||
|
010704090
|
||||||
|
409060701
|
9
test/files/sudoku-easy-34.txt
Normal file
9
test/files/sudoku-easy-34.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
050010040
|
||||||
|
107000602
|
||||||
|
000905000
|
||||||
|
208030501
|
||||||
|
040070020
|
||||||
|
901080406
|
||||||
|
000401000
|
||||||
|
304000709
|
||||||
|
020060010
|
9
test/files/sudoku-easy-35.txt
Normal file
9
test/files/sudoku-easy-35.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
053000790
|
||||||
|
009753400
|
||||||
|
100000002
|
||||||
|
090080010
|
||||||
|
000907000
|
||||||
|
080030070
|
||||||
|
500000003
|
||||||
|
007641200
|
||||||
|
061000940
|
9
test/files/sudoku-easy-36.txt
Normal file
9
test/files/sudoku-easy-36.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
006080300
|
||||||
|
049070250
|
||||||
|
000405000
|
||||||
|
600317004
|
||||||
|
007000800
|
||||||
|
100826009
|
||||||
|
000702000
|
||||||
|
075040190
|
||||||
|
003090600
|
9
test/files/sudoku-easy-37.txt
Normal file
9
test/files/sudoku-easy-37.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
005080700
|
||||||
|
700204005
|
||||||
|
320000084
|
||||||
|
060105040
|
||||||
|
008000500
|
||||||
|
070803010
|
||||||
|
450000091
|
||||||
|
600508007
|
||||||
|
003010600
|
9
test/files/sudoku-easy-38.txt
Normal file
9
test/files/sudoku-easy-38.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
000900800
|
||||||
|
128006400
|
||||||
|
070800060
|
||||||
|
800430007
|
||||||
|
500000009
|
||||||
|
600079008
|
||||||
|
090004010
|
||||||
|
003600284
|
||||||
|
001007000
|
9
test/files/sudoku-easy-39.txt
Normal file
9
test/files/sudoku-easy-39.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
000080000
|
||||||
|
270000054
|
||||||
|
095000810
|
||||||
|
009806400
|
||||||
|
020403060
|
||||||
|
006905100
|
||||||
|
017000620
|
||||||
|
460000038
|
||||||
|
000090000
|
9
test/files/sudoku-easy-40.txt
Normal file
9
test/files/sudoku-easy-40.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
000602000
|
||||||
|
400050001
|
||||||
|
085010620
|
||||||
|
038206710
|
||||||
|
000000000
|
||||||
|
019407350
|
||||||
|
026040530
|
||||||
|
900020007
|
||||||
|
000809000
|
9
test/files/sudoku-easy-41.txt
Normal file
9
test/files/sudoku-easy-41.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
000900002
|
||||||
|
050123400
|
||||||
|
030000160
|
||||||
|
908000000
|
||||||
|
070000090
|
||||||
|
000000205
|
||||||
|
091000050
|
||||||
|
007439020
|
||||||
|
400007000
|
9
test/files/sudoku-easy-42.txt
Normal file
9
test/files/sudoku-easy-42.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
380000000
|
||||||
|
000400785
|
||||||
|
009020300
|
||||||
|
060090000
|
||||||
|
800302009
|
||||||
|
000040070
|
||||||
|
001070500
|
||||||
|
495006000
|
||||||
|
000000092
|
9
test/files/sudoku-easy-43.txt
Normal file
9
test/files/sudoku-easy-43.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
000158000
|
||||||
|
002060800
|
||||||
|
030000040
|
||||||
|
027030510
|
||||||
|
000000000
|
||||||
|
046080790
|
||||||
|
050000080
|
||||||
|
004070100
|
||||||
|
000325000
|
9
test/files/sudoku-easy-44.txt
Normal file
9
test/files/sudoku-easy-44.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
010500200
|
||||||
|
900001000
|
||||||
|
002008030
|
||||||
|
500030007
|
||||||
|
008000500
|
||||||
|
600080004
|
||||||
|
040100700
|
||||||
|
000700006
|
||||||
|
003004050
|
9
test/files/sudoku-easy-45.txt
Normal file
9
test/files/sudoku-easy-45.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
080000040
|
||||||
|
000469000
|
||||||
|
400000007
|
||||||
|
005904600
|
||||||
|
070608030
|
||||||
|
008502100
|
||||||
|
900000005
|
||||||
|
000781000
|
||||||
|
060000010
|
9
test/files/sudoku-easy-46.txt
Normal file
9
test/files/sudoku-easy-46.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
904200007
|
||||||
|
010000000
|
||||||
|
000706500
|
||||||
|
000800090
|
||||||
|
020904060
|
||||||
|
040002000
|
||||||
|
001607000
|
||||||
|
000000030
|
||||||
|
300005702
|
9
test/files/sudoku-easy-47.txt
Normal file
9
test/files/sudoku-easy-47.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
000700800
|
||||||
|
006000031
|
||||||
|
040002000
|
||||||
|
024070000
|
||||||
|
010030080
|
||||||
|
000060290
|
||||||
|
000800070
|
||||||
|
860000500
|
||||||
|
002006000
|
9
test/files/sudoku-easy-48.txt
Normal file
9
test/files/sudoku-easy-48.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
001007090
|
||||||
|
590080001
|
||||||
|
030000080
|
||||||
|
000005800
|
||||||
|
050060020
|
||||||
|
004100000
|
||||||
|
080000030
|
||||||
|
100020079
|
||||||
|
020700400
|
9
test/files/sudoku-easy-49.txt
Normal file
9
test/files/sudoku-easy-49.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
000003017
|
||||||
|
015009008
|
||||||
|
060000000
|
||||||
|
100007000
|
||||||
|
009000200
|
||||||
|
000500004
|
||||||
|
000000020
|
||||||
|
500600340
|
||||||
|
340200000
|
9
test/files/sudoku-easy-50.txt
Normal file
9
test/files/sudoku-easy-50.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
300200000
|
||||||
|
000107000
|
||||||
|
706030500
|
||||||
|
070009080
|
||||||
|
900020004
|
||||||
|
010800050
|
||||||
|
009040301
|
||||||
|
000702000
|
||||||
|
000008006
|
499
test/files/sudoku-easy-full.txt
Normal file
499
test/files/sudoku-easy-full.txt
Normal file
@ -0,0 +1,499 @@
|
|||||||
|
003020600
|
||||||
|
900305001
|
||||||
|
001806400
|
||||||
|
008102900
|
||||||
|
700000008
|
||||||
|
006708200
|
||||||
|
002609500
|
||||||
|
800203009
|
||||||
|
005010300
|
||||||
|
========
|
||||||
|
200080300
|
||||||
|
060070084
|
||||||
|
030500209
|
||||||
|
000105408
|
||||||
|
000000000
|
||||||
|
402706000
|
||||||
|
301007040
|
||||||
|
720040060
|
||||||
|
004010003
|
||||||
|
========
|
||||||
|
000000907
|
||||||
|
000420180
|
||||||
|
000705026
|
||||||
|
100904000
|
||||||
|
050000040
|
||||||
|
000507009
|
||||||
|
920108000
|
||||||
|
034059000
|
||||||
|
507000000
|
||||||
|
========
|
||||||
|
030050040
|
||||||
|
008010500
|
||||||
|
460000012
|
||||||
|
070502080
|
||||||
|
000603000
|
||||||
|
040109030
|
||||||
|
250000098
|
||||||
|
001020600
|
||||||
|
080060020
|
||||||
|
========
|
||||||
|
020810740
|
||||||
|
700003100
|
||||||
|
090002805
|
||||||
|
009040087
|
||||||
|
400208003
|
||||||
|
160030200
|
||||||
|
302700060
|
||||||
|
005600008
|
||||||
|
076051090
|
||||||
|
========
|
||||||
|
100920000
|
||||||
|
524010000
|
||||||
|
000000070
|
||||||
|
050008102
|
||||||
|
000000000
|
||||||
|
402700090
|
||||||
|
060000000
|
||||||
|
000030945
|
||||||
|
000071006
|
||||||
|
========
|
||||||
|
043080250
|
||||||
|
600000000
|
||||||
|
000001094
|
||||||
|
900004070
|
||||||
|
000608000
|
||||||
|
010200003
|
||||||
|
820500000
|
||||||
|
000000005
|
||||||
|
034090710
|
||||||
|
========
|
||||||
|
480006902
|
||||||
|
002008001
|
||||||
|
900370060
|
||||||
|
840010200
|
||||||
|
003704100
|
||||||
|
001060049
|
||||||
|
020085007
|
||||||
|
700900600
|
||||||
|
609200018
|
||||||
|
========
|
||||||
|
000900002
|
||||||
|
050123400
|
||||||
|
030000160
|
||||||
|
908000000
|
||||||
|
070000090
|
||||||
|
000000205
|
||||||
|
091000050
|
||||||
|
007439020
|
||||||
|
400007000
|
||||||
|
========
|
||||||
|
001900003
|
||||||
|
900700160
|
||||||
|
030005007
|
||||||
|
050000009
|
||||||
|
004302600
|
||||||
|
200000070
|
||||||
|
600100030
|
||||||
|
042007006
|
||||||
|
500006800
|
||||||
|
========
|
||||||
|
000125400
|
||||||
|
008400000
|
||||||
|
420800000
|
||||||
|
030000095
|
||||||
|
060902010
|
||||||
|
510000060
|
||||||
|
000003049
|
||||||
|
000007200
|
||||||
|
001298000
|
||||||
|
========
|
||||||
|
062340750
|
||||||
|
100005600
|
||||||
|
570000040
|
||||||
|
000094800
|
||||||
|
400000006
|
||||||
|
005830000
|
||||||
|
030000091
|
||||||
|
006400007
|
||||||
|
059083260
|
||||||
|
========
|
||||||
|
300000000
|
||||||
|
005009000
|
||||||
|
200504000
|
||||||
|
020000700
|
||||||
|
160000058
|
||||||
|
704310600
|
||||||
|
000890100
|
||||||
|
000067080
|
||||||
|
000005437
|
||||||
|
========
|
||||||
|
630000000
|
||||||
|
000500008
|
||||||
|
005674000
|
||||||
|
000020000
|
||||||
|
003401020
|
||||||
|
000000345
|
||||||
|
000007004
|
||||||
|
080300902
|
||||||
|
947100080
|
||||||
|
========
|
||||||
|
000020040
|
||||||
|
008035000
|
||||||
|
000070602
|
||||||
|
031046970
|
||||||
|
200000000
|
||||||
|
000501203
|
||||||
|
049000730
|
||||||
|
000000010
|
||||||
|
800004000
|
||||||
|
========
|
||||||
|
361025900
|
||||||
|
080960010
|
||||||
|
400000057
|
||||||
|
008000471
|
||||||
|
000603000
|
||||||
|
259000800
|
||||||
|
740000005
|
||||||
|
020018060
|
||||||
|
005470329
|
||||||
|
========
|
||||||
|
050807020
|
||||||
|
600010090
|
||||||
|
702540006
|
||||||
|
070020301
|
||||||
|
504000908
|
||||||
|
103080070
|
||||||
|
900076205
|
||||||
|
060090003
|
||||||
|
080103040
|
||||||
|
========
|
||||||
|
080005000
|
||||||
|
000003457
|
||||||
|
000070809
|
||||||
|
060400903
|
||||||
|
007010500
|
||||||
|
408007020
|
||||||
|
901020000
|
||||||
|
842300000
|
||||||
|
000100080
|
||||||
|
========
|
||||||
|
003502900
|
||||||
|
000040000
|
||||||
|
106000305
|
||||||
|
900251008
|
||||||
|
070408030
|
||||||
|
800763001
|
||||||
|
308000104
|
||||||
|
000020000
|
||||||
|
005104800
|
||||||
|
========
|
||||||
|
000000000
|
||||||
|
009805100
|
||||||
|
051907420
|
||||||
|
290401065
|
||||||
|
000000000
|
||||||
|
140508093
|
||||||
|
026709580
|
||||||
|
005103600
|
||||||
|
000000000
|
||||||
|
========
|
||||||
|
020030090
|
||||||
|
000907000
|
||||||
|
900208005
|
||||||
|
004806500
|
||||||
|
607000208
|
||||||
|
003102900
|
||||||
|
800605007
|
||||||
|
000309000
|
||||||
|
030020050
|
||||||
|
========
|
||||||
|
005000006
|
||||||
|
070009020
|
||||||
|
000500107
|
||||||
|
804150000
|
||||||
|
000803000
|
||||||
|
000092805
|
||||||
|
907006000
|
||||||
|
030400010
|
||||||
|
200000600
|
||||||
|
========
|
||||||
|
040000050
|
||||||
|
001943600
|
||||||
|
009000300
|
||||||
|
600050002
|
||||||
|
103000506
|
||||||
|
800020007
|
||||||
|
005000200
|
||||||
|
002436700
|
||||||
|
030000040
|
||||||
|
========
|
||||||
|
004000000
|
||||||
|
000030002
|
||||||
|
390700080
|
||||||
|
400009001
|
||||||
|
209801307
|
||||||
|
600200008
|
||||||
|
010008053
|
||||||
|
900040000
|
||||||
|
000000800
|
||||||
|
========
|
||||||
|
360020089
|
||||||
|
000361000
|
||||||
|
000000000
|
||||||
|
803000602
|
||||||
|
400603007
|
||||||
|
607000108
|
||||||
|
000000000
|
||||||
|
000418000
|
||||||
|
970030014
|
||||||
|
========
|
||||||
|
500400060
|
||||||
|
009000800
|
||||||
|
640020000
|
||||||
|
000001008
|
||||||
|
208000501
|
||||||
|
700500000
|
||||||
|
000090084
|
||||||
|
003000600
|
||||||
|
060003002
|
||||||
|
========
|
||||||
|
007256400
|
||||||
|
400000005
|
||||||
|
010030060
|
||||||
|
000508000
|
||||||
|
008060200
|
||||||
|
000107000
|
||||||
|
030070090
|
||||||
|
200000004
|
||||||
|
006312700
|
||||||
|
========
|
||||||
|
000000000
|
||||||
|
079050180
|
||||||
|
800000007
|
||||||
|
007306800
|
||||||
|
450708096
|
||||||
|
003502700
|
||||||
|
700000005
|
||||||
|
016030420
|
||||||
|
000000000
|
||||||
|
========
|
||||||
|
030000080
|
||||||
|
009000500
|
||||||
|
007509200
|
||||||
|
700105008
|
||||||
|
020090030
|
||||||
|
900402001
|
||||||
|
004207100
|
||||||
|
002000800
|
||||||
|
070000090
|
||||||
|
========
|
||||||
|
200170603
|
||||||
|
050000100
|
||||||
|
000006079
|
||||||
|
000040700
|
||||||
|
000801000
|
||||||
|
009050000
|
||||||
|
310400000
|
||||||
|
005000060
|
||||||
|
906037002
|
||||||
|
========
|
||||||
|
000000080
|
||||||
|
800701040
|
||||||
|
040020030
|
||||||
|
374000900
|
||||||
|
000030000
|
||||||
|
005000321
|
||||||
|
010060050
|
||||||
|
050802006
|
||||||
|
080000000
|
||||||
|
========
|
||||||
|
000000085
|
||||||
|
000210009
|
||||||
|
960080100
|
||||||
|
500800016
|
||||||
|
000000000
|
||||||
|
890006007
|
||||||
|
009070052
|
||||||
|
300054000
|
||||||
|
480000000
|
||||||
|
========
|
||||||
|
608070502
|
||||||
|
050608070
|
||||||
|
002000300
|
||||||
|
500090006
|
||||||
|
040302050
|
||||||
|
800050003
|
||||||
|
005000200
|
||||||
|
010704090
|
||||||
|
409060701
|
||||||
|
========
|
||||||
|
050010040
|
||||||
|
107000602
|
||||||
|
000905000
|
||||||
|
208030501
|
||||||
|
040070020
|
||||||
|
901080406
|
||||||
|
000401000
|
||||||
|
304000709
|
||||||
|
020060010
|
||||||
|
========
|
||||||
|
053000790
|
||||||
|
009753400
|
||||||
|
100000002
|
||||||
|
090080010
|
||||||
|
000907000
|
||||||
|
080030070
|
||||||
|
500000003
|
||||||
|
007641200
|
||||||
|
061000940
|
||||||
|
========
|
||||||
|
006080300
|
||||||
|
049070250
|
||||||
|
000405000
|
||||||
|
600317004
|
||||||
|
007000800
|
||||||
|
100826009
|
||||||
|
000702000
|
||||||
|
075040190
|
||||||
|
003090600
|
||||||
|
========
|
||||||
|
005080700
|
||||||
|
700204005
|
||||||
|
320000084
|
||||||
|
060105040
|
||||||
|
008000500
|
||||||
|
070803010
|
||||||
|
450000091
|
||||||
|
600508007
|
||||||
|
003010600
|
||||||
|
========
|
||||||
|
000900800
|
||||||
|
128006400
|
||||||
|
070800060
|
||||||
|
800430007
|
||||||
|
500000009
|
||||||
|
600079008
|
||||||
|
090004010
|
||||||
|
003600284
|
||||||
|
001007000
|
||||||
|
========
|
||||||
|
000080000
|
||||||
|
270000054
|
||||||
|
095000810
|
||||||
|
009806400
|
||||||
|
020403060
|
||||||
|
006905100
|
||||||
|
017000620
|
||||||
|
460000038
|
||||||
|
000090000
|
||||||
|
========
|
||||||
|
000602000
|
||||||
|
400050001
|
||||||
|
085010620
|
||||||
|
038206710
|
||||||
|
000000000
|
||||||
|
019407350
|
||||||
|
026040530
|
||||||
|
900020007
|
||||||
|
000809000
|
||||||
|
========
|
||||||
|
000900002
|
||||||
|
050123400
|
||||||
|
030000160
|
||||||
|
908000000
|
||||||
|
070000090
|
||||||
|
000000205
|
||||||
|
091000050
|
||||||
|
007439020
|
||||||
|
400007000
|
||||||
|
========
|
||||||
|
380000000
|
||||||
|
000400785
|
||||||
|
009020300
|
||||||
|
060090000
|
||||||
|
800302009
|
||||||
|
000040070
|
||||||
|
001070500
|
||||||
|
495006000
|
||||||
|
000000092
|
||||||
|
========
|
||||||
|
000158000
|
||||||
|
002060800
|
||||||
|
030000040
|
||||||
|
027030510
|
||||||
|
000000000
|
||||||
|
046080790
|
||||||
|
050000080
|
||||||
|
004070100
|
||||||
|
000325000
|
||||||
|
========
|
||||||
|
010500200
|
||||||
|
900001000
|
||||||
|
002008030
|
||||||
|
500030007
|
||||||
|
008000500
|
||||||
|
600080004
|
||||||
|
040100700
|
||||||
|
000700006
|
||||||
|
003004050
|
||||||
|
========
|
||||||
|
080000040
|
||||||
|
000469000
|
||||||
|
400000007
|
||||||
|
005904600
|
||||||
|
070608030
|
||||||
|
008502100
|
||||||
|
900000005
|
||||||
|
000781000
|
||||||
|
060000010
|
||||||
|
========
|
||||||
|
904200007
|
||||||
|
010000000
|
||||||
|
000706500
|
||||||
|
000800090
|
||||||
|
020904060
|
||||||
|
040002000
|
||||||
|
001607000
|
||||||
|
000000030
|
||||||
|
300005702
|
||||||
|
========
|
||||||
|
000700800
|
||||||
|
006000031
|
||||||
|
040002000
|
||||||
|
024070000
|
||||||
|
010030080
|
||||||
|
000060290
|
||||||
|
000800070
|
||||||
|
860000500
|
||||||
|
002006000
|
||||||
|
========
|
||||||
|
001007090
|
||||||
|
590080001
|
||||||
|
030000080
|
||||||
|
000005800
|
||||||
|
050060020
|
||||||
|
004100000
|
||||||
|
080000030
|
||||||
|
100020079
|
||||||
|
020700400
|
||||||
|
========
|
||||||
|
000003017
|
||||||
|
015009008
|
||||||
|
060000000
|
||||||
|
100007000
|
||||||
|
009000200
|
||||||
|
000500004
|
||||||
|
000000020
|
||||||
|
500600340
|
||||||
|
340200000
|
||||||
|
========
|
||||||
|
300200000
|
||||||
|
000107000
|
||||||
|
706030500
|
||||||
|
070009080
|
||||||
|
900020004
|
||||||
|
010800050
|
||||||
|
009040301
|
||||||
|
000702000
|
||||||
|
000008006
|
@ -1,21 +1,64 @@
|
|||||||
#include <unity/unity.h>
|
#include <unity/unity.h>
|
||||||
#include <unity/unity_internals.h>
|
#include <unity/unity_internals.h>
|
||||||
|
#include "sudoku.hpp"
|
||||||
|
#include "test_list.hpp"
|
||||||
|
|
||||||
void setUp() { ; }
|
void setUp() { ; }
|
||||||
void tearDown() { ; }
|
void tearDown() { ; }
|
||||||
|
|
||||||
int Math(void) {
|
|
||||||
return 2+2;
|
|
||||||
}
|
|
||||||
|
|
||||||
void test_Math(void) {
|
|
||||||
TEST_ASSERT_EQUAL_INT(4, Math());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int main(void) {
|
int main(void) {
|
||||||
UNITY_BEGIN();
|
UNITY_BEGIN();
|
||||||
RUN_TEST(test_Math);
|
RUN_TEST(test_SudokuEasy01);
|
||||||
|
RUN_TEST(test_SudokuEasy02);
|
||||||
|
RUN_TEST(test_SudokuEasy03);
|
||||||
|
RUN_TEST(test_SudokuEasy04);
|
||||||
|
RUN_TEST(test_SudokuEasy05);
|
||||||
|
RUN_TEST(test_SudokuEasy06);
|
||||||
|
RUN_TEST(test_SudokuEasy07);
|
||||||
|
RUN_TEST(test_SudokuEasy08);
|
||||||
|
RUN_TEST(test_SudokuEasy09);
|
||||||
|
RUN_TEST(test_SudokuEasy10);
|
||||||
|
RUN_TEST(test_SudokuEasy11);
|
||||||
|
RUN_TEST(test_SudokuEasy12);
|
||||||
|
RUN_TEST(test_SudokuEasy13);
|
||||||
|
RUN_TEST(test_SudokuEasy14);
|
||||||
|
RUN_TEST(test_SudokuEasy15);
|
||||||
|
RUN_TEST(test_SudokuEasy16);
|
||||||
|
RUN_TEST(test_SudokuEasy17);
|
||||||
|
RUN_TEST(test_SudokuEasy18);
|
||||||
|
RUN_TEST(test_SudokuEasy19);
|
||||||
|
RUN_TEST(test_SudokuEasy20);
|
||||||
|
RUN_TEST(test_SudokuEasy21);
|
||||||
|
RUN_TEST(test_SudokuEasy22);
|
||||||
|
RUN_TEST(test_SudokuEasy23);
|
||||||
|
RUN_TEST(test_SudokuEasy24);
|
||||||
|
RUN_TEST(test_SudokuEasy25);
|
||||||
|
RUN_TEST(test_SudokuEasy26);
|
||||||
|
RUN_TEST(test_SudokuEasy27);
|
||||||
|
RUN_TEST(test_SudokuEasy28);
|
||||||
|
RUN_TEST(test_SudokuEasy29);
|
||||||
|
RUN_TEST(test_SudokuEasy30);
|
||||||
|
RUN_TEST(test_SudokuEasy31);
|
||||||
|
RUN_TEST(test_SudokuEasy32);
|
||||||
|
RUN_TEST(test_SudokuEasy33);
|
||||||
|
RUN_TEST(test_SudokuEasy34);
|
||||||
|
RUN_TEST(test_SudokuEasy35);
|
||||||
|
RUN_TEST(test_SudokuEasy36);
|
||||||
|
RUN_TEST(test_SudokuEasy37);
|
||||||
|
RUN_TEST(test_SudokuEasy38);
|
||||||
|
RUN_TEST(test_SudokuEasy39);
|
||||||
|
RUN_TEST(test_SudokuEasy40);
|
||||||
|
RUN_TEST(test_SudokuEasy41);
|
||||||
|
RUN_TEST(test_SudokuEasy42);
|
||||||
|
RUN_TEST(test_SudokuEasy43);
|
||||||
|
RUN_TEST(test_SudokuEasy44);
|
||||||
|
RUN_TEST(test_SudokuEasy45);
|
||||||
|
RUN_TEST(test_SudokuEasy46);
|
||||||
|
RUN_TEST(test_SudokuEasy47);
|
||||||
|
RUN_TEST(test_SudokuEasy48);
|
||||||
|
RUN_TEST(test_SudokuEasy49);
|
||||||
|
RUN_TEST(test_SudokuEasy50);
|
||||||
return UNITY_END();
|
return UNITY_END();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
354
test/test_list.cpp
Normal file
354
test/test_list.cpp
Normal file
@ -0,0 +1,354 @@
|
|||||||
|
#include "test_list.hpp"
|
||||||
|
#include <unity/unity.h>
|
||||||
|
#include <unity/unity_internals.h>
|
||||||
|
#include "sudoku.hpp"
|
||||||
|
|
||||||
|
void test_SudokuEasy01(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-01.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy02(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-02.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy03(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-03.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy04(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-04.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy05(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-05.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy06(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-06.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy07(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-07.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy08(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-08.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy09(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-09.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy10(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-10.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy11(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-11.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy12(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-12.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy13(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-13.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy14(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-14.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy15(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-15.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy16(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-16.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy17(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-17.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy18(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-18.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy19(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-19.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy20(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-20.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy21(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-21.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy22(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-22.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy23(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-23.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy24(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-24.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy25(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-25.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy26(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-26.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy27(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-27.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy28(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-28.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy29(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-29.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy30(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-30.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy31(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-31.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy32(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-32.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy33(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-33.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy34(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-34.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy35(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-35.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy36(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-36.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy37(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-37.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy38(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-38.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy39(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-39.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy40(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-40.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy41(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-41.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy42(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-42.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy43(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-43.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy44(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-44.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy45(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-45.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy46(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-46.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy47(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-47.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy48(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-48.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy49(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-49.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_SudokuEasy50(void) {
|
||||||
|
Sudoku testGame;
|
||||||
|
testGame.FillBoard("test/files/sudoku-easy-50.txt");
|
||||||
|
testGame.Solve();
|
||||||
|
TEST_ASSERT_TRUE(testGame.IsBoardSolved());
|
||||||
|
}
|
55
test/test_list.hpp
Normal file
55
test/test_list.hpp
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
#ifndef TEST_LIST_HPP
|
||||||
|
#define TEST_LIST_HPP
|
||||||
|
|
||||||
|
void test_SudokuEasy01(void);
|
||||||
|
void test_SudokuEasy02(void);
|
||||||
|
void test_SudokuEasy03(void);
|
||||||
|
void test_SudokuEasy04(void);
|
||||||
|
void test_SudokuEasy05(void);
|
||||||
|
void test_SudokuEasy06(void);
|
||||||
|
void test_SudokuEasy07(void);
|
||||||
|
void test_SudokuEasy08(void);
|
||||||
|
void test_SudokuEasy09(void);
|
||||||
|
void test_SudokuEasy10(void);
|
||||||
|
void test_SudokuEasy11(void);
|
||||||
|
void test_SudokuEasy12(void);
|
||||||
|
void test_SudokuEasy13(void);
|
||||||
|
void test_SudokuEasy14(void);
|
||||||
|
void test_SudokuEasy15(void);
|
||||||
|
void test_SudokuEasy16(void);
|
||||||
|
void test_SudokuEasy17(void);
|
||||||
|
void test_SudokuEasy18(void);
|
||||||
|
void test_SudokuEasy19(void);
|
||||||
|
void test_SudokuEasy20(void);
|
||||||
|
void test_SudokuEasy21(void);
|
||||||
|
void test_SudokuEasy22(void);
|
||||||
|
void test_SudokuEasy23(void);
|
||||||
|
void test_SudokuEasy24(void);
|
||||||
|
void test_SudokuEasy25(void);
|
||||||
|
void test_SudokuEasy26(void);
|
||||||
|
void test_SudokuEasy27(void);
|
||||||
|
void test_SudokuEasy28(void);
|
||||||
|
void test_SudokuEasy29(void);
|
||||||
|
void test_SudokuEasy30(void);
|
||||||
|
void test_SudokuEasy31(void);
|
||||||
|
void test_SudokuEasy32(void);
|
||||||
|
void test_SudokuEasy33(void);
|
||||||
|
void test_SudokuEasy34(void);
|
||||||
|
void test_SudokuEasy35(void);
|
||||||
|
void test_SudokuEasy36(void);
|
||||||
|
void test_SudokuEasy37(void);
|
||||||
|
void test_SudokuEasy38(void);
|
||||||
|
void test_SudokuEasy39(void);
|
||||||
|
void test_SudokuEasy40(void);
|
||||||
|
void test_SudokuEasy41(void);
|
||||||
|
void test_SudokuEasy42(void);
|
||||||
|
void test_SudokuEasy43(void);
|
||||||
|
void test_SudokuEasy44(void);
|
||||||
|
void test_SudokuEasy45(void);
|
||||||
|
void test_SudokuEasy46(void);
|
||||||
|
void test_SudokuEasy47(void);
|
||||||
|
void test_SudokuEasy48(void);
|
||||||
|
void test_SudokuEasy49(void);
|
||||||
|
void test_SudokuEasy50(void);
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in New Issue
Block a user