diff options
| author | Sebastiano Tronto <sebastiano@tronto.net> | 2024-12-15 11:14:42 +0100 |
|---|---|---|
| committer | Sebastiano Tronto <sebastiano@tronto.net> | 2024-12-15 11:14:42 +0100 |
| commit | 6008855b28763f297f4379dfcdc23eacb303ee45 (patch) | |
| tree | affa8d9fb89dae82b63267b5a4e0c2cda1c287af | |
| parent | ce987d566b8322d0e341a2c9baf0608d1609943b (diff) | |
| download | nissy-core-6008855b28763f297f4379dfcdc23eacb303ee45.tar.gz nissy-core-6008855b28763f297f4379dfcdc23eacb303ee45.zip | |
Added tool to check for correctnes of H48 solver. TODO: add more scrambles.
Diffstat (limited to '')
| -rw-r--r-- | tools/400_solvetest/solve_test.c | 22 |
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; | |||
| 14 | scramblesol_t s[] = { | 14 | scramblesol_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 | } |
