aboutsummaryrefslogtreecommitdiff
path: root/TODO.md
diff options
context:
space:
mode:
Diffstat (limited to 'TODO.md')
-rw-r--r--TODO.md155
1 files changed, 0 insertions, 155 deletions
diff --git a/TODO.md b/TODO.md
deleted file mode 100644
index 16e547c..0000000
--- a/TODO.md
+++ /dev/null
@@ -1,155 +0,0 @@
1# TODO list
2
3This is a list of things that I would like to add or change at some point.
4It's more of a personal reminder than anything else.
5
6## After symcoord
7### Fixing stuff + completing new optimal solver
8- clean up fst, check if more can be improved
9### generic:
10* all files should have an init function, calling the ones
11 of the files includes + doing more stuff. A static "initiliazed"
12 variable is probably needed too.
13### testing!
14* generic test util: function taking an array of tests, an array of testnames
15 (or maybe tests should be their own type?) and running them
16* separate "commands" for testing different parts (e.g. ./test coord)
17* test coordinate (needed anyway to test fst)
18* other tests (start from bottom: utils.c)
19* move test_coord to the testing folder
20### Solving standard coordinates
21* add Void * extradata to DfsArg and a custom move function
22* add optional custom pre-process for generating special table (nx)
23* copy_dfsdata should copy extra too!
24### Solving simplification / refactor
25* Split solve in solve_coord, solve_generic, solve_singlethread...
26* Rework choicesteps: simplify, remove one type of rotation...
27### nx.c
28* implement nxopt with all tables and all tricks
29 (maybe compile time variable for maximum memory to use?)
30* is_valid should also unniss / cleanup the alg
31### Other easy refactor
32* split cubetypes.h into other files
33
34## For version 2.1
35### Changes to Step and Solve
36* remove cube from dfsarg? (i still need to save the scramble somewhere,
37 but I really only use it in dfs_niss)
38* coord.c: all old coordinates (WIP...)
39* steps.c: checkers (use coordinates), all stepalt and steps (WIP...)
40* commands gen and freemem
41* commands.c: twophase, ...?
42### Rotate, not transform, before solving
43* solve should re-orient first if needed and not just give up if centers are off
44### Documentation
45* Document how coordinates and pruning tables work now
46* Write an examples.md file
47* More screenshots!
48### Tables management
49* Check files in tables directory automatically remove old / extraneous files
50* Add checksum to check that tables are generated / downloaded correctly
51### Conditional compiling
52* Option to avoid large tables at compile time
53* option to avoid multithreading (write a simpler solve for t=1, and also
54 check if found enough solutions before checking pruning values)
55### Technical
56* generic option parser
57* scan system to get best number of threads
58### Commands
59* Easy: add option -I (inverse) and -L (linear, like inverse + normal)
60 to do only linear NISS
61* message for -N ignored say -n (lowercase)
62
63## Commands
64
65### Commands that are available in nissy 1.0, but not in this version (yet):
66* drcorners (solve corners after dr)
67* search and improve non-optimal subsequences
68* save and edit algs as "variables"
69 (or just use a "logging system" to keep info about previously run commands,
70including e.g. solutions that were not shown because -c)
71
72### More steps for `solve`
73* QTM optimal solving
74* 5-side solve (for robots)
75* Block-building steps (cross, roux blocks, ...)
76* Other common steps (LSE, ...)
77* Larger table for drudfin (include epe)? About 1Gb uncompressed,
78 500Mb compressed (fallback to noE), 250 compressed + parity trick
79 (is it doable?)
80
81### Improvements to currently implemented commands
82* solve multidfs: do multithread by step, not by alternative (this way
83 if there are multiple alternatives it can make use of more threads)
84* solve should try up to a small bound without loading the large pruning table
85 (maybe this is not necessary if loading the table is fast enough)
86* silent batch mode without >>>
87* Optimal solver: when asking for only one solution, scan for upper bound in
88 parallel using a two-phase solver.
89
90### New features
91* EO analysis (and also DR and HTR analysis): group similar EOs together
92 and such (suggested by Jay)
93* configurability: add an `alias` command, run config file at startup
94* command notation to list available moves
95* make multi-step solve much more general and create command
96* input directly cube status instead of moves
97 (graphical: maybe there is a cubing.js function; command line: ???)
98
99## Distribution
100* webapp (cgi)
101
102## Technical stuff
103
104### Memory management
105* free pruning table after solve is done? if I do this I need to deafault to a
106 small table for < 8 moves solutions or smth
107* improve multi-threading when solving multiple scrambles
108* nissy -M maxmem option for running with at most maxmem memory; if exceeded
109 when loading a pruning table, return failure (or make every solve command
110 use tiny tables instead?); if maxmem is very 600Mb or
111 less do not use invtables (the performance loss is minimal anyway). If the
112 limit is really tiny, do not use mtables or ttables (but this would be
113 very slow and probably nobody will ever use it)
114* Check if memory is enough for loading pruning tables; if not, abort
115* For optimal solver: choose largest that fits in memory between nxopt and light
116
117### Structural changes
118* client/server architecture: run a server process in the background so that
119 multiple client processess can send it queries and get results; this would
120 open up the door for a web-based version or graphical clients
121
122### Cleanup
123* sort again functions alphabetically in their files
124* change some function and variable names to make everything consistent
125* more stuff to load at start (or when suitable command is called) rather
126 than when called directly, to avoid nasty problems with threading
127* parse command args: one function per arg type, then each command has
128 a list of options that it accepts (as a string)
129
130### Style
131* do not declare all variables at the beginning of a function
132* remove var names from prototypes
133* various stuff from style(9)
134
135### Random
136Collect random info like this somewhere:
137
138Table pt_nxopt31_HTM
139Base value: 9
1400 1
1411 6
1422 29
1433 164
1444 1433
1455 16772
1466 205033
1477 2513871
1488 30329976
1499 342440769
15010 2815191126
15111 6147967200
15212 524918774
15313 3546
15414 0
15515 0

Generated with cgit - Back to sebastiano.tronto.net