aboutsummaryrefslogtreecommitdiff
path: root/python/examples
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2025-08-14 13:32:19 +0200
committerSebastiano Tronto <sebastiano@tronto.net>2025-08-14 13:32:19 +0200
commitc835bf15da3ce39b856222d352c800f6ebd51acf (patch)
tree22f44fb6e766d9758a72182cef1dca7131e7a3a7 /python/examples
parent325778cb5f4b169ef7e197e179cfb889808d10c2 (diff)
downloadnissy-core-c835bf15da3ce39b856222d352c800f6ebd51acf.tar.gz
nissy-core-c835bf15da3ce39b856222d352c800f6ebd51acf.zip
Added attempt to make pause / resume work with python module
Diffstat (limited to 'python/examples')
-rw-r--r--python/examples/pause_resume.py35
-rw-r--r--python/examples/solve.py6
2 files changed, 37 insertions, 4 deletions
diff --git a/python/examples/pause_resume.py b/python/examples/pause_resume.py
new file mode 100644
index 0000000..5daebeb
--- /dev/null
+++ b/python/examples/pause_resume.py
@@ -0,0 +1,35 @@
1# This example is meant to test the pause / resume / stop mechanism
2# See the solve.py example for more details on how this works
3
4import sys, os, time
5
6sys.path.append(os.getcwd())
7sys.path.append(os.getcwd() + os.path.sep + "python")
8import nissy
9
10# Function used to pause, resume and kill the solver
11t0 = time.time()
12def poll():
13 t = time.time() - t0
14 if t < 3:
15 print("[{}s] pausing for the first 3 seconds".format(t))
16 return nissy.status_pause
17 if t < 6:
18 print("[{}s] Letting the solver run for 3 seconds".format(t))
19 return nissy.status_run
20 print("[{}s] Too much time has passed, giving up".format(t))
21 return nissy.status_stop
22
23solver = "h48h0k4"
24datapath = "tables" + os.path.sep + solver
25if os.path.exists(datapath):
26 data = bytearray(open(datapath, "rb").read())
27else:
28 data = nissy.gendata("h48h0k4")
29 print("Generated data will NOT be persisted")
30
31# Scramble is 19 moves optimal, should take a while with the h48h0k4 solver
32scramble = "R' U' F D R F2 D L F D2 F2 L' U R' L2 D' R2 F2 R2 D L2 U2 R' U' F"
33cube = nissy.applymoves(nissy.solved_cube, scramble);
34
35nissy.solve(cube, solver, nissy.nissflag_normal, 0, 9, 3, 20, 4, data, poll)
diff --git a/python/examples/solve.py b/python/examples/solve.py
index 75e7914..c2c992b 100644
--- a/python/examples/solve.py
+++ b/python/examples/solve.py
@@ -3,12 +3,10 @@
3# Run "./build.sh python", then run this from either the top-level directory 3# Run "./build.sh python", then run this from either the top-level directory
4# of the nissy-core repo or from the python subdirectory. 4# of the nissy-core repo or from the python subdirectory.
5 5
6# Append the directories to the python path so we can load the module 6# Append the directories to the python path and import
7import sys, os 7import sys, os
8sys.path.append(os.getcwd()) 8sys.path.append(os.getcwd())
9sys.path.append(os.getcwd() + os.path.sep + "python") 9sys.path.append(os.getcwd() + os.path.sep + "python")
10
11# Import with a nicer name
12import nissy 10import nissy
13 11
14# Choose the solver you prefer 12# Choose the solver you prefer
@@ -26,7 +24,7 @@ else:
26cube = nissy.applymoves(nissy.solved_cube, "U F R2"); 24cube = nissy.applymoves(nissy.solved_cube, "U F R2");
27 25
28# Solve! 26# Solve!
29solutions = nissy.solve(cube, solver, nissy.nissflag_normal, 0, 9, 3, 20, 4, data) 27solutions = nissy.solve(cube, solver, nissy.nissflag_normal, 0, 9, 3, 20, 4, data, None)
30 28
31# Print the solutions, one per line 29# Print the solutions, one per line
32print("Found ", len(solutions), " solutions:") 30print("Found ", len(solutions), " solutions:")

Generated with cgit - Back to sebastiano.tronto.net