nissy-core

The "engine" of nissy, including the H48 optimal solver.
git clone https://git.tronto.net/nissy-core
Download | Log | Files | Refs | README | LICENSE

commit f74438386c6ba50cba75de93040c5230dac99359
parent 37a2ebd4bffa99d465396fde0acfc52284ee3b7c
Author: Sebastiano Tronto <sebastiano@tronto.net>
Date:   Fri, 30 May 2025 14:18:58 +0200

Added last option to solver configuration web version

Diffstat:
Mweb/http/index.html | 6+++++-
Mweb/http/nissyapp.mjs | 21+++++++++++++--------
2 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/web/http/index.html b/web/http/index.html @@ -35,7 +35,11 @@ <br /> <label for="maxSolutions">Limit number of solutions to</label> <input id="maxSolutions" name="maxSolutions" - type="number" min="1" max="999" value="1"> + type="number" min="1" max="999" value="1" /> + <br /> + <label for="optimalInput">Above optimal by at most</label> + <input id="optimalInput" name="optimal" + type="number" min="0" max="20" value="20" /> </div> <div id="confirmDownload" style="display:none"> diff --git a/web/http/nissyapp.mjs b/web/http/nissyapp.mjs @@ -16,6 +16,7 @@ var maxSlider = document.getElementById("maxMovesSlider"); var minLabel = document.getElementById("minLabel"); var maxLabel = document.getElementById("maxLabel"); var maxSolsInput = document.getElementById("maxSolutions"); +var optimalInput = document.getElementById("optimalInput"); var solveStatus = "run"; // For now this is global var lastCallbackId = 0; @@ -50,6 +51,7 @@ function updateResults(label, results, enable) { minSlider.disabled = !enable; maxSlider.disabled = !enable; maxSolsInput.disabled = !enable; + optimalInput.disabled = !enable; } scrField.addEventListener("input", (e) => { @@ -80,14 +82,17 @@ minSlider.addEventListener("input", () => maxSlider.addEventListener("input", () => maxLabel.innerText = "Maximum moves: " + maxSlider.value); -maxSolsInput.addEventListener("keyup", () => { - if (maxSolsInput.value != "") { - if (parseInt(maxSolsInput.value) < parseInt(maxSolsInput.min)) - maxSolsInput.value = maxSolsInput.min; - if (parseInt(maxSolsInput.value) > parseInt(maxSolsInput.max)) - maxSolsInput.value = maxSolsInput.max; +function enforceMinMax() { + if (this.value != "") { + if (parseInt(this.value) < parseInt(this.min)) + this.value = this.min; + if (parseInt(this.value) > parseInt(this.max)) + this.value = this.max; } -}); +} + +maxSolsInput.addEventListener("keyup", enforceMinMax); +optimalInput.addEventListener("keyup", enforceMinMax); var logVisible = false; toggleLog.addEventListener("click", () => { @@ -265,7 +270,7 @@ function startSolve(solver, scramble) { minmoves: minSlider.value, maxmoves: maxSlider.value, maxsolutions: maxSolsInput.value, - optimal: 20, + optimal: optimalInput.value, threads: window.navigator.hardwareConcurrency, } });