From e2b154c40acaac4e7a7b3e379ada0404519c3750 Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Thu, 31 Jul 2025 08:38:37 +0200 Subject: Added solvetest for EO (broken for now) --- tools/400_solvetest/scrambles.h | 62 -------------------- tools/400_solvetest/solve_test.c | 120 --------------------------------------- 2 files changed, 182 deletions(-) delete mode 100644 tools/400_solvetest/scrambles.h delete mode 100644 tools/400_solvetest/solve_test.c (limited to 'tools/400_solvetest') diff --git a/tools/400_solvetest/scrambles.h b/tools/400_solvetest/scrambles.h deleted file mode 100644 index 59037be..0000000 --- a/tools/400_solvetest/scrambles.h +++ /dev/null @@ -1,62 +0,0 @@ -struct { - char *scramble; - char *solutions; -} s[] = { -[0] = { - .scramble = "R' D R U R' D' R U'", - .solutions = - "U R' D R U' R' D' R\n" - "B' D2 B U' B' D2 B U\n" -}, -[1] = { - .scramble = "R' L U2 R L' B2", - .solutions = - "B2 R' L U2 R L'\n" - "R L' B2 R' L U2\n" - "R B2 R' L U2 L'\n" - "L' B2 R' L U2 R\n" -}, -[2] = { - .scramble = "R2 U2 R2 U2 R2 U2", - .solutions = - "U2 R2 U2 R2 U2 R2\n" - "D2 L2 U2 L2 D2 R2\n" - "U2 L2 D2 R2 D2 L2\n" - "D2 R2 D2 L2 U2 L2\n" - "R2 U2 R2 U2 R2 U2\n" - "L2 D2 R2 D2 L2 U2\n" - "R2 D2 L2 U2 L2 D2\n" - "L2 U2 L2 D2 R2 D2\n" -}, -[3] = { - .scramble = "R U2 R' U' R U2 L' U R' U' L", /* J-perm */ - .solutions = - "R2 D' R' D R' B2 L U' L' B2\n" - "B2 L U L' B2 R D' R D R2\n" -}, -[4] = { - .scramble = "R' U' F D2 L2 F R2 U2 R2 B D2 L B2" - "D' B2 L' R' B D2 B U2 L U2 R' U' F", /* FMC2019 A1 */ - .solutions = - "D2 F' U2 D2 F' L2 D R2 D F B2 R' L2 F' U' D\n" -}, -[5] = { - .scramble = "L B' D2 R2 L2 B' U2 D2 R L' U F2", /* Taken from 6 */ - .solutions = - "B2 R2 L2 D F2 B2 R' L F' U2 B L'\n" - "F2 U' R' L U2 D2 B R2 L2 D2 B L'\n" -}, -[6] = { - .scramble = "R L' B R L' D R L' F R L' U" - "R' L F R L' D R L' B R L' U", /* Random thing */ - .solutions = - "U' R L' B' D2 F R' L F2 B2 U' F2 R2 L2 U2\n" - "U' R L' B' R2 L2 U2 B' U2 D2 R' L D B2 U2\n" - "D2 R' L F R' B' R U B U L F' U' F' D\n" - "D' R' L B' U2 F R L' F2 B2 D' R2 L2 B2 D2\n" - "D' R' L B' D2 R2 L2 B' U2 D2 R L' U F2 D2\n" -}, -{ - .scramble = "", /* End-of-list signal */ -} -}; diff --git a/tools/400_solvetest/solve_test.c b/tools/400_solvetest/solve_test.c deleted file mode 100644 index 73e6e8e..0000000 --- a/tools/400_solvetest/solve_test.c +++ /dev/null @@ -1,120 +0,0 @@ -#include "../tool.h" -#include "scrambles.h" - -#define SOL_BUFFER_LEN 100000 - -char *solver; -int64_t size = 0; -unsigned char *buf; - -bool check_one(char *actual, char *expected) { - unsigned i; - size_t l_actual, l_expected; - - for (l_actual = 0; actual[l_actual] != '\n'; l_actual++) ; - l_expected = strlen(expected); - if (l_actual > l_expected) - return false; - for (i = 0; i < l_expected; i++) { - if (!strncmp(actual, &expected[i], l_actual)) - return true; - while(expected[i] != '\n') i++; - } - return false; -} - -bool check_all(char *actual, char *expected) { - unsigned i, found, n_expected; - size_t l_actual; - - l_actual = strlen(actual); - if (l_actual != strlen(expected)) - return false; - - for (i = 0, n_expected = 0; expected[i]; i++) - n_expected += expected[i] == '\n'; - - for (i = 0, found = 0; i < l_actual; i++) - if (i == 0 || actual[i-1] == '\n') - found += check_one(&actual[i], expected); - - return found == n_expected; -} - -void run(void) { - int i; - int64_t n; - long long stats[NISSY_SIZE_SOLVE_STATS]; - char sol[SOL_BUFFER_LEN], cube[NISSY_SIZE_CUBE]; - - for (i = 0; s[i].scramble[0]; i++) { - printf("\n%d. %s\n", i, s[i].scramble); - - /* Single solution */ - if (nissy_applymoves(NISSY_SOLVED_CUBE, s[i].scramble, cube) - == -1) { - printf("Invalid scramble\n"); - continue; - } - n = nissy_solve(cube, solver, NISSY_NISSFLAG_NORMAL, - 0, 20, 1, -1, 0, size, buf, SOL_BUFFER_LEN, sol, stats, - NULL, NULL); - if (n == 0) { - printf("Error: no solution\n"); - return; - } - if (check_one(sol, s[i].solutions)) { - printf("Single solution is correct\n"); - } else { - printf("Error!\n"); - printf("Found solution(s):\n%s", sol); - printf("Valid solution(s):\n%s", s[i].solutions); - return; - } - - /* Multiple solutions */ - if (nissy_applymoves(NISSY_SOLVED_CUBE, s[i].scramble, cube) - == -1) { - printf("Invalid scramble\n"); - continue; - } - n = nissy_solve(cube, solver, NISSY_NISSFLAG_NORMAL, - 0, 20, 100, 0, 0, size, buf, SOL_BUFFER_LEN, sol, stats, - NULL, NULL); - if (check_all(sol, s[i].solutions)) { - printf("All solutions are correct\n"); - } else { - printf("Error!\n"); - printf("Found solution(s):\n%s", sol); - printf("Valid solution(s):\n%s", s[i].solutions); - return; - } - } - - printf("\nAll scrambles solved correctly\n"); -} - -int main(int argc, char **argv) { - char filename[255], dataid[NISSY_SIZE_DATAID]; - - if (argc < 2) { - printf("Error: not enough arguments. " - "A solver must be given.\n"); - return 1; - } - - solver = argv[1]; - srand(time(NULL)); - nissy_setlogger(log_stderr, NULL); - - sprintf(filename, "tables/%s", solver); - if (getdata(solver, &buf, filename) != 0) - return 1; - - size = nissy_solverinfo(solver, dataid); - - timerun(run); - - free(buf); - return 0; -} -- cgit v1.3