diff options
Diffstat (limited to 'TODO.md')
| -rw-r--r-- | TODO.md | 111 |
1 files changed, 71 insertions, 40 deletions
| @@ -3,50 +3,48 @@ | |||
| 3 | This is a list of things that I would like to add or change at some point. | 3 | This is a list of things that I would like to add or change at some point. |
| 4 | It's more of a personal reminder than anything else. | 4 | It's more of a personal reminder than anything else. |
| 5 | 5 | ||
| 6 | ## Version 2.0.2 | ||
| 7 | ### Website | ||
| 8 | * now gen takes 40 minutes | ||
| 9 | ### Changelog | ||
| 10 | * Only improved table generation speed, but this required huge changes in | ||
| 11 | coordinates.c and symcoord.c (+ some minor changes in other parts). | ||
| 12 | |||
| 13 | ## For version 2.1 | 6 | ## For version 2.1 |
| 14 | ### Coordinates | 7 | ### Slow: it is slower than the old nissy 2.0.2 :( |
| 15 | * Text (README.md) description of coordinate system with 3 (or 4) types of | 8 | * nxopt's trick (switching to reduce branching) actually saves about 50%! |
| 16 | coordinates: basic (+ fundamental), sym, composite (consisting of at most | 9 | * Another factor is estimating *while* moving (i.e. do not move all |
| 17 | one sym + one or more basic) | 10 | coordinates if the first one already gives a high value!) |
| 18 | * Use this to restructure the coordinate part; maybe fundamental coordinates | 11 | * simplify solve, remove everything that is used only by optimal solvers |
| 19 | do not need to exist??? | 12 | * Good compromise: each stepalt offers one of two alternatives: either solve |
| 20 | * Add also "transform" for every coordinate. For example, for EO and similar | 13 | by simply using pruning tables and moving coordinates, or using a custom |
| 21 | only allow transformations that fix the EO axis. | 14 | estimator and moving a cube (or fast_cube) and computing coordinates |
| 22 | * Also: "basic" symcoord do not allow trans, composite coordinates assume | 15 | in the estimator |
| 23 | the transformation fixes the basic sumcoord | 16 | * is there really no way to use inverse branching trick with current system? |
| 24 | * For each coordinate, manually disallow "bad" moves, or just ignore the error | 17 | * new file optimal.c with the old solve logic; try first with the simple |
| 25 | (probably better to check: low performance cost, detect problems that I might | 18 | cube implementation and the new indexers, if it is still slow change |
| 26 | be overlooking) | 19 | to fast_cube (intermediate nissy v2.0.2 implementation) |
| 27 | ### Changes to Step and Solve | 20 | ### Changes to Step and Solve |
| 28 | * Revolutionize: do everything based on coordinates, replace Cube with | 21 | * remove cube from dfsarg? (i still need to save the scramble somewhere, |
| 29 | CubeArray (or just 4 values, so consistency check is super easy); | 22 | but I really only use it in dfs_niss) |
| 30 | remove tables for fast inverse. | 23 | * coord.c: all old coordinates (WIP...) |
| 31 | * No need for most of step data: just solve a list of coordinates | 24 | * steps.c: checkers (use coordinates), all stepalt and steps (WIP...) |
| 32 | (+ associated pruning tables) | 25 | * commands gen and freemem |
| 33 | * For steps that accept multiple solved states (e.g. drany): | 26 | * commands.c: twophase, ...? |
| 34 | just find a way to "merge" multiple steps as alternatives; or | 27 | * Coordinate should have a moveset field? No, at worst there are some garbage |
| 35 | offer multiple lists of coordinates as alternatives | 28 | values in mtable, but no risk for errors |
| 36 | * De Bondt's trick: list of 3 coords (as indexes in coord array of the step) | 29 | ### Rotate, not transform, before solving |
| 37 | that if evaluated to the same pruning value allow for de bondt's trick. | 30 | * solve should re-orient first if needed and not just give up if centers are off |
| 38 | * NISS: compute inverse based on current use moves just before switching, | ||
| 39 | using CubeArray; it is not too slow. | ||
| 40 | ### Loading at startup vs dynamically | ||
| 41 | * Consider moving more things to the initial loading phase (i.e. remove | ||
| 42 | many of the "initialized" parts) | ||
| 43 | ### Documentation | 31 | ### Documentation |
| 32 | * Document how coordinates and pruning tables work now | ||
| 44 | * Write an examples.md file | 33 | * Write an examples.md file |
| 45 | * More screenshots! | 34 | * More screenshots! |
| 46 | ### Tables management | 35 | ### Tables management |
| 47 | * Check files in tables directory, add command to remove old / extraneous files | 36 | * Check files in tables directory automatically remove old / extraneous files |
| 48 | * Add checksum to check that tables are generated / downloaded correctly | 37 | * Add checksum to check that tables are generated / downloaded correctly |
| 49 | * Edit download page update instructions to tell what to do when changing tables | 38 | ### Conditional compiling |
| 39 | * Option to avoid large tables at compile time | ||
| 40 | * option to avoid multithreading (write a simpler solve for t=1, and also | ||
| 41 | check if found enough solutions before checking pruning values) | ||
| 42 | ### Technical | ||
| 43 | * generic option parser | ||
| 44 | * testing? Maybe just hardcode some examples generated with old nissy | ||
| 45 | ### Commands | ||
| 46 | * Easy: add option -I (inverse) and -L (linear, like inverse + normal) | ||
| 47 | to do only linear NISS | ||
| 50 | 48 | ||
| 51 | ## Commands | 49 | ## Commands |
| 52 | 50 | ||
| @@ -62,16 +60,21 @@ including e.g. solutions that were not shown because -c) | |||
| 62 | * 5-side solve (for robots) | 60 | * 5-side solve (for robots) |
| 63 | * Block-building steps (cross, roux blocks, ...) | 61 | * Block-building steps (cross, roux blocks, ...) |
| 64 | * Other common steps (LSE, ...) | 62 | * Other common steps (LSE, ...) |
| 63 | * Larger table for drudfin (include epe)? About 1Gb uncompressed, | ||
| 64 | 500Mb compressed (fallback to noE), 250 compressed + parity trick | ||
| 65 | (is it doable?) | ||
| 65 | 66 | ||
| 66 | ### Improvements to currently implemented commands | 67 | ### Improvements to currently implemented commands |
| 67 | * solve should re-orient first if needed and not just give up if centers are off | 68 | * solve multidfs: do multithread by step, not by alternative (this way |
| 69 | if there are multiple alternatives it can make use of more threads) | ||
| 68 | * solve should try up to a small bound without loading the large pruning table | 70 | * solve should try up to a small bound without loading the large pruning table |
| 71 | (maybe this is not necessary if loading the table is fast enough) | ||
| 69 | * silent batch mode without >>> | 72 | * silent batch mode without >>> |
| 70 | 73 | ||
| 71 | ### New features | 74 | ### New features |
| 75 | * EO analysis (and also DR and HTR analysis): group similar EOs together | ||
| 76 | and such (suggested by Jay) | ||
| 72 | * configurability: add an `alias` command, run config file at startup | 77 | * configurability: add an `alias` command, run config file at startup |
| 73 | * configure max ram to be used (via config file and/or command line option) | ||
| 74 | * transform alg, rufify etc... | ||
| 75 | * command notation to list available moves | 78 | * command notation to list available moves |
| 76 | * make multi-step solve much more general and create command | 79 | * make multi-step solve much more general and create command |
| 77 | * input directly cube status instead of moves | 80 | * input directly cube status instead of moves |
| @@ -105,7 +108,35 @@ including e.g. solutions that were not shown because -c) | |||
| 105 | 108 | ||
| 106 | ### Cleanup | 109 | ### Cleanup |
| 107 | * sort again functions alphabetically in their files | 110 | * sort again functions alphabetically in their files |
| 111 | * change some function and variable names to make everything consistent | ||
| 108 | * more stuff to load at start (or when suitable command is called) rather | 112 | * more stuff to load at start (or when suitable command is called) rather |
| 109 | than when called directly, to avoid nasty problems with threading | 113 | than when called directly, to avoid nasty problems with threading |
| 110 | * parse command args: one function per arg type, then each command has | 114 | * parse command args: one function per arg type, then each command has |
| 111 | a list of options that it accepts (as a string) | 115 | a list of options that it accepts (as a string) |
| 116 | |||
| 117 | ### Style | ||
| 118 | * do not declare all variables at the beginning of a function | ||
| 119 | * remove var names from prototypes | ||
| 120 | * various stuff from style(9) | ||
| 121 | |||
| 122 | ### Random | ||
| 123 | Collect random info like this somewhere: | ||
| 124 | |||
| 125 | Table pt_nxopt31_HTM | ||
| 126 | Base value: 9 | ||
| 127 | 0 1 | ||
| 128 | 1 6 | ||
| 129 | 2 29 | ||
| 130 | 3 164 | ||
| 131 | 4 1433 | ||
| 132 | 5 16772 | ||
| 133 | 6 205033 | ||
| 134 | 7 2513871 | ||
| 135 | 8 30329976 | ||
| 136 | 9 342440769 | ||
| 137 | 10 2815191126 | ||
| 138 | 11 6147967200 | ||
| 139 | 12 524918774 | ||
| 140 | 13 3546 | ||
| 141 | 14 0 | ||
| 142 | 15 0 | ||
