aboutsummaryrefslogtreecommitdiff
path: root/test/102_cocsep_selfsim
diff options
context:
space:
mode:
Diffstat (limited to 'test/102_cocsep_selfsim')
-rw-r--r--test/102_cocsep_selfsim/00_all.in2
-rw-r--r--test/102_cocsep_selfsim/00_all.out2
-rw-r--r--test/102_cocsep_selfsim/cocsep_selfsim_tests.c38
3 files changed, 42 insertions, 0 deletions
diff --git a/test/102_cocsep_selfsim/00_all.in b/test/102_cocsep_selfsim/00_all.in
new file mode 100644
index 0000000..07bda04
--- /dev/null
+++ b/test/102_cocsep_selfsim/00_all.in
@@ -0,0 +1,2 @@
1UF0 UB0 DB0 DF0 UR0 UL0 DL0 DR0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFL0 DBR0 UFL0 UBR0 DFR0 DBL0
2UF0 UB0 DB0 DF0 FR0 UL0 DL0 BR0 DR0 FL0 BL0 UR0 DFR2 UBL0 DFL0 UBR2 UFL0 UFR1 DBR1 DBL0
diff --git a/test/102_cocsep_selfsim/00_all.out b/test/102_cocsep_selfsim/00_all.out
new file mode 100644
index 0000000..cc96363
--- /dev/null
+++ b/test/102_cocsep_selfsim/00_all.out
@@ -0,0 +1,2 @@
10 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
20 1 2 3 24 25 26 27
diff --git a/test/102_cocsep_selfsim/cocsep_selfsim_tests.c b/test/102_cocsep_selfsim/cocsep_selfsim_tests.c
new file mode 100644
index 0000000..7211e2e
--- /dev/null
+++ b/test/102_cocsep_selfsim/cocsep_selfsim_tests.c
@@ -0,0 +1,38 @@
1/*
2 * This test is tricky, we only have two cases for now: the solved cube
3 * and the cube that is one quarter-turn-move off (all such cases are
4 * equivalent due to symmetry). Adding more tests requires figuring out
5 * by hand which one is the first position in its class to be reached.
6 * Note that the .out files need a space before each newline.
7 */
8#include "../test.h"
9
10#define COCSEP_CLASSES 3393
11
12size_t gendata_cocsep(void *, uint64_t *, cube_t *);
13int64_t coord_cocsep(cube_t);
14
15void run(void) {
16 char str[STRLENMAX];
17 uint32_t buf[300000], data;
18 int64_t coord, coclass;
19 uint64_t selfsim[COCSEP_CLASSES], sim, t;
20 cube_t cube, rep[COCSEP_CLASSES];
21
22 gendata_cocsep(buf, selfsim, rep);
23
24 /* All cases in the same test so we do not generate data many times */
25
26 while (fgets(str, STRLENMAX, stdin) != NULL) {
27 cube = readcube("H48", str);
28 coord = coord_cocsep(cube);
29 data = buf[coord];
30 coclass = (data & (0xFFFU << 16)) >> 16;
31 sim = selfsim[coclass];
32 for (t = 0; t < 48 && sim; t++, sim >>= 1) {
33 if (sim & 1)
34 printf("%" PRId64 " ", t);
35 }
36 printf("\n");
37 }
38}

Generated with cgit - Back to sebastiano.tronto.net