64
edits
Changes
→Assignment 1
To compile the program, open the terminal and go to the projects directory $ g++ -std=c++0x -pg solver.cpp checks.cpp checksolution.cpp -o Sudoku
This will create an executable file called Sudoku. -pg is used for creating a gmon.out file, which will allow us to profile the program with arguments.
Run the code with
$ ./Sudoku puzzle
After the program is done running, the result is 0 6 0 0 0 0 9 7 2 0 5 0 0 0 2 0 0 3 0 7 0 3 9 0 5 0 0 2 0 0 0 0 5 4 0 8 0 0 0 0 0 0 0 0 0 3 0 1 8 0 0 0 0 6 0 0 4 0 2 3 0 8 0 7 0 0 9 0 0 0 2 0 9 2 5 0 0 0 0 4 0
1 6 3 4 5 8 9 7 2
'''Test Case'''
To profile the program, run this command.
$ gprof -p -b ./Sudoku gmon.out > Sudoku.flt
The profiling result
Flat profile:
Each sample counts as 0.01 seconds.
no time accumulated
% cumulative self self total
time seconds seconds calls Ts/call Ts/call name
0.00 0.00 0.00 4539 0.00 0.00 checkRow(int, int)
0.00 0.00 0.00 1620 0.00 0.00 checkColumn(int, int)
0.00 0.00 0.00 1120 0.00 0.00 placeNum(int, int)
0.00 0.00 0.00 698 0.00 0.00 checkSquare(int, int, int)
0.00 0.00 0.00 476 0.00 0.00 goBack(int&, int&)
0.00 0.00 0.00 2 0.00 0.00 print(int (*) [9])
0.00 0.00 0.00 1 0.00 0.00 _GLOBAL__sub_I_sudoku
0.00 0.00 0.00 1 0.00 0.00 _GLOBAL__sub_I_temp
0.00 0.00 0.00 1 0.00 0.00 solveSudoku()
0.00 0.00 0.00 1 0.00 0.00 storePositions()
0.00 0.00 0.00 1 0.00 0.00 __static_initialization_and_destruction_0(int, int)
0.00 0.00 0.00 1 0.00 0.00 __static_initialization_and_destruction_0(int, int)
''Hard puzzle''
For the hard puzzle, below is the input file as well as the result
0 0 0 0 0 0 0 0 0
0 0 0 0 0 3 0 8 5
0 0 1 0 2 0 0 0 0
0 0 0 5 0 7 0 0 0
0 0 4 0 0 0 1 0 0
0 9 0 0 0 0 0 0 0
5 0 0 0 0 0 0 7 3
0 0 2 0 1 0 0 0 0
0 0 0 0 4 0 0 0 9
9 8 7 6 5 4 3 2 1
2 4 6 1 7 3 9 8 5
3 5 1 9 2 8 7 4 6
1 2 8 5 3 7 6 9 4
6 3 4 8 9 2 1 5 7
7 9 5 4 6 1 8 3 2
5 1 9 2 8 6 4 7 3
4 7 2 3 1 9 5 6 8
8 6 3 7 4 5 2 1 9
The profiling results are
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls s/call s/call name
47.27 7.83 7.83 622577597 0.00 0.00 checkRow(int, int)
18.63 10.92 3.09 223365661 0.00 0.00 checkColumn(int, int)
14.18 13.27 2.35 157353814 0.00 0.00 placeNum(int, int)
11.49 15.17 1.90 100608583 0.00 0.00 checkSquare(int, int, int)
4.29 15.89 0.71 69175252 0.00 0.00 goBack(int&, int&)
3.93 16.54 0.65 1 0.65 16.54 solveSudoku()
0.21 16.57 0.04 1 0.04 0.04 _GLOBAL__sub_I_sudoku
0.00 16.57 0.00 2 0.00 0.00 print(int (*) [9])
0.00 16.57 0.00 1 0.00 0.00 _GLOBAL__sub_I_temp
0.00 16.57 0.00 1 0.00 0.00 storePositions()
0.00 16.57 0.00 1 0.00 0.00 __static_initialization_and_destruction_0(int, int)
0.00 16.57 0.00 1 0.00 0.00 __static_initialization_and_destruction_0(int, int)
=== Assignment 2 ===
=== Assignment 3 ===