aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2023-11-09 22:27:56 +0100
committerSebastiano Tronto <sebastiano@tronto.net>2023-11-09 22:27:56 +0100
commit04c3ee1f5acac47650be8d0ffbf90e238df0d12b (patch)
tree0d66725ef3b7d29b612b4dfe7a92cb99b8ce1843
parent5bdf6e73179cf944ce82606545beb0b0d63a59a3 (diff)
downloadnissy-core-04c3ee1f5acac47650be8d0ffbf90e238df0d12b.tar.gz
nissy-core-04c3ee1f5acac47650be8d0ffbf90e238df0d12b.zip
Added TODOs
-rw-r--r--TODO.txt92
1 files changed, 78 insertions, 14 deletions
diff --git a/TODO.txt b/TODO.txt
index 8add9cc..4d21b5e 100644
--- a/TODO.txt
+++ b/TODO.txt
@@ -1,3 +1,58 @@
1## Big changes
2
3### cube type changess
4
5* rename cube_t to cube_internal_t and cube_array_t to cube_t
6* include only cube_t typedef in cube.h, remove ifdef from cube.h
7* rework public functions: for many the simple implementation
8 in the first section of cube.c is fine, other should first
9 convert and then call the internal function
10* for CO: move to bits 5 and 6, no need for padding bit
11
12### Remove stuff from API, use more strings
13
14* Remove move_t and trans_t
15* Remove all functions related to trans, not useful for users
16 (or maybe keep and let use transform? can see some use
17 for it, in strange cases)
18* Removes functions that read or write moves
19* All functions should take strings instead of moves
20* Performance is worse, more stuff must be done internally,
21 expose only stuf that users are likely to use
22* Benchmark: add some simple benchmarking functions to nissy.h,
23 bench.c becomes very short
24
25### More for moves
26
27* keep move(cube_t, move), but prefer direct inline moves over it
28* define macro to loop over moves e.g. #define FOREACHMOVE(action)
29
30### API goals:
31
32* manipulate move sequences (invert, unniss, cleanup, mirror / transform...)
33* solvers (optimal, generic, coordinates)
34* print cube (in various formats)
35* print ptables (or layout data in such a way that can be printed
36 easily, e.g. first bytes are null-terminated strig and can be
37 printed by user)
38
39### Solvers
40
41* Actually do A*, no fixed depth
42* Use threading (see below)
43* Return strings, newline separated (see nissy_ffi)
44* Instead of depth, I need the following parameters:
45 int minmoves
46 int maxmoves
47 a parameter for all solutions / nmax / optimal / -O n
48* How to make the above nicer? can it be done with a minimal
49 amount of parameters (e.g. at most 2)?
50
51### Rename to libnissy
52
53* prefix public functions with libnissy_ or something similar
54* move() that takes a string (alg) as input
55
1## Solving 56## Solving
2 57
3### Generic solver 58### Generic solver
@@ -8,6 +63,8 @@
8 63
9### Coordinates 64### Coordinates
10 65
66TODO: specify in the comments that coordinates return 0 if solved
67
11* [done] eo 68* [done] eo
12* co 69* co
13* ep 70* ep
@@ -42,22 +99,17 @@ What about symcoord?
42 99
43* Reconsider going corners-first, so there is no need to sumco() 100* Reconsider going corners-first, so there is no need to sumco()
44 101
45## cube.h changes 102### Pruning tables
46 103
47* better documentation: add parameter names, one-line comment 104* ptable should contain some extra data at the beginning:
48 for each function 105 an integer (size)
49* prefix public functions with libnissy_ or something similar 106 a checksum
50* move() that takes a string (alg) as input 107 some summary info, maybe even in text form
51* readtrans() should work like readmoves (read multiple, return n)
52* Add single moves and transformations to the interface? (performance!)
53* More I/O:
54 nissy
55 ascii art (color = 1 letter)
56 twizzle binary https://www.experiments.cubing.net/cubing.js/spec/binary/
57 reid?
58 108
59## Optimizations 109## Optimizations
60 110
111### General things
112
61* Trans: don't do full compose, for some trans composing perm is enough. 113* Trans: don't do full compose, for some trans composing perm is enough.
62 Split out sumco() as a separate function and refactor, optimize. 114 Split out sumco() as a separate function and refactor, optimize.
63* Use multi-move (up to 4/5 moves at once) 115* Use multi-move (up to 4/5 moves at once)
@@ -68,13 +120,26 @@ What about symcoord?
68* find a better way for computing the inverse? 120* find a better way for computing the inverse?
69* Improve avx2 instructions in general 121* Improve avx2 instructions in general
70 122
123### Threading
124
125* THREADS build time option for the number of threads. If set to one,
126 do not include any threading library or code. Try detecting at build
127 time, or set to a sane default (e.g. 8? 16?) for generic builds.
128* pthread or threads.h? I am more familiar with pthread, but threads.h
129 is standard (from C11, so it requires switching to it from C99).
130 Does using threads.h help in any way (e.g. building on Windows)?
131
71## Improvements and other things 132## Improvements and other things
72 133
73* NISS: Add mask to moves (e.g. U | NISS where NISS = 32 or something); 134* NISS: Add mask to moves (e.g. U | NISS where NISS = 32 or something);
74 adapt readmoves and writemoves. 135 adapt readmoves and writemoves.
75* Consider adding centers and other moves (for avx2: centers in the 136* Consider adding centers and other moves (for avx2: centers in the
76 same lane as corners, numbered from 9 to 14) 137 same lane as corners, numbered from 9 to 14)
77* rename to: libnissy? (also change all references to cube.c in doc) 138* More I/O:
139 nissy
140 ascii art (color = 1 letter)
141 twizzle binary https://www.experiments.cubing.net/cubing.js/spec/binary/
142 reid?
78 143
79## "Front-end" 144## "Front-end"
80 145
@@ -85,4 +150,3 @@ What about symcoord?
85 dart ffi, js 150 dart ffi, js
86 java 151 java
87* add also example code (e.g. an optimal solver) in examples/ 152* add also example code (e.g. an optimal solver) in examples/
88* solver in C: use pthread_cancel

Generated with cgit - Back to sebastiano.tronto.net