diff options
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 48 |
1 files changed, 36 insertions, 12 deletions
| @@ -30,30 +30,54 @@ for benchmarks. | |||
| 30 | 30 | ||
| 31 | ## TODO: | 31 | ## TODO: |
| 32 | 32 | ||
| 33 | ### Documentation and interface | 33 | ### Coordinates |
| 34 | |||
| 35 | * inline some documentation as comments in cube.h or cube.c | ||
| 36 | * README.md (maybe convert to txt?) becomes the reference documentation | ||
| 37 | 34 | ||
| 38 | ### More features | 35 | * [done] eo |
| 36 | * co | ||
| 37 | * ep | ||
| 38 | * epsep | ||
| 39 | * cp | ||
| 40 | * cpsep | ||
| 41 | * cphtr | ||
| 39 | 42 | ||
| 40 | * move() that takes a string (alg) as input | 43 | What about symcoord? |
| 41 | * coordinates: co, eo, epsep, cpsep_sym, cocpsep_sym, cphtr_sym, cocphtr_sym | ||
| 42 | 44 | ||
| 43 | ### Solving | 45 | ### Solving |
| 44 | 46 | ||
| 45 | * Fixed depth | 47 | All solving functions take a cube and some parameters as input. |
| 46 | * pruning tables (1 bit per entry + fallback) | 48 | |
| 47 | * Takes as parameters the amount of memory to use and a FILE for the tables | 49 | * Depth [uint, <= 20]: all solvers work at fixed depth. The caller |
| 48 | * Use multi-move (up to 4/5 moves at once) | 50 | implementation can implement an A* search. |
| 51 | * Full [bool]: if false, stop at first solution found, otherwise | ||
| 52 | find all solutions at that depth. | ||
| 53 | * Table [uint8_t *]: table with all the necessare pre-computed info. | ||
| 54 | The table can be generated with a companion function, but reading | ||
| 55 | from and writing to file is delegated to the caller implementation. | ||
| 56 | |||
| 57 | Implement the following solvers: | ||
| 58 | * Slow: basic solver without any table. | ||
| 59 | * H48: one-bit-per-entry table + fallback, 48 symmetries and so on. | ||
| 60 | See planner. | ||
| 61 | * nxopt31: mostly for comparison. | ||
| 62 | * other nxopt solvers: make generic and take the type as parameter. | ||
| 63 | * Step solver: take a coordinate function and a moveset as a parameter. | ||
| 49 | 64 | ||
| 50 | ### cube.h changes | 65 | ### cube.h changes |
| 51 | 66 | ||
| 52 | * Consider removing zerocube() from the api | 67 | * Consider removing zerocube() from the api |
| 53 | * prefix public functions with nissy_ or something similar | 68 | * prefix public functions with nissy_ or something similar |
| 69 | * move() that takes a string (alg) as input | ||
| 70 | |||
| 71 | ### Documentation and interface | ||
| 54 | 72 | ||
| 55 | ### Future optimizations | 73 | * inline some documentation as comments in source code |
| 74 | * README.md (maybe convert to txt?) becomes the reference documentation | ||
| 75 | |||
| 76 | ### Optimizations | ||
| 56 | 77 | ||
| 78 | * Trans: don't do full compose, for some trans composing perm is enough. | ||
| 79 | Split out sumco() as a separate function and refactor, optimize. | ||
| 80 | * Use multi-move (up to 4/5 moves at once) | ||
| 57 | * CO is the worst part of moving, transforming and inverting. Try basing | 81 | * CO is the worst part of moving, transforming and inverting. Try basing |
| 58 | everything on representing the cube without CO and apply it only at the | 82 | everything on representing the cube without CO and apply it only at the |
| 59 | end to check that it is actually solved. | 83 | end to check that it is actually solved. |
