aboutsummaryrefslogtreecommitdiff
path: root/TODO.txt
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2023-11-10 17:07:42 +0100
committerSebastiano Tronto <sebastiano@tronto.net>2023-11-10 19:55:55 +0100
commit067ba55add258ab03db328234168af66c4ad87c3 (patch)
treef4861907117c420eed3f9c9aa967bf9f2c6a1f7e /TODO.txt
parentaf1399f223e3857a3d2690337e84430cdbeff16a (diff)
downloadnissy-core-067ba55add258ab03db328234168af66c4ad87c3.tar.gz
nissy-core-067ba55add258ab03db328234168af66c4ad87c3.zip
Towards a definitve API
Diffstat (limited to 'TODO.txt')
-rw-r--r--TODO.txt58
1 files changed, 25 insertions, 33 deletions
diff --git a/TODO.txt b/TODO.txt
index 30a9242..27ff198 100644
--- a/TODO.txt
+++ b/TODO.txt
@@ -1,43 +1,30 @@
1## Big change 1## Roadmap
2 2
3* Add tests for multiple moves 3See the sections below for details
4 4
5### More for moves 5* Implement some simple solver
6 6* Extend cube and moves to include centers
7* define macro to loop over moves e.g. #define FOREACHMOVE(action) 7* More complex optimal solvers, pruning tables
8 8* Benchmarks
9### API goals: 9* Multithreading (build-time option number of threads)
10 10* Other optimizations
11* manipulate move sequences (invert, unniss, cleanup, mirror / transform...) 11* NISS
12* solvers (optimal, generic, coordinates) 12* Move manipulation utilities
13* print cube (in various formats) 13* Coordinate solvers and other steps
14* print ptables (or layout data in such a way that can be printed 14* More output formats
15 easily, e.g. first bytes are null-terminated strig and can be 15* Adapters for other languages (at least python)
16 printed by user) 16* More documentation (or keep all in cube.h?)
17 17* Rename to libnissy
18### Solvers 18* Release 1.0
19
20* Actually do A*, no fixed depth
21* Use threading (see below)
22* Return strings, newline separated (see nissy_ffi)
23* Instead of depth, I need the following parameters:
24 int minmoves
25 int maxmoves
26 a parameter for all solutions / nmax / optimal / -O n
27* How to make the above nicer? can it be done with a minimal
28 amount of parameters (e.g. at most 2)?
29
30### Rename to libnissy
31
32* prefix public functions with libnissy_ or something similar
33* move() that takes a string (alg) as input
34 19
35## Solving 20## Solving
36 21
37### Generic solver 22### Simple (slow, light) solver
38 23
24* Decide on API for solve() (see above)
25* solve generic becomes private, use cube_fast_t instead of cube_t
26* write simple solver based on generic
39* tests: solve full cube (max 7-8 moves?) 27* tests: solve full cube (max 7-8 moves?)
40* more tests: eo and other stuff
41* benchmarks 28* benchmarks
42 29
43### Coordinates 30### Coordinates
@@ -110,8 +97,10 @@ What about symcoord?
110 97
111## Improvements and other things 98## Improvements and other things
112 99
100* Rename to libnissy (prefix public functions with nissy_?)
113* add centers (and moves...) 101* add centers (and moves...)
114* for CO: move to bits 5 and 6, no need for padding bit 102* for CO: move to bits 5 and 6, no need for padding bit
103* manipulate move sequences (invert, unniss, cleanup, mirror / transform...)
115* NISS: Add mask to moves (e.g. U | NISS where NISS = 32 or something); 104* NISS: Add mask to moves (e.g. U | NISS where NISS = 32 or something);
116 adapt readmoves and writemoves. 105 adapt readmoves and writemoves.
117* Consider adding centers and other moves (for avx2: centers in the 106* Consider adding centers and other moves (for avx2: centers in the
@@ -121,6 +110,9 @@ What about symcoord?
121 ascii art (color = 1 letter) 110 ascii art (color = 1 letter)
122 twizzle binary https://www.experiments.cubing.net/cubing.js/spec/binary/ 111 twizzle binary https://www.experiments.cubing.net/cubing.js/spec/binary/
123 reid? 112 reid?
113* print ptables (or layout data in such a way that can be printed
114 easily, e.g. first bytes are null-terminated strig and can be
115 printed by user)
124 116
125## "Front-end" 117## "Front-end"
126 118

Generated with cgit - Back to sebastiano.tronto.net