diff options
| author | Sebastiano Tronto <sebastiano@tronto.net> | 2023-11-08 16:36:38 +0100 |
|---|---|---|
| committer | Sebastiano Tronto <sebastiano@tronto.net> | 2023-11-08 16:36:38 +0100 |
| commit | e2004826a56b1e2cac8b3d5a94535e480ca2855d (patch) | |
| tree | 4b502afc8e27afe24554d0f13e37399d006eaa32 /TODO.txt | |
| parent | e082001f7c7c8ce0d20aebad4e6d6f22d3bf854c (diff) | |
| download | nissy-core-e2004826a56b1e2cac8b3d5a94535e480ca2855d.tar.gz nissy-core-e2004826a56b1e2cac8b3d5a94535e480ca2855d.zip | |
Added TODO stuff
Diffstat (limited to 'TODO.txt')
| -rw-r--r-- | TODO.txt | 46 |
1 files changed, 38 insertions, 8 deletions
| @@ -1,11 +1,11 @@ | |||
| 1 | ### Generic solver | 1 | ## Generic solver |
| 2 | 2 | ||
| 3 | * finish implementation | 3 | * finish implementation |
| 4 | * tests: solve full cube (max 7-8 moves?) | 4 | * tests: solve full cube (max 7-8 moves?) |
| 5 | * more tests: eo and other stuff | 5 | * more tests: eo and other stuff |
| 6 | * benchmarks | 6 | * benchmarks |
| 7 | 7 | ||
| 8 | ### Coordinates | 8 | ## Coordinates |
| 9 | 9 | ||
| 10 | * [done] eo | 10 | * [done] eo |
| 11 | * co | 11 | * co |
| @@ -17,7 +17,10 @@ | |||
| 17 | 17 | ||
| 18 | What about symcoord? | 18 | What about symcoord? |
| 19 | 19 | ||
| 20 | ### Solving | 20 | ## More I/O |
| 21 | |||
| 22 | |||
| 23 | ## Solving | ||
| 21 | 24 | ||
| 22 | All solving functions take a cube and some parameters as input. | 25 | All solving functions take a cube and some parameters as input. |
| 23 | 26 | ||
| @@ -31,7 +34,8 @@ All solving functions take a cube and some parameters as input. | |||
| 31 | The table can be generated with a companion function, but reading | 34 | The table can be generated with a companion function, but reading |
| 32 | from and writing to file is delegated to the caller implementation. | 35 | from and writing to file is delegated to the caller implementation. |
| 33 | 36 | ||
| 34 | Implement the following solvers: | 37 | ### Implement the following solvers: |
| 38 | |||
| 35 | * Slow: basic solver without any table. | 39 | * Slow: basic solver without any table. |
| 36 | * H48: one-bit-per-entry table + fallback, 48 symmetries and so on. | 40 | * H48: one-bit-per-entry table + fallback, 48 symmetries and so on. |
| 37 | See planner. | 41 | See planner. |
| @@ -39,16 +43,31 @@ Implement the following solvers: | |||
| 39 | * other nxopt solvers: make generic and take the type as parameter. | 43 | * other nxopt solvers: make generic and take the type as parameter. |
| 40 | * Step solver: take a coordinate function and a moveset as a parameter. | 44 | * Step solver: take a coordinate function and a moveset as a parameter. |
| 41 | 45 | ||
| 42 | ### cube.h changes | 46 | ### New method: |
| 47 | |||
| 48 | * 48 symmetries, cocsep (or chtr, or similar) + epsep + some EO | ||
| 49 | * 1 bit per entry + fallback | ||
| 50 | * store necessary stuff (e.g. ttrep) all interleaved in the same table | ||
| 51 | |||
| 52 | ### Other considerations: | ||
| 53 | |||
| 54 | * Reconsider going corners-first, so there is no need to sumco() | ||
| 55 | |||
| 56 | ## cube.h changes | ||
| 43 | 57 | ||
| 44 | * better documentation: add parameter names, one-line comment | 58 | * better documentation: add parameter names, one-line comment |
| 45 | for each function | 59 | for each function |
| 46 | * prefix public functions with nissy_ or something similar | 60 | * prefix public functions with libnissy_ or something similar |
| 47 | * move() that takes a string (alg) as input | 61 | * move() that takes a string (alg) as input |
| 48 | * readtrans() should work like readmoves (read multiple, return n) | 62 | * readtrans() should work like readmoves (read multiple, return n) |
| 49 | * Add single moves and transformations to the interface? (performance!) | 63 | * Add single moves and transformations to the interface? (performance!) |
| 64 | * More I/O: | ||
| 65 | nissy | ||
| 66 | ascii art (color = 1 letter) | ||
| 67 | twizzle binary https://www.experiments.cubing.net/cubing.js/spec/binary/ | ||
| 68 | reid? | ||
| 50 | 69 | ||
| 51 | ### Optimizations | 70 | ## Optimizations |
| 52 | 71 | ||
| 53 | * Trans: don't do full compose, for some trans composing perm is enough. | 72 | * Trans: don't do full compose, for some trans composing perm is enough. |
| 54 | Split out sumco() as a separate function and refactor, optimize. | 73 | Split out sumco() as a separate function and refactor, optimize. |
| @@ -60,10 +79,21 @@ Implement the following solvers: | |||
| 60 | * find a better way for computing the inverse? | 79 | * find a better way for computing the inverse? |
| 61 | * Improve avx2 instructions in general | 80 | * Improve avx2 instructions in general |
| 62 | 81 | ||
| 63 | ### Improvements and other things | 82 | ## Improvements and other things |
| 64 | 83 | ||
| 65 | * NISS: Add mask to moves (e.g. U | NISS where NISS = 32 or something); | 84 | * NISS: Add mask to moves (e.g. U | NISS where NISS = 32 or something); |
| 66 | adapt readmoves and writemoves. | 85 | adapt readmoves and writemoves. |
| 67 | * Consider adding centers and other moves (for avx2: centers in the | 86 | * Consider adding centers and other moves (for avx2: centers in the |
| 68 | same lane as corners, numbered from 9 to 14) | 87 | same lane as corners, numbered from 9 to 14) |
| 69 | * rename to: libnissy? (also change all references to cube.c in doc) | 88 | * rename to: libnissy? (also change all references to cube.c in doc) |
| 89 | |||
| 90 | ## "Front-end" | ||
| 91 | |||
| 92 | * Write adapter code for other languages: | ||
| 93 | python | ||
| 94 | hare | ||
| 95 | rust, go | ||
| 96 | dart ffi, js | ||
| 97 | java | ||
| 98 | * add also example code (e.g. an optimal solver) in examples/ | ||
| 99 | * solver in C: use pthread_cancel | ||
