aboutsummaryrefslogtreecommitdiff
path: root/TODO.txt
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2023-11-08 16:18:14 +0100
committerSebastiano Tronto <sebastiano@tronto.net>2023-11-08 16:18:14 +0100
commite082001f7c7c8ce0d20aebad4e6d6f22d3bf854c (patch)
tree7a8b9875d067feb6c96f39be4080397f8f1eef2d /TODO.txt
parent72c9082c9824c7ffecc97a94083aa350956285e4 (diff)
downloadnissy-core-e082001f7c7c8ce0d20aebad4e6d6f22d3bf854c.tar.gz
nissy-core-e082001f7c7c8ce0d20aebad4e6d6f22d3bf854c.zip
Moved documentation around, improved configure.sh
Diffstat (limited to 'TODO.txt')
-rw-r--r--TODO.txt69
1 files changed, 69 insertions, 0 deletions
diff --git a/TODO.txt b/TODO.txt
new file mode 100644
index 0000000..69d528a
--- /dev/null
+++ b/TODO.txt
@@ -0,0 +1,69 @@
1### Generic solver
2
3* finish implementation
4* tests: solve full cube (max 7-8 moves?)
5* more tests: eo and other stuff
6* benchmarks
7
8### Coordinates
9
10* [done] eo
11* co
12* ep
13* epsep
14* cp
15* cpsep
16* cphtr
17
18What about symcoord?
19
20### Solving
21
22All solving functions take a cube and some parameters as input.
23
24* Depth [uint, <= 20]: all solvers work at fixed depth. The caller
25 implementation can implement an A* search.
26* max [int]: the maximum number of solutions to find. Set to a negative
27 value for all solutions.
28* sol [move_t *]: the array for returning the solutions. The caller
29 should make sure that it can hold at least max * depth values.
30* Table [uint8_t *]: table with all the necessare pre-computed info.
31 The table can be generated with a companion function, but reading
32 from and writing to file is delegated to the caller implementation.
33
34Implement the following solvers:
35* Slow: basic solver without any table.
36* H48: one-bit-per-entry table + fallback, 48 symmetries and so on.
37 See planner.
38* nxopt31: mostly for comparison.
39* other nxopt solvers: make generic and take the type as parameter.
40* Step solver: take a coordinate function and a moveset as a parameter.
41
42### cube.h changes
43
44* better documentation: add parameter names, one-line comment
45 for each function
46* prefix public functions with nissy_ or something similar
47* move() that takes a string (alg) as input
48* readtrans() should work like readmoves (read multiple, return n)
49* Add single moves and transformations to the interface? (performance!)
50
51### Optimizations
52
53* Trans: don't do full compose, for some trans composing perm is enough.
54 Split out sumco() as a separate function and refactor, optimize.
55* Use multi-move (up to 4/5 moves at once)
56* CO is the worst part of moving, transforming and inverting. Try basing
57 everything on representing the cube without CO and apply it only at the
58 end to check that it is actually solved.
59* see if vcube's method to flip all corners is better
60* find a better way for computing the inverse?
61* Improve avx2 instructions in general
62
63### Improvements and other things
64
65* NISS: Add mask to moves (e.g. U | NISS where NISS = 32 or something);
66 adapt readmoves and writemoves.
67* Consider adding centers and other moves (for avx2: centers in the
68 same lane as corners, numbered from 9 to 14)
69* rename to: libnissy? (also change all references to cube.c in doc)

Generated with cgit - Back to sebastiano.tronto.net