aboutsummaryrefslogtreecommitdiff
path: root/test/130_appendsolution
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2025-03-24 23:09:26 +0100
committerSebastiano Tronto <sebastiano@tronto.net>2025-03-24 23:09:26 +0100
commitd45e1595ec1cffeab83ac6602b748250b66bea03 (patch)
tree44b35714cdae22026fc5e15648e91684a2fbb154 /test/130_appendsolution
parentce3f1cc0ef9f46d70ab5387b1458e9098b40711d (diff)
downloadnissy-core-d45e1595ec1cffeab83ac6602b748250b66bea03.tar.gz
nissy-core-d45e1595ec1cffeab83ac6602b748250b66bea03.zip
Big cleanup for appendsolution()
With this PR the appendsolution routine is extracted from the h48 solver and the new coordinate solver and made generic. This has many advantages: - less repetition (even if the two versions are different enough that *for now* it was not a big deal) - smaller h48/solve.h file, which is already a big beast - easier to test the appendsolution() routine separately
Diffstat (limited to 'test/130_appendsolution')
-rw-r--r--test/130_appendsolution/00_empty.in5
-rw-r--r--test/130_appendsolution/00_empty.out4
-rw-r--r--test/130_appendsolution/01_simple_onlynormal_nounniss.in5
-rw-r--r--test/130_appendsolution/01_simple_onlynormal_nounniss.out4
-rw-r--r--test/130_appendsolution/02_simple_onlynormal_nounnis_multitrans.in8
-rw-r--r--test/130_appendsolution/02_simple_onlynormal_nounnis_multitrans.out7
-rw-r--r--test/130_appendsolution/03_simple_unniss.in5
-rw-r--r--test/130_appendsolution/03_simple_unniss.out4
-rw-r--r--test/130_appendsolution/04_niss_nounniss.in5
-rw-r--r--test/130_appendsolution/04_niss_nounniss.out4
-rw-r--r--test/130_appendsolution/05_sort_parallel.in5
-rw-r--r--test/130_appendsolution/05_sort_parallel.out4
-rw-r--r--test/130_appendsolution/06_unniss_trans_sort.in5
-rw-r--r--test/130_appendsolution/06_unniss_trans_sort.out4
-rw-r--r--test/130_appendsolution/07_unniss_cancel_nosol.in5
-rw-r--r--test/130_appendsolution/07_unniss_cancel_nosol.out3
-rw-r--r--test/130_appendsolution/08_unniss_cancel_nosol_v2.in5
-rw-r--r--test/130_appendsolution/08_unniss_cancel_nosol_v2.out3
-rw-r--r--test/130_appendsolution/appendsolution_tests.c58
19 files changed, 143 insertions, 0 deletions
diff --git a/test/130_appendsolution/00_empty.in b/test/130_appendsolution/00_empty.in
new file mode 100644
index 0000000..c4cad6e
--- /dev/null
+++ b/test/130_appendsolution/00_empty.in
@@ -0,0 +1,5 @@
1
2
30
41
5rotation UF
diff --git a/test/130_appendsolution/00_empty.out b/test/130_appendsolution/00_empty.out
new file mode 100644
index 0000000..8581416
--- /dev/null
+++ b/test/130_appendsolution/00_empty.out
@@ -0,0 +1,4 @@
1
2Number of solutions: 1
3Shortest solution length: 0
4Used bytes: 1
diff --git a/test/130_appendsolution/01_simple_onlynormal_nounniss.in b/test/130_appendsolution/01_simple_onlynormal_nounniss.in
new file mode 100644
index 0000000..37b6f3d
--- /dev/null
+++ b/test/130_appendsolution/01_simple_onlynormal_nounniss.in
@@ -0,0 +1,5 @@
1U F R D2 B'
2
30
41
5rotation UF
diff --git a/test/130_appendsolution/01_simple_onlynormal_nounniss.out b/test/130_appendsolution/01_simple_onlynormal_nounniss.out
new file mode 100644
index 0000000..b577962
--- /dev/null
+++ b/test/130_appendsolution/01_simple_onlynormal_nounniss.out
@@ -0,0 +1,4 @@
1U F R D2 B'
2Number of solutions: 1
3Shortest solution length: 5
4Used bytes: 12
diff --git a/test/130_appendsolution/02_simple_onlynormal_nounnis_multitrans.in b/test/130_appendsolution/02_simple_onlynormal_nounnis_multitrans.in
new file mode 100644
index 0000000..c4ff41a
--- /dev/null
+++ b/test/130_appendsolution/02_simple_onlynormal_nounnis_multitrans.in
@@ -0,0 +1,8 @@
1U F R
2
30
44
5rotation UF
6mirrored UR
7rotation BD
8mirrored LB
diff --git a/test/130_appendsolution/02_simple_onlynormal_nounnis_multitrans.out b/test/130_appendsolution/02_simple_onlynormal_nounnis_multitrans.out
new file mode 100644
index 0000000..e1b5631
--- /dev/null
+++ b/test/130_appendsolution/02_simple_onlynormal_nounnis_multitrans.out
@@ -0,0 +1,7 @@
1U F R
2B D L
3U' L' B'
4R' B' D'
5Number of solutions: 4
6Shortest solution length: 3
7Used bytes: 30
diff --git a/test/130_appendsolution/03_simple_unniss.in b/test/130_appendsolution/03_simple_unniss.in
new file mode 100644
index 0000000..231f60c
--- /dev/null
+++ b/test/130_appendsolution/03_simple_unniss.in
@@ -0,0 +1,5 @@
1U F B2
2R' F D
31
41
5rotation UF
diff --git a/test/130_appendsolution/03_simple_unniss.out b/test/130_appendsolution/03_simple_unniss.out
new file mode 100644
index 0000000..3ca210e
--- /dev/null
+++ b/test/130_appendsolution/03_simple_unniss.out
@@ -0,0 +1,4 @@
1U F B2 D' F' R
2Number of solutions: 1
3Shortest solution length: 6
4Used bytes: 15
diff --git a/test/130_appendsolution/04_niss_nounniss.in b/test/130_appendsolution/04_niss_nounniss.in
new file mode 100644
index 0000000..39c6518
--- /dev/null
+++ b/test/130_appendsolution/04_niss_nounniss.in
@@ -0,0 +1,5 @@
1U F B2
2R' F D
30
41
5rotation UF
diff --git a/test/130_appendsolution/04_niss_nounniss.out b/test/130_appendsolution/04_niss_nounniss.out
new file mode 100644
index 0000000..a616b4c
--- /dev/null
+++ b/test/130_appendsolution/04_niss_nounniss.out
@@ -0,0 +1,4 @@
1U F B2 (R' F D)
2Number of solutions: 1
3Shortest solution length: 6
4Used bytes: 16
diff --git a/test/130_appendsolution/05_sort_parallel.in b/test/130_appendsolution/05_sort_parallel.in
new file mode 100644
index 0000000..7c8c4f5
--- /dev/null
+++ b/test/130_appendsolution/05_sort_parallel.in
@@ -0,0 +1,5 @@
1L R' B2 F
2
30
41
5rotation UF
diff --git a/test/130_appendsolution/05_sort_parallel.out b/test/130_appendsolution/05_sort_parallel.out
new file mode 100644
index 0000000..fc09830
--- /dev/null
+++ b/test/130_appendsolution/05_sort_parallel.out
@@ -0,0 +1,4 @@
1R' L F B2
2Number of solutions: 1
3Shortest solution length: 4
4Used bytes: 10
diff --git a/test/130_appendsolution/06_unniss_trans_sort.in b/test/130_appendsolution/06_unniss_trans_sort.in
new file mode 100644
index 0000000..9be03a6
--- /dev/null
+++ b/test/130_appendsolution/06_unniss_trans_sort.in
@@ -0,0 +1,5 @@
1B
2R2 F2
31
41
5rotation UR
diff --git a/test/130_appendsolution/06_unniss_trans_sort.out b/test/130_appendsolution/06_unniss_trans_sort.out
new file mode 100644
index 0000000..28d7827
--- /dev/null
+++ b/test/130_appendsolution/06_unniss_trans_sort.out
@@ -0,0 +1,4 @@
1R2 L B2
2Number of solutions: 1
3Shortest solution length: 3
4Used bytes: 8
diff --git a/test/130_appendsolution/07_unniss_cancel_nosol.in b/test/130_appendsolution/07_unniss_cancel_nosol.in
new file mode 100644
index 0000000..561c909
--- /dev/null
+++ b/test/130_appendsolution/07_unniss_cancel_nosol.in
@@ -0,0 +1,5 @@
1B' F
2R2 B2
31
41
5rotation UF
diff --git a/test/130_appendsolution/07_unniss_cancel_nosol.out b/test/130_appendsolution/07_unniss_cancel_nosol.out
new file mode 100644
index 0000000..ed5ea65
--- /dev/null
+++ b/test/130_appendsolution/07_unniss_cancel_nosol.out
@@ -0,0 +1,3 @@
1Number of solutions: 0
2Shortest solution length: 21
3Used bytes: 0
diff --git a/test/130_appendsolution/08_unniss_cancel_nosol_v2.in b/test/130_appendsolution/08_unniss_cancel_nosol_v2.in
new file mode 100644
index 0000000..e707537
--- /dev/null
+++ b/test/130_appendsolution/08_unniss_cancel_nosol_v2.in
@@ -0,0 +1,5 @@
1F' B
2R2 F2
31
41
5rotation UF
diff --git a/test/130_appendsolution/08_unniss_cancel_nosol_v2.out b/test/130_appendsolution/08_unniss_cancel_nosol_v2.out
new file mode 100644
index 0000000..ed5ea65
--- /dev/null
+++ b/test/130_appendsolution/08_unniss_cancel_nosol_v2.out
@@ -0,0 +1,3 @@
1Number of solutions: 0
2Shortest solution length: 21
3Used bytes: 0
diff --git a/test/130_appendsolution/appendsolution_tests.c b/test/130_appendsolution/appendsolution_tests.c
new file mode 100644
index 0000000..066c305
--- /dev/null
+++ b/test/130_appendsolution/appendsolution_tests.c
@@ -0,0 +1,58 @@
1/*
2Input format for appendsolution tests:
3
4moves on normal
5moves on inverse (without parentheses)
6unniss flag (0=false, 1=true)
7number of transformations
8transformations, one per line
9
10See below for the output format.
11*/
12
13#include "../test.h"
14
15uint8_t readtrans(const char [NISSY_SIZE_TRANSFORMATION]);
16int64_t readmoves(const char *, size_t n, uint8_t [n]);
17void solution_moves_reset(solution_moves_t [static 1]);
18bool solution_list_init(solution_list_t [static 1], size_t n, char [n]);
19int64_t appendsolution(const solution_moves_t [static 1],
20 const solution_settings_t [static 1], solution_list_t [static 1]);
21
22void run(void) {
23 int i, ntrans;
24 char str[STRLENMAX], buf[STRLENMAX];
25 solution_moves_t moves;
26 solution_settings_t settings;
27 solution_list_t list;
28
29 solution_moves_reset(&moves);
30 solution_list_init(&list, STRLENMAX, buf);
31 settings = (solution_settings_t) {
32 .tmask = UINT64_C(0),
33 .unniss = false,
34 .maxmoves = 20,
35 .maxsolutions = 100,
36 .optimal = -1,
37 };
38
39 fgets(str, STRLENMAX, stdin);
40 moves.nmoves = (uint8_t)readmoves(str, 20, moves.moves);
41 fgets(str, STRLENMAX, stdin);
42 moves.npremoves = (uint8_t)readmoves(str, 20, moves.premoves);
43 fgets(str, STRLENMAX, stdin);
44 settings.unniss = (bool)atoi(str);
45 fgets(str, STRLENMAX, stdin);
46 ntrans = atoi(str);
47 for (i = 0; i < ntrans; i++) {
48 fgets(str, STRLENMAX, stdin);
49 settings.tmask |= UINT64_C(1) << (uint64_t)readtrans(str);
50 }
51
52 appendsolution(&moves, &settings, &list);
53
54 printf("%s", list.buf);
55 printf("Number of solutions: %" PRIu64 "\n", list.nsols);
56 printf("Shortest solution length: %" PRIu8 "\n", list.shortest_sol);
57 printf("Used bytes: %zu\n", list.used);
58}

Generated with cgit - Back to sebastiano.tronto.net