diff options
| author | Sebastiano Tronto <sebastiano.tronto@gmail.com> | 2021-12-24 17:39:13 +0100 |
|---|---|---|
| committer | Sebastiano Tronto <sebastiano.tronto@gmail.com> | 2021-12-24 17:39:13 +0100 |
| commit | 5c3796633f7e02542c054f88a942f749851c0c39 (patch) | |
| tree | aadb5fe3bc2e7b212e4ce4c7570ce0a9615c0ffe | |
| parent | 119ee0af023b702651b14d8e8e4e46d021a11845 (diff) | |
| download | nissy-5c3796633f7e02542c054f88a942f749851c0c39.tar.gz nissy-5c3796633f7e02542c054f88a942f749851c0c39.zip | |
Cited nxopt, updated performance description
| -rw-r--r-- | README.md | 25 | ||||
| -rw-r--r-- | TODO.md | 2 | ||||
| -rw-r--r-- | doc/nissy.1 | 12 | ||||
| -rwxr-xr-x | nissy | bin | 321160 -> 0 bytes | |||
| -rw-r--r-- | nissy-2.0beta9.tar.gz | bin | 60731 -> 60818 bytes |
5 files changed, 19 insertions, 20 deletions
| @@ -1,18 +1,19 @@ | |||
| 1 | # Nissy | 1 | # Nissy |
| 2 | 2 | ||
| 3 | A Rubik's cube solver and FMC assistant. | 3 | A Rubik's cube solver and FMC assistant. |
| 4 | For optimal HTM solving nissy uses the same method as Herbert Kociemba's | 4 | For optimal HTM solving Nissy uses techniquest from Herbert Kociemba's |
| 5 | [Cube Explorer](http://kociemba.org/cube.htm). When using a single CPU thread | 5 | [Cube Explorer](http://kociemba.org/cube.htm) and Tomas Rokicki's |
| 6 | its performance are comparable, but nissy is much faster when using multiple | 6 | [nxopt](https://github.com/rokicki/cube20src/blob/master/nxopt.md). |
| 7 | threads (with the -t option for the solve command). | 7 | With 4 cores at 2.5GHz and using less than 3Gb of RAM, Nissy can find an |
| 8 | issy can also solve many different substeps of | 8 | optimal solution in less than a minute (18 moves or less) to a few minutes. |
| 9 | Thistlethwaite's algorithm (DR/HTR), and can use NISS (Normal-Inverse Scramble Switch). | ||
| 10 | 9 | ||
| 10 | Nissy can also solve many different substeps of Thistlethwaite's algorithm | ||
| 11 | (DR/HTR), and can use NISS (Normal-Inverse Scramble Switch). | ||
| 11 | It can be useful to analyze your DR solves (and more, once I implement more features). | 12 | It can be useful to analyze your DR solves (and more, once I implement more features). |
| 12 | 13 | ||
| 13 | ## Why should I use nissy? | 14 | ## Why should I use Nissy? |
| 14 | 15 | ||
| 15 | You should use nissy if you: | 16 | You should use Nissy if you: |
| 16 | * Want to analyze your DR solutions or check for multiple optimal (or sub-optimal) | 17 | * Want to analyze your DR solutions or check for multiple optimal (or sub-optimal) |
| 17 | solutions for EO/DR/HTR or similar substeps. | 18 | solutions for EO/DR/HTR or similar substeps. |
| 18 | * You just want a Rubik's cube solver and you like command line interfaces. | 19 | * You just want a Rubik's cube solver and you like command line interfaces. |
| @@ -20,7 +21,7 @@ solutions for EO/DR/HTR or similar substeps. | |||
| 20 | 21 | ||
| 21 | ## Requirements | 22 | ## Requirements |
| 22 | 23 | ||
| 23 | A full installation of nissy requires a little more than 2Gb of space, | 24 | A full installation of Nissy requires a little more than 2Gb of space, |
| 24 | of which 1.6Gb are occupied by the huge pruning table for fast optimal solving, | 25 | of which 1.6Gb are occupied by the huge pruning table for fast optimal solving, |
| 25 | and running it requires the same amount of RAM. | 26 | and running it requires the same amount of RAM. |
| 26 | One can choose to never use this function and not to install the relative | 27 | One can choose to never use this function and not to install the relative |
| @@ -48,14 +49,14 @@ Follows the instructions below to install the pruning tables. | |||
| 48 | ### Tables | 49 | ### Tables |
| 49 | Nissy needs to generate certain large tables to work. These tables are by default | 50 | Nissy needs to generate certain large tables to work. These tables are by default |
| 50 | generated the first time they are needed (e.g the first time you ask to solve a | 51 | generated the first time they are needed (e.g the first time you ask to solve a |
| 51 | certain step) and then saved to a file. The following times nissy simply loads the | 52 | certain step) and then saved to a file. The following times Nissy simply loads the |
| 52 | corresponding file from the hard disk. | 53 | corresponding file from the hard disk. |
| 53 | 54 | ||
| 54 | The very large table for optimal solving can take some time to generate (about 20 | 55 | The very large table for optimal solving can take some time to generate (about 20 |
| 55 | minutes on my fairly old but decent laptop, using 8 CPU threads). All other | 56 | minutes on my fairly old but decent laptop, using 8 CPU threads). All other |
| 56 | tables are much faster. | 57 | tables are much faster. |
| 57 | 58 | ||
| 58 | You can ask nissy to generate all the tables it will ever need with the **gen** | 59 | You can ask Nissy to generate all the tables it will ever need with the **gen** |
| 59 | command. It is recommended to use more than one thread, if your CPU has them. | 60 | command. It is recommended to use more than one thread, if your CPU has them. |
| 60 | For example, you can run: | 61 | For example, you can run: |
| 61 | 62 | ||
| @@ -86,7 +87,7 @@ I'll try to explain here the main parts of the program. | |||
| 86 | 87 | ||
| 87 | ### Cube, moves and transformations | 88 | ### Cube, moves and transformations |
| 88 | 89 | ||
| 89 | There are many ways to represent a cube. In nissy I use two: | 90 | There are many ways to represent a cube. In Nissy I use two: |
| 90 | * An array representation `CubeArray`: 3 arrays representing the permutation | 91 | * An array representation `CubeArray`: 3 arrays representing the permutation |
| 91 | of corners, edges and centers and 2 arrays for the orientation of corners and edges. | 92 | of corners, edges and centers and 2 arrays for the orientation of corners and edges. |
| 92 | * An 11-integers representation `Cube`: 3 integers for edge orientation (with respect | 93 | * An 11-integers representation `Cube`: 3 integers for edge orientation (with respect |
| @@ -38,9 +38,7 @@ It's more of a personal reminder than anything else. | |||
| 38 | 38 | ||
| 39 | ## Distribution | 39 | ## Distribution |
| 40 | 40 | ||
| 41 | * README.md: cite nxopt | ||
| 42 | * Add EXAMPLES.md file | 41 | * Add EXAMPLES.md file |
| 43 | * better man page | ||
| 44 | * webapp (cgi) | 42 | * webapp (cgi) |
| 45 | 43 | ||
| 46 | ## Technical stuff | 44 | ## Technical stuff |
diff --git a/doc/nissy.1 b/doc/nissy.1 index add0da6..188f9e3 100644 --- a/doc/nissy.1 +++ b/doc/nissy.1 | |||
| @@ -13,12 +13,12 @@ | |||
| 13 | . | 13 | . |
| 14 | .Sh DESCRIPTION | 14 | .Sh DESCRIPTION |
| 15 | .Nm | 15 | .Nm |
| 16 | is a Rubik's Cube solver. Its optimal solver function uses Kociemba's one-step | 16 | is a Rubik's Cube solver. |
| 17 | algorithm (huge optimal solver), and its performance is comparable to that | 17 | It uses techniques from Herbert Kociemba's Cube Explorer and |
| 18 | of Kociemba's implementation in Cube Explorer when using a single CPU | 18 | Tomas Rokicki's nxopt. With 4 cores at 2.5GHz and using less than 3Gb |
| 19 | thread, and much faster when using multiple threads. | 19 | of RAM, Nissy can find the optimal solution for a random Rubik's cube position |
| 20 | nissy can also solve different substeps of the Thistlethwaite's algorithm | 20 | in less than a minute (18 moves or less) to a few minutes. |
| 21 | and more. | 21 | Nissy can also solve different substeps of the Thistlethwaite's algorithm and more. |
| 22 | .Pp | 22 | .Pp |
| 23 | When run without any argument an interactive shell is launched, otherwise | 23 | When run without any argument an interactive shell is launched, otherwise |
| 24 | the provided | 24 | the provided |
| Binary files differ | |||
diff --git a/nissy-2.0beta9.tar.gz b/nissy-2.0beta9.tar.gz index 85ed2f0..e162475 100644 --- a/nissy-2.0beta9.tar.gz +++ b/nissy-2.0beta9.tar.gz | |||
| Binary files differ | |||
