diff options
Diffstat (limited to 'TODO/2.1.md')
| -rw-r--r-- | TODO/2.1.md | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/TODO/2.1.md b/TODO/2.1.md index 92e4555..d65eb93 100644 --- a/TODO/2.1.md +++ b/TODO/2.1.md | |||
| @@ -1,5 +1,31 @@ | |||
| 1 | # TODO-list for version 2.1 (or is it 3.0 at this point?) | 1 | # TODO-list for version 2.1 (or is it 3.0 at this point?) |
| 2 | 2 | ||
| 3 | ## Alg and moveset changes (prerequisite for solve.h) | ||
| 4 | |||
| 5 | ### moveset.h | ||
| 6 | * split off from alg.h | ||
| 7 | |||
| 8 | ### alg.h | ||
| 9 | * There is a (future) bug in the way the solver checks if a move can | ||
| 10 | be appended (allowed_next and similar): the last two moves are not enough. | ||
| 11 | * Example: using QTM we have last 3 moves U U D. Considering only last 2, | ||
| 12 | U could be appended, but it cannot (cancel to U'). | ||
| 13 | * Solution: the per-moveset bool allowed_next() should take an alg as | ||
| 14 | parameter. There are going to be basically two versions, one for QTM and | ||
| 15 | one for HTM (but more may be added). | ||
| 16 | * Alg should be extended to remember the list of moves on inverse / normal | ||
| 17 | separately (without looping over moves). | ||
| 18 | * Maybe another parameter to know if it can assume there has not been | ||
| 19 | any double switching, i.e. if the last moves are the only ones to | ||
| 20 | be checked and there is no need to go back further (e.g. if alg is | ||
| 21 | U (... stuff on inverse ...) D I don't want to have to check back | ||
| 22 | to the U, but in practice we can often assume this does not happen). | ||
| 23 | * Then we can remove last and lastinv from dfsdata. | ||
| 24 | * move also can_niss to alg.h | ||
| 25 | * the check for the order of the moves (to avoid counting L R and R L as | ||
| 26 | different) can be made separately. Maybe add a "compare" function for moves, | ||
| 27 | such that non-commuting moves are not comparable (return -1 0 1). | ||
| 28 | |||
| 3 | ## Rework solver | 29 | ## Rework solver |
| 4 | 30 | ||
| 5 | * The architecture is the following: solve.h contains a solve() public | 31 | * The architecture is the following: solve.h contains a solve() public |
| @@ -24,7 +50,6 @@ necessary). Maybe cleanup solveoptions too (e.g. threads not necessary). | |||
| 24 | * solve.h depends only on moves (dependency on step and trans is removed). | 50 | * solve.h depends only on moves (dependency on step and trans is removed). |
| 25 | * preparation step should be reworked, maybe removed or delegated to the | 51 | * preparation step should be reworked, maybe removed or delegated to the |
| 26 | specific implementations. | 52 | specific implementations. |
| 27 | * allowed_moves and cancel_niss are moved to move.h. | ||
| 28 | * All dfs stuff in the same function. Maybe remove also solvestop. | 53 | * All dfs stuff in the same function. Maybe remove also solvestop. |
| 29 | * Move two-step solve to a different module | 54 | * Move two-step solve to a different module |
| 30 | 55 | ||
