-
config:
- mode (curses, final)
- timeout
- max solutions
- BOX color
- use transient colors in SVG
- use merge
-
rewrite backtracking:
-
extract probing to another module
-
flag to choose next candidates without probing
-
backjumping (too many repeating dead ends:
grep 'false' 9892.log | sed 's/^[[:space:]]*//' | sort | uniq -c | sort -nr | head
) -
refactor names according to https://en.wikipedia.org/wiki/Backtracking and https://en.wikipedia.org/wiki/Look-ahead_(backtracking)
-
if too many dead ends found, just lower this path priority and try the next (see 3620):
- add counter of dead ends for any path. If the path becomes dead_end itself, clear the counter for all its children.
-
re-evaluate the order of candidates after every found dead candidate and applying the partial solution
-
if for path P the pair (cell X, color C) leads to contradiction and all the other colors for X are explored fully (not stopped because of some limits but really fully explored!), then the P can be considered fully explored too (see 8098).
-
take into account the color to search for (see 3620, 2498, 3883, 5380)
-
bgu: speed up set_line_block, can_place_block
-
refactoring:
- use https://codebeat.co
- check docstrings (+grammarly)
-
2-SAT
-
SVG:
- fill=white
- class for every color (use in clues)
- shorter class and id names
- collapse contiguous block into one long block
- show the search in progress (dead ends, successful paths with the rate)
- add link to the new solution page when another unique solution found (show the search path, compare with other solutions)
-
tests for Web UI
-
load board from file
-
profile memory usage
-
export to PBM, SVG, GIF (cli-options)
-
import from different formats
-
crypto? (easy in one direction, hard in the other)