[Haskell-beginners] Backtracking

legajid legajid at free.fr
Fri Jan 22 17:33:51 EST 2010


Hi,
i'm writing a Sudoku solver -a very new idea ;) - , using brute force.
The challenge for me is to keep track of all tries and go back and forward.

My general idea is :
make a list of all cells with value 0
For each of these cells, try values 1 to 9.
If a value matches (that is not used in cells on the same line, column 
or square) then proceed the same way with the next empty cell.
If a value doesn't match, get back to the preceding cell and take the 
next value available : here is my problem, i don't know how to go back.

The calcul function, invoked once, creates the list of empty cells, then 
calls calcul'
Calcul' creates the list of possible values, then calls calcul'' with 
the list.
Calcul'' tries to apply each possible value.If ok, it then calls calcul' 
for the remaining empty cells list. If not, calls itself with the next 
value for the cell.
The calls for different cells are stacked.
In case of backtrack, i must re_call calcul'' with the preceding cell 
number, going on with its list of values, at the point it was stopped.
How to write this ?

Thanks for your help.

Didier

-------------- next part --------------
A non-text attachment was scrubbed...
Name: sud2.hs
Type: text/x-haskell
Size: 3953 bytes
Desc: not available
Url : http://www.haskell.org/pipermail/beginners/attachments/20100122/5a62156f/sud2.bin


More information about the Beginners mailing list