nissy-fmc

A Rubik's cube FMC assistant
git clone https://git.tronto.net/nissy-fmc
Download | Log | Files | Refs | README | LICENSE

commit f2db614faffca90b514828cc045dde9be48c6802
parent e112b437fca16f2da6cfad645e8cf20ded065e51
Author: Sebastiano Tronto <sebastiano@tronto.net>
Date:   Tue, 22 Feb 2022 00:17:33 +0100

Added website; released 2.0.1

Diffstat:
MINSTALL | 15+++++++++------
MMakefile | 14++++++++++++--
MREADME.md | 72+++---------------------------------------------------------------------
Mdoc/nissy.html | 4++--
Mdoc/nissy.pdf | 0
Dnissy.exe | 0
Awww/download/index.html | 190+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Awww/examples/index.html | 49+++++++++++++++++++++++++++++++++++++++++++++++++
Awww/favicon.png | 0
Awww/index.html | 93+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Awww/screenshot.png | 0
Awww/style.css | 99+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12 files changed, 457 insertions(+), 79 deletions(-)

diff --git a/INSTALL b/INSTALL @@ -1,3 +1,7 @@ +# Website + +Nissy is available at https://nissy.tronto.net + # Requirements A full installation of nissy requires about 3Gb of space, @@ -23,7 +27,7 @@ Sorry for the inconvenience, I don't have a Windows machine to test this on. Edit the Makefile to match your local configuration (usually not necessary, but you may want to change the PREFIX variable) and run make, followed by make install. -Follows the instructions below to install the pruning tables. +Follow the instructions below to install the pruning tables. ## Tables Nissy needs to generate certain large tables to work. These tables are by default @@ -33,7 +37,7 @@ nissy simply loads the corresponding file from the hard disk. The very large table for optimal solving can take some time to generate (about 1.5 hours on my fairly old but decent laptop, using 8 CPU threads). -In order to generate it you need at least 5Gb or RAM. +In order to generate it you need at least 5Gb of RAM. All other tables are much faster. You can ask nissy to generate all the tables it will ever need with the gen @@ -50,8 +54,7 @@ systems this folder is either .nissy/tables in the user's home directory or $XDG_DATA_HOME/nissy/tables if the XDG variable is configured. On Windows it is the same directory as the nissy.exe executable file. -Choose either (zip format) +You can downloads all the tables from the following link: https://nissy.tronto.net/nissy-tables-2.0.zip -or (tar.gz format) - https://nissy.tronto.net/nissy-tables-2.0.tar.gz -and extract the archive into the correct folder. +The version 2.0 at the end of the file name is only indicative. +Later versions will use the same tables, unless otherwise specified. diff --git a/Makefile b/Makefile @@ -1,6 +1,6 @@ # See LICENSE file for copyright and license details. -VERSION = 2.0 +VERSION = 2.0.1 PREFIX = /usr/local MANPREFIX = ${PREFIX}/share/man @@ -40,6 +40,16 @@ dist: clean nissy.exe rm -rf nissy-${VERSION} mv nissy.exe nissy-${VERSION}.exe +upload: dist + rsync -v --rsync-path=openrsync nissy-${VERSION}.exe \ + tronto.net:/var/www/htdocs/nissy.tronto.net/ + rsync -v --rsync-path=openrsync nissy-${VERSION}.tar.gz \ + tronto.net:/var/www/htdocs/nissy.tronto.net/ + +website: + rsync -rv --rsync-path=openrsync \ + www/ tronto.net:/var/www/htdocs/nissy.tronto.net + install: nissy mkdir -p ${DESTDIR}${PREFIX}/bin cp -f nissy ${DESTDIR}${PREFIX}/bin/nissy @@ -53,5 +63,5 @@ uninstall: rm -rf ${DESTDIR}${PREFIX}/bin/nissy ${DESTDIR}${MANPREFIX}/man1/nissy.1 for s in ${SCRIPTS}; do rm -rf ${DESTDIR}${PREFIX}/bin/$$s; done -.PHONY: all debug clean dist install uninstall +.PHONY: all debug clean dist install uninstall upload diff --git a/README.md b/README.md @@ -11,75 +11,9 @@ Nissy can also solve many different substeps of Thistlethwaite's algorithm (DR/HTR), and can use NISS (Normal-Inverse Scramble Switch). It can be useful to analyze your DR solves (and more, once I implement more features). -## Why should I use Nissy? - -You should use Nissy if you: - -* Want to analyze your DR solutions or check for multiple optimal (or sub-optimal) -solutions for EO/DR/HTR or similar substeps. -* You just want a Rubik's cube solver and you like command line interfaces. -* You want an alternative to Cube Explorer. - -## Requirements - -A full installation of nissy requires about 3Gb of space, -of which 2.3Gb are occupied by the huge pruning table for fast optimal solving, -and running it requires the same amount of RAM. -One can choose to never use this function and not to install the relative -pruning table. There is an alternative (slower) -optimal solving function that uses about 500Mb of RAM. - -## Installation - -### On Windows - -Try downloading and executing in a terminal the file nissy.exe, then -follow the instructions in the **Tables** section below for -installing the pruning tables. -If nissy.exe does not work, you can try following the UNIX instructions -in WSL (Windows Subsystem for Linux) or in a similar environment. - -Sorry for the inconvenience, I don't have a Windows machine to test this on. - -### On a UNIX system: - -Edit the Makefile to match your local configuration (usually not necessary, but you -may want to change the `PREFIX` variable) and run `make`, followed by `make install`. -Follows the instructions below to install the pruning tables. - -### Tables -Nissy needs to generate certain large tables to work. These tables are by default -generated the first time they are needed (e.g the first time you ask to solve a -certain step) and then saved to a file. Whenever these tables are needed again, -nissy simply loads the corresponding file from the hard disk. - -The very large table for optimal solving can take some time to generate -(about 1.5 hours on my fairly old but decent laptop, using 8 CPU threads). -In order to generate it you need at least 5Gb or RAM. -All other tables are much faster. - -You can ask Nissy to generate all the tables it will ever need with the `gen` -command. It is recommended to use more than one thread, if your CPU has them. -For example, you can run: - -``` -nissy gen -t 8 -``` - -to generate all tables using 8 threads. - -Alternatively, you can simply download all the tables and copy them into the -correct folder (see manual page, `ENVIRONMENT` section). On UNIX operating -systems this folder is either `.nissy/tables` in the user's home directory or -`$XDG_DATA_HOME/nissy/tables` if the XDG variable is configured. On Windows -it is the same directory as the nissy.exe executable file. - -Choose either the -[zip](https://nissy.tronto.net/nissy-tables-2.0.zip) -or the -[tar.gz](https://nissy.tronto.net/nissy-tables-2.0.tar.gz) -file (click the links to download) and -extract them in the correct folder. +You get Nissy from [nissy.tronto.net](https://nissy.tronto.net). The download +links and installation instructions can be found on the +[download page](https://nissy.tronto.net/download). ## Structure of the code diff --git a/doc/nissy.html b/doc/nissy.html @@ -1,5 +1,5 @@ <!-- Creator : groff version 1.22.4 --> -<!-- CreationDate: Sun Feb 13 13:56:11 2022 --> +<!-- CreationDate: Mon Feb 21 22:56:07 2022 --> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> @@ -308,7 +308,7 @@ D' F R' D B L2 B R2 L U L U2 B D' U R U F2 (18)</p> <b>https://github.com/sebastianotronto/nissy</b></p> <p style="margin-left:6%; margin-top: 1em">BSD -February&nbsp;13, 2022 BSD</p> +February&nbsp;21, 2022 BSD</p> <hr> </body> </html> diff --git a/doc/nissy.pdf b/doc/nissy.pdf Binary files differ. diff --git a/nissy.exe b/nissy.exe Binary files differ. diff --git a/www/download/index.html b/www/download/index.html @@ -0,0 +1,190 @@ +<!doctype html> +<html> +<head> + <title> Download | Nissy </title> +<meta name="viewport" content="width=device-width" /> <link rel="stylesheet" type="text/css" href="/style.css"> + <link rel="icon" href="/favicon.png"> + <meta charset="utf-8"> +</head> + +<body> + +<nav class="top"> + <table class="menu"> + <tr> + <td class="logo"> <a href="/"><img src="/favicon.png"></a> </td> + <td class="links"> + <a href="/download/">Download</a> | + <a href="/examples/">Examples</a> + </td> + </tr> + </table> +</nav> + +<hr class="line"> + + +<h1>Get Nissy</h1> + +<table class="dltable"> +<tr> + <td></td> + <td><strong>Source code</strong></td> + <td><strong>Windows executable</strong></td> +</tr> +<tr> + <td><strong>Latest version</strong></td> + <td><a href="/nissy-2.0.1.tar.gz">nissy-2.0.1.tar.gz (63Kb)</a></td> + <td><a href="/nissy-2.0.1.exe">nissy-2.0.1.exe (770Kb)</a></td> +</tr> +</table> + +<p> +In this page you can find download links (see above) +and installation instructions (see below) for +nissy. If instead you wish to clone the +<a href="https://git.tronto.net/nissy/">git repository</a>, use +<pre> +<code>git clone https://git.tronto.net/nissy</code> +</pre> +</p> + +<p> +For a summary of changes and a list of older versions see below. Some versions +(for example 1.0) are not available directly, but can be obtained from +the git repository. +</p> + +<h2>Installation</h2> + +<h3>System requirements</h3> + +<p> +A full installation of nissy requires about 3Gb of space, +of which 2.3Gb are occupied by the huge pruning table for fast optimal solving, +and running it requires the same amount of RAM. +One can choose to never use this function and not to install the relative +pruning table. There is an alternative (slower) +optimal solving function that uses about 500Mb of RAM. +</p> + +<h3>Windows</h3> + +<p> +Try downloading and executing in a terminal the file <code>nissy.exe</code>, +then follow the instructions in the <strong>Tables</strong> section below for +installing the pruning tables. +If <code>nissy.exe</code> does not work, you can try following the UNIX instructions +in WSL (Windows Subsystem for Linux) or in a similar environment. +</p> + +<h3>UNIX (Linux, MacOS, *BSD...)</h3> +<p> +Edit the <code>Makefile</code> to match your local configuration +(this is usually not necessary, but you may want to change the +<code>PREFIX</code> variable to change the installation path) +and run <code>make</code>, followed by <code>make install</code>. +Follow the instructions below to install the pruning tables. + +<h3>Tables</h3> + +<table class="dltable"> +<tr> + <td></td> <td><strong>Zip file</strong></td> +</tr> +<tr> + <td><strong>Tables</strong></td> + <td><a href="/nissy-tables-2.0.zip">nissy-tables.2.0.zip (63Kb)</a></td> +</tr> +</table> +<p> +<strong>Note:</strong> the version 2.0 at the end of the file name is +only indicative. Later versionw will use the same tables, unless +otherwise specified. +</p> + +<p> +Nissy needs certain large tables to work. These tables are by default +generated the first time they are needed (e.g the first time you ask to solve a +certain step) and then saved to a file. Whenever these tables are needed again, +nissy simply loads the corresponding file from the hard disk. +</p> + +<p> +The very large table for optimal solving can take some time to generate +(about 1.5 hours on my fairly old but decent laptop, using 8 CPU threads). +In order to generate it you need at least 5Gb of RAM. +All other tables are much faster. +</p> + +<p> +You can ask nissy to generate all the tables it will ever need with the gen +command. It is recommended to use more than one thread, if your CPU has them. +For example, you can run: +</p> + +<pre><code>nissy gen -t 8</pre></code> + +<p> +to generate all tables using 8 threads. You can change 8 to any number +your CPU supports, up to 64. +</p> + +<p> +Alternatively, you can simply download all the tables and copy them into the +correct folder (see manual page, <code>ENVIRONMENT</code> section). On UNIX +operating systems this folder is either <code>.nissy/tables</code> in the +user's home directory or <code>$XDG_DATA_HOME/nissy/tables</code> if the +XDG variable is configured. On Windows it is the same directory as the +<code>nissy.exe</code> executable file. +</p> + +<h2>Version history</h2> + +<h3>Nissy v2</h3> + +<table class=dltable> +<tr> + <td><strong>Version</strong></td> + <td><strong>Date</strong></td> + <td><strong>Comment</strong></td> +</tr> +<tr> + <td><a href="/nissy-2.0.1.tar.gz">2.0.1</a></td> + <td>2022-02-22</td> + <td>Bugfix release</td> +</tr> +<tr> + <td>2.0</td> + <td>2021-12-29</td> + <td>Rewritten from scratch; much faster optimal solver</td> +</tr> +</table> + +<h3>Nissy v1</h3> + +<p> +Nissy v1 was released in 2020. It was slow, full of bugs and the code +was quite terrible. But in practice it got its job done most of the time. +</p> + + +<hr class="line"> + +<nav class="bottom"> + <table class="footer"> + <tr> + <td class="contact"> + <a href="https://sebastiano.tronto.net">sebastiano.tronto.net</a> + </td> + <td class="hosted"> + <a href="mailto:sebastiano@tronto.net"> + sebastiano@tronto.net + </a> + </td> + </tr> + </table> +</nav> + +</body> +</html> diff --git a/www/examples/index.html b/www/examples/index.html @@ -0,0 +1,49 @@ +<!doctype html> +<html> +<head> + <title> Examples | Nissy </title> +<meta name="viewport" content="width=device-width" /> <link rel="stylesheet" type="text/css" href="/style.css"> + <link rel="icon" href="/favicon.png"> + <meta charset="utf-8"> +</head> + +<body> + +<nav class="top"> + <table class="menu"> + <tr> + <td class="logo"> <a href="/"><img src="/favicon.png"></a> </td> + <td class="links"> + <a href="/download/">Download</a> | + <a href="/examples/">Examples</a> + </td> + </tr> + </table> +</nav> + +<hr class="line"> + + +<h1>Examples</h1> + +(Coming soon...) + +<hr class="line"> + +<nav class="bottom"> + <table class="footer"> + <tr> + <td class="contact"> + <a href="https://sebastiano.tronto.net">sebastiano.tronto.net</a> + </td> + <td class="hosted"> + <a href="mailto:sebastiano@tronto.net"> + sebastiano@tronto.net + </a> + </td> + </tr> + </table> +</nav> + +</body> +</html> diff --git a/www/favicon.png b/www/favicon.png Binary files differ. diff --git a/www/index.html b/www/index.html @@ -0,0 +1,93 @@ +<!doctype html> +<html> +<head> + <title> Nissy | Nissy </title> +<meta name="viewport" content="width=device-width" /> <link rel="stylesheet" type="text/css" href="/style.css"> + <link rel="icon" href="/favicon.png"> + <meta charset="utf-8"> +</head> + +<body> + +<nav class="top"> + <table class="menu"> + <tr> + <td class="logo"> <a href="/"><img src="/favicon.png"></a> </td> + <td class="links"> + <a href="/download/">Download</a> | + <a href="/examples/">Examples</a> + </td> + </tr> + </table> +</nav> + +<hr class="line"> + + +<h1>Nissy</h1> + +<p class=subtitle>A Rubik's cube solver and FMC assistant</p> + +<img src="/screenshot.png"> + +<p> +Nissy is a command-line Rubik's cube solver. It can find optimal solutions +for random positions using techniques from Herbert Kociemba's +<a href="http://kociemba.org/cube.htm">Cube Explorer</a> and +Tomas Rokicki's +<a href="https://github.com/rokici/cube20src/blob/master/nxopt.md">nxopt</a>. +With 4 cores at 2.5GHz and using less than 3Gb of RAM, Nissy can find an optimal +solution in about a minute on average. +</p> + +<p> +Nissy aims at being a complete tool +for FMC (Fewest Moves Challenge) practice. It can solve different steps +of Thistlethwaite's algorithm (also know as DR/HTR) and cans use NISS +(Normal-Inverse Scramble Switch). +</p> + +<p> +You should use Nissy if: +</p> +<ul> +<li> +You want to analyze your DR solutions or check for multiple optimal +(or sub-optimal) solutions for EO/DR/HTR or similar steps. +</li> +<li> +You just want a Rubik's cube solver and you like command line interfaces. +</li> +<li> +You want an alternative to Cube Explorer. +</li> +</ul> + +<p> +To get started, head to the <a href="/download/">download</a> page. +</p> + +<p> +You can also see its source code by cloning the git repository +<a href="https://git.tronto.net/nissy/">git.tronto.net/nissy</a> +</p> + +<hr class="line"> + +<nav class="bottom"> + <table class="footer"> + <tr> + <td class="contact"> + <a href="https://sebastiano.tronto.net">sebastiano.tronto.net</a> + </td> + <td class="hosted"> + <a href="mailto:sebastiano@tronto.net"> + sebastiano@tronto.net + </a> + </td> + </tr> + </table> +</nav> + +</body> +</html> diff --git a/www/screenshot.png b/www/screenshot.png Binary files differ. diff --git a/www/style.css b/www/style.css @@ -0,0 +1,99 @@ +.menu { + width: 100%; +} + +.links { + text-align: right; + font-weight: bold; +} + +.logo img { + width: 50px; + height: 50px; +} + +.footer { + font-style: italic; + width: 100%; +} + +.hosted { + text-align: right; +} + +body { + margin: auto 8px 20px 8px; +} + +img { + display: block; + margin-left: auto; + margin-right: auto; + max-width: 100%; +} + +pre, code { + background-color: #eeeeee; +} + +pre { + border: 2px solid; + padding: 6px; +} + +#blob { + background: #ffffff; + border: none; +} + +a { + color: #0f2899; + text-decoration: none; +} + +.links a { + font-weight: bold; + color: black; +} + +.hosted a, +.contact a { + font-weight: bold; +} + +a:hover { + text-decoration: underline; +} + +html { + margin: 1em auto; + max-width: 42em; +} + +h1 { + text-align: center; +} + +td h1 { + text-align: left; + font-size: 1.5em; +} + +table { + width: 100%; +} + +.url td { + font-family: monospace; +} + +.dltable th, .dltable td { + border: 1px solid black; + padding: 3px; +} + +.subtitle { + text-align: center; + font-weight: bold; + font-size: 1.1em; +}