aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2024-12-15 11:14:42 +0100
committerSebastiano Tronto <sebastiano@tronto.net>2024-12-15 11:14:42 +0100
commit6008855b28763f297f4379dfcdc23eacb303ee45 (patch)
treeaffa8d9fb89dae82b63267b5a4e0c2cda1c287af
parentce987d566b8322d0e341a2c9baf0608d1609943b (diff)
downloadnissy-core-6008855b28763f297f4379dfcdc23eacb303ee45.tar.gz
nissy-core-6008855b28763f297f4379dfcdc23eacb303ee45.zip
Added tool to check for correctnes of H48 solver. TODO: add more scrambles.
-rw-r--r--tools/400_solvetest/solve_test.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/tools/400_solvetest/solve_test.c b/tools/400_solvetest/solve_test.c
index d19e1f3..14b3e04 100644
--- a/tools/400_solvetest/solve_test.c
+++ b/tools/400_solvetest/solve_test.c
@@ -14,8 +14,17 @@ char *buf;
14scramblesol_t s[] = { 14scramblesol_t s[] = {
15[0] = { 15[0] = {
16 .scramble = "R' D R U R' D' R U'", 16 .scramble = "R' D R U R' D' R U'",
17 .solutions = "U R' D R U' R' D' R\n" 17 .solutions =
18 "B' D2 B U' B' D2 B U\n", 18 "U R' D R U' R' D' R\n"
19 "B' D2 B U' B' D2 B U\n"
20},
21[1] = {
22 .scramble = "R' L U2 R L' B2",
23 .solutions =
24 "B2 R' L U2 R L'\n"
25 "R L' B2 R' L U2\n"
26 "R B2 R' L U2 L'\n"
27 "L' B2 R' L U2 R\n"
19}, 28},
20{ 29{
21 .scramble = "", /* End-of-list signal */ 30 .scramble = "", /* End-of-list signal */
@@ -26,7 +35,7 @@ bool check_one(char *actual, char *expected) {
26 unsigned i; 35 unsigned i;
27 size_t l_actual, l_expected; 36 size_t l_actual, l_expected;
28 37
29 l_actual = strlen(actual); 38 for (l_actual = 0; actual[l_actual] != '\n'; l_actual++) ;
30 l_expected = strlen(expected); 39 l_expected = strlen(expected);
31 if (l_actual > l_expected) 40 if (l_actual > l_expected)
32 return false; 41 return false;
@@ -42,15 +51,16 @@ bool check_all(char *actual, char *expected) {
42 unsigned i, found, n_expected; 51 unsigned i, found, n_expected;
43 size_t l_actual; 52 size_t l_actual;
44 53
45 if (strlen(actual) != strlen(expected)) 54 l_actual = strlen(actual);
55 if (l_actual != strlen(expected))
46 return false; 56 return false;
47 57
48 for (i = 0, n_expected = 0; expected[i]; i++) 58 for (i = 0, n_expected = 0; expected[i]; i++)
49 n_expected += expected[i] == '\n'; 59 n_expected += expected[i] == '\n';
50 60
51 l_actual = strlen(actual);
52 for (i = 0, found = 0; i < l_actual; i++) 61 for (i = 0, found = 0; i < l_actual; i++)
53 found += check_one(&actual[i], expected); 62 if (i == 0 || actual[i-1] == '\n')
63 found += check_one(&actual[i], expected);
54 64
55 return found == n_expected; 65 return found == n_expected;
56} 66}

Generated with cgit - Back to sebastiano.tronto.net