diff options
| author | Sebastiano Tronto <sebastiano@tronto.net> | 2023-11-10 14:44:48 +0100 |
|---|---|---|
| committer | Sebastiano Tronto <sebastiano@tronto.net> | 2023-11-10 14:44:48 +0100 |
| commit | fb9ae9e41eaf01b3651395fdd450ac1a4743e592 (patch) | |
| tree | 8fb29e9b62d40d6407f082f55a7164775154bf78 /TODO.txt | |
| parent | 04c3ee1f5acac47650be8d0ffbf90e238df0d12b (diff) | |
| download | nissy-core-fb9ae9e41eaf01b3651395fdd450ac1a4743e592.tar.gz nissy-core-fb9ae9e41eaf01b3651395fdd450ac1a4743e592.zip | |
Big changes to the interface
Diffstat (limited to 'TODO.txt')
| -rw-r--r-- | TODO.txt | 40 |
1 files changed, 19 insertions, 21 deletions
| @@ -1,30 +1,11 @@ | |||
| 1 | ## Big changes | 1 | ## Big change |
| 2 | 2 | ||
| 3 | ### cube type changess | 3 | * Add tests for multiple moves |
| 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, | 4 | * Benchmark: add some simple benchmarking functions to nissy.h, |
| 23 | bench.c becomes very short | 5 | bench.c becomes very short |
| 24 | 6 | ||
| 25 | ### More for moves | 7 | ### More for moves |
| 26 | 8 | ||
| 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) | 9 | * define macro to loop over moves e.g. #define FOREACHMOVE(action) |
| 29 | 10 | ||
| 30 | ### API goals: | 11 | ### API goals: |
| @@ -131,6 +112,8 @@ What about symcoord? | |||
| 131 | 112 | ||
| 132 | ## Improvements and other things | 113 | ## Improvements and other things |
| 133 | 114 | ||
| 115 | * add centers (and moves...) | ||
| 116 | * for CO: move to bits 5 and 6, no need for padding bit | ||
| 134 | * NISS: Add mask to moves (e.g. U | NISS where NISS = 32 or something); | 117 | * NISS: Add mask to moves (e.g. U | NISS where NISS = 32 or something); |
| 135 | adapt readmoves and writemoves. | 118 | adapt readmoves and writemoves. |
| 136 | * Consider adding centers and other moves (for avx2: centers in the | 119 | * Consider adding centers and other moves (for avx2: centers in the |
| @@ -150,3 +133,18 @@ What about symcoord? | |||
| 150 | dart ffi, js | 133 | dart ffi, js |
| 151 | java | 134 | java |
| 152 | * add also example code (e.g. an optimal solver) in examples/ | 135 | * add also example code (e.g. an optimal solver) in examples/ |
| 136 | |||
| 137 | ## More documentation? | ||
| 138 | |||
| 139 | * Add documentation comments inside cube.c? | ||
| 140 | * Copy this to cube.c | ||
| 141 | |||
| 142 | Transformations can be either simple rotations or a rotation composed | ||
| 143 | with a mirroring. A composed rotation + mirror is obtained by applying | ||
| 144 | the corresponding rotation to the solved cube mirrored along the M plane. | ||
| 145 | |||
| 146 | For example, to apply the transformation RBm (mirrored RB) to a cube C: | ||
| 147 | 1. Apply a mirror along the M plane to the solved cube | ||
| 148 | 2. Rotate the mirrored cube with z' y2 | ||
| 149 | 3. Apply the cube C to the transformed solved cube | ||
| 150 | 4. Apply the transformations of step 1a and 1b in reverse | ||
