-
Notifications
You must be signed in to change notification settings - Fork 0
/
sudoku.f90
50 lines (33 loc) · 1.06 KB
/
sudoku.f90
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
program sudoku
use Stack
use utils
implicit none
!Inputs..
character(len=100), parameter :: filename = 'sudoku.txt'
integer, parameter :: nGrids = 50
! character(len=100), parameter :: filename = 'lotsmore.txt'
! integer, parameter :: nGrids = 36628
!Entire set of problems
integer, dimension(9,9,nGrids) :: allgrids
!Working set grid and possible numbers
integer, dimension(9,9) :: grid
logical, dimension(9,9,9) :: possibs
!State variables
integer :: i
!Count up the result as required....
integer, dimension(3) :: sumdigits = (/ 100, 10, 1 /)
integer :: totalsum = 0
call ReadGrid(filename,allgrids, nGrids)
do i=1,nGrids
grid = allgrids(:,:,i)
call SolveGrid(grid)
call PossibleEntries(grid,possibs)
totalsum = totalsum + sum(grid(1:3,1) * sumdigits)
!Sanity check
! if (.not. isvalidgrid(grid,possibs)) then
write(*,*) 'finished',i,'valid:',isvalidgrid(grid,possibs), sum(grid(1:3,1) * sumdigits)
! call abort()
! end if
end do
write(*,*) totalsum
end program sudoku