aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md2
-rw-r--r--src/cube.h13
-rw-r--r--src/cube_array.c13
-rw-r--r--test/04_compose/00_solved_solved.in2
-rw-r--r--test/04_compose/00_solved_solved.out1
-rw-r--r--test/04_compose/01_solved_U.in2
-rw-r--r--test/04_compose/01_solved_U.out1
-rw-r--r--test/04_compose/02_solved_scrambled.in2
-rw-r--r--test/04_compose/02_solved_scrambled.out1
-rw-r--r--test/04_compose/11_U_solved.in2
-rw-r--r--test/04_compose/11_U_solved.out1
-rw-r--r--test/04_compose/12_scrambled_solved.in2
-rw-r--r--test/04_compose/12_scrambled_solved.out1
-rw-r--r--test/04_compose/20_U_U.in2
-rw-r--r--test/04_compose/20_U_U.out1
-rw-r--r--test/04_compose/21_U_Uinverse.in2
-rw-r--r--test/04_compose/21_U_Uinverse.out1
-rw-r--r--test/04_compose/22_F_Finverse.in2
-rw-r--r--test/04_compose/22_F_Finverse.out1
-rw-r--r--test/04_compose/23_F2_F2.in2
-rw-r--r--test/04_compose/23_F2_F2.out1
-rw-r--r--test/04_compose/24_U_F.in2
-rw-r--r--test/04_compose/24_U_F.out1
-rw-r--r--test/04_compose/25_F_R.in2
-rw-r--r--test/04_compose/25_F_R.out1
-rw-r--r--test/04_compose/30_scrambled_inverse.in4
-rw-r--r--test/04_compose/30_scrambled_inverse.out1
-rw-r--r--test/04_compose/31_scrambled_scrambled.in4
-rw-r--r--test/04_compose/31_scrambled_scrambled.out1
-rw-r--r--test/04_compose/compose_tests.c30
-rw-r--r--test/last.err0
-rw-r--r--test/last.out1
-rwxr-xr-xtest/runbin0 -> 30136 bytes
-rwxr-xr-xtest/test.sh2
34 files changed, 100 insertions, 4 deletions
diff --git a/README.md b/README.md
index d1a0961..9cbd390 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@ Work in progress.
4 4
5TODO: 5TODO:
6 6
7* transformations (internal only, not in cube.h) 7* transformations
8* coordinates: co, eo, epsep, cpsep_sym, cocpsep_sym, cphtr_sym, cocphtr_sym 8* coordinates: co, eo, epsep, cpsep_sym, cocpsep_sym, cphtr_sym, cocphtr_sym
9* pruning tables (1 bit per entry + fallback) 9* pruning tables (1 bit per entry + fallback)
10* solve.c 10* solve.c
diff --git a/src/cube.h b/src/cube.h
index 836bb5d..e5434e3 100644
--- a/src/cube.h
+++ b/src/cube.h
@@ -1,9 +1,18 @@
1typedef enum { 1typedef enum {
2 U, U2, U3, D, D2, D3, 2 U = 0, U2, U3, D, D2, D3,
3 R, R2, R3, L, L2, L3, 3 R, R2, R3, L, L2, L3,
4 F, F2, F3, B, B2, B3 4 F, F2, F3, B, B2, B3
5} move_t; 5} move_t;
6 6
7typedef enum {
8 UF_i = 0, UL_i, UB_i, UR_i, DF_i, DL_i, DB_i, DR_i,
9 UF_m, UL_m, UB_m, UR_m, DF_m, DL_m, DB_m, DR_m,
10 RU_i, RF_i, RD_i, RB_i, LU_i, LF_i, LD_i, LB_i,
11 RU_m, RF_m, RD_m, RB_m, LU_m, LF_m, LD_m, LB_m,
12 FU_i, FR_i, FD_i, FL_i, BU_i, BR_i, BD_i, BL_i,
13 FU_m, FR_m, FD_m, FL_m, BU_m, BR_m, BD_m, BL_m
14} trans_t;
15
7typedef struct { 16typedef struct {
8 uint8_t c[8]; 17 uint8_t c[8];
9 uint8_t e[12]; 18 uint8_t e[12];
@@ -51,3 +60,5 @@ void writemoves(move_t *, int, char *);
51 60
52cube_t move(cube_t, move_t); 61cube_t move(cube_t, move_t);
53cube_t inverse(cube_t); 62cube_t inverse(cube_t);
63cube_t compose(cube_t, cube_t);
64cube_t transform(cube_t, trans_t);
diff --git a/src/cube_array.c b/src/cube_array.c
index 3445658..a051610 100644
--- a/src/cube_array.c
+++ b/src/cube_array.c
@@ -155,7 +155,6 @@ static uint8_t readep(char *);
155static uint8_t readmove(char); 155static uint8_t readmove(char);
156static uint8_t readmodifier(char); 156static uint8_t readmodifier(char);
157static int permsign(uint8_t *, int); 157static int permsign(uint8_t *, int);
158static cube_t compose(cube_t, cube_t);
159 158
160static uint8_t 159static uint8_t
161readco(char *str) 160readco(char *str)
@@ -710,3 +709,15 @@ inverse_inconsistent:
710 fprintf(stderr, "inverse error, inconsistent cube\n"); 709 fprintf(stderr, "inverse error, inconsistent cube\n");
711 return errorcube; 710 return errorcube;
712} 711}
712
713cube_t
714compose(cube_t c1, cube_t c2)
715{
716 return errorcube;
717}
718
719cube_t
720transform(cube_t c, trans_t t)
721{
722 return errorcube;
723}
diff --git a/test/04_compose/00_solved_solved.in b/test/04_compose/00_solved_solved.in
new file mode 100644
index 0000000..4ccdb6e
--- /dev/null
+++ b/test/04_compose/00_solved_solved.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 UR0 UL0 DL0 DR0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFL0 DBR0 UFL0 UBR0 DFR0 DBL0
diff --git a/test/04_compose/00_solved_solved.out b/test/04_compose/00_solved_solved.out
new file mode 100644
index 0000000..dff224d
--- /dev/null
+++ b/test/04_compose/00_solved_solved.out
@@ -0,0 +1 @@
UF0 UB0 DB0 DF0 UR0 UL0 DL0 DR0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFL0 DBR0 UFL0 UBR0 DFR0 DBL0
diff --git a/test/04_compose/01_solved_U.in b/test/04_compose/01_solved_U.in
new file mode 100644
index 0000000..e0559dd
--- /dev/null
+++ b/test/04_compose/01_solved_U.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
2UR0 UL0 DB0 DF0 UB0 UF0 DL0 DR0 FR0 FL0 BL0 BR0 UBR0 UFL0 DFL0 DBR0 UFR0 UBL0 DFR0 DBL0
diff --git a/test/04_compose/01_solved_U.out b/test/04_compose/01_solved_U.out
new file mode 100644
index 0000000..b5b36ad
--- /dev/null
+++ b/test/04_compose/01_solved_U.out
@@ -0,0 +1 @@
UR0 UL0 DB0 DF0 UB0 UF0 DL0 DR0 FR0 FL0 BL0 BR0 UBR0 UFL0 DFL0 DBR0 UFR0 UBL0 DFR0 DBL0
diff --git a/test/04_compose/02_solved_scrambled.in b/test/04_compose/02_solved_scrambled.in
new file mode 100644
index 0000000..ad36258
--- /dev/null
+++ b/test/04_compose/02_solved_scrambled.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
2DR0 DB0 BL0 DF1 UB0 UR1 FR1 UF0 FL1 DL0 BR1 UL1 DBL2 DFL0 UBR1 DFR2 UFR0 DBR1 UBL0 UFL0
diff --git a/test/04_compose/02_solved_scrambled.out b/test/04_compose/02_solved_scrambled.out
new file mode 100644
index 0000000..263213b
--- /dev/null
+++ b/test/04_compose/02_solved_scrambled.out
@@ -0,0 +1 @@
DR0 DB0 BL0 DF1 UB0 UR1 FR1 UF0 FL1 DL0 BR1 UL1 DBL2 DFL0 UBR1 DFR2 UFR0 DBR1 UBL0 UFL0
diff --git a/test/04_compose/11_U_solved.in b/test/04_compose/11_U_solved.in
new file mode 100644
index 0000000..5993795
--- /dev/null
+++ b/test/04_compose/11_U_solved.in
@@ -0,0 +1,2 @@
1UR0 UL0 DB0 DF0 UB0 UF0 DL0 DR0 FR0 FL0 BL0 BR0 UBR0 UFL0 DFL0 DBR0 UFR0 UBL0 DFR0 DBL0
2UF0 UB0 DB0 DF0 UR0 UL0 DL0 DR0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFL0 DBR0 UFL0 UBR0 DFR0 DBL0
diff --git a/test/04_compose/11_U_solved.out b/test/04_compose/11_U_solved.out
new file mode 100644
index 0000000..b5b36ad
--- /dev/null
+++ b/test/04_compose/11_U_solved.out
@@ -0,0 +1 @@
UR0 UL0 DB0 DF0 UB0 UF0 DL0 DR0 FR0 FL0 BL0 BR0 UBR0 UFL0 DFL0 DBR0 UFR0 UBL0 DFR0 DBL0
diff --git a/test/04_compose/12_scrambled_solved.in b/test/04_compose/12_scrambled_solved.in
new file mode 100644
index 0000000..3efd52c
--- /dev/null
+++ b/test/04_compose/12_scrambled_solved.in
@@ -0,0 +1,2 @@
1DR0 DB0 BL0 DF1 UB0 UR1 FR1 UF0 FL1 DL0 BR1 UL1 DBL2 DFL0 UBR1 DFR2 UFR0 DBR1 UBL0 UFL0
2UF0 UB0 DB0 DF0 UR0 UL0 DL0 DR0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFL0 DBR0 UFL0 UBR0 DFR0 DBL0
diff --git a/test/04_compose/12_scrambled_solved.out b/test/04_compose/12_scrambled_solved.out
new file mode 100644
index 0000000..263213b
--- /dev/null
+++ b/test/04_compose/12_scrambled_solved.out
@@ -0,0 +1 @@
DR0 DB0 BL0 DF1 UB0 UR1 FR1 UF0 FL1 DL0 BR1 UL1 DBL2 DFL0 UBR1 DFR2 UFR0 DBR1 UBL0 UFL0
diff --git a/test/04_compose/20_U_U.in b/test/04_compose/20_U_U.in
new file mode 100644
index 0000000..2778e82
--- /dev/null
+++ b/test/04_compose/20_U_U.in
@@ -0,0 +1,2 @@
1UR0 UL0 DB0 DF0 UB0 UF0 DL0 DR0 FR0 FL0 BL0 BR0 UBR0 UFL0 DFL0 DBR0 UFR0 UBL0 DFR0 DBL0
2UR0 UL0 DB0 DF0 UB0 UF0 DL0 DR0 FR0 FL0 BL0 BR0 UBR0 UFL0 DFL0 DBR0 UFR0 UBL0 DFR0 DBL0
diff --git a/test/04_compose/20_U_U.out b/test/04_compose/20_U_U.out
new file mode 100644
index 0000000..316ad57
--- /dev/null
+++ b/test/04_compose/20_U_U.out
@@ -0,0 +1 @@
UB0 UF0 DB0 DF0 UL0 UR0 DL0 DR0 FR0 FL0 BL0 BR0 UBL0 UFR0 DFL0 DBR0 UBR0 UFL0 DFR0 DBL0
diff --git a/test/04_compose/21_U_Uinverse.in b/test/04_compose/21_U_Uinverse.in
new file mode 100644
index 0000000..495220e
--- /dev/null
+++ b/test/04_compose/21_U_Uinverse.in
@@ -0,0 +1,2 @@
1UR0 UL0 DB0 DF0 UB0 UF0 DL0 DR0 FR0 FL0 BL0 BR0 UBR0 UFL0 DFL0 DBR0 UFR0 UBL0 DFR0 DBL0
2UL0 UR0 DB0 DF0 UF0 UB0 DL0 DR0 FR0 FL0 BL0 BR0 UFL0 UBR0 DFL0 DBR0 UBL0 UFR0 DFR0 DBL0
diff --git a/test/04_compose/21_U_Uinverse.out b/test/04_compose/21_U_Uinverse.out
new file mode 100644
index 0000000..dff224d
--- /dev/null
+++ b/test/04_compose/21_U_Uinverse.out
@@ -0,0 +1 @@
UF0 UB0 DB0 DF0 UR0 UL0 DL0 DR0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFL0 DBR0 UFL0 UBR0 DFR0 DBL0
diff --git a/test/04_compose/22_F_Finverse.in b/test/04_compose/22_F_Finverse.in
new file mode 100644
index 0000000..4a2f1e6
--- /dev/null
+++ b/test/04_compose/22_F_Finverse.in
@@ -0,0 +1,2 @@
1FL1 UB0 DB0 FR1 UR0 UL0 DL0 DR0 UF1 DF1 BL0 BR0 UFL1 UBL0 DFR1 DBR0 DFL2 UBR0 UFR2 DBL0
2FR1 UB0 DB0 FL1 UR0 UL0 DL0 DR0 DF1 UF1 BL0 BR0 DFR1 UBL0 UFL1 DBR0 UFR2 UBR0 DFL2 DBL0
diff --git a/test/04_compose/22_F_Finverse.out b/test/04_compose/22_F_Finverse.out
new file mode 100644
index 0000000..dff224d
--- /dev/null
+++ b/test/04_compose/22_F_Finverse.out
@@ -0,0 +1 @@
UF0 UB0 DB0 DF0 UR0 UL0 DL0 DR0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFL0 DBR0 UFL0 UBR0 DFR0 DBL0
diff --git a/test/04_compose/23_F2_F2.in b/test/04_compose/23_F2_F2.in
new file mode 100644
index 0000000..5fd1081
--- /dev/null
+++ b/test/04_compose/23_F2_F2.in
@@ -0,0 +1,2 @@
1DF0 UB0 DB0 UF0 UR0 UL0 DL0 DR0 FL0 FR0 BL0 BR0 DFL0 UBL0 UFR0 DBR0 DFR0 UBR0 UFL0 DBL0
2DF0 UB0 DB0 UF0 UR0 UL0 DL0 DR0 FL0 FR0 BL0 BR0 DFL0 UBL0 UFR0 DBR0 DFR0 UBR0 UFL0 DBL0
diff --git a/test/04_compose/23_F2_F2.out b/test/04_compose/23_F2_F2.out
new file mode 100644
index 0000000..dff224d
--- /dev/null
+++ b/test/04_compose/23_F2_F2.out
@@ -0,0 +1 @@
UF0 UB0 DB0 DF0 UR0 UL0 DL0 DR0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFL0 DBR0 UFL0 UBR0 DFR0 DBL0
diff --git a/test/04_compose/24_U_F.in b/test/04_compose/24_U_F.in
new file mode 100644
index 0000000..d353f95
--- /dev/null
+++ b/test/04_compose/24_U_F.in
@@ -0,0 +1,2 @@
1UR0 UL0 DB0 DF0 UB0 UF0 DL0 DR0 FR0 FL0 BL0 BR0 UBR0 UFL0 DFL0 DBR0 UFR0 UBL0 DFR0 DBL0
2FL1 UB0 DB0 FR1 UR0 UL0 DL0 DR0 UF1 DF1 BL0 BR0 UFL1 UBL0 DFR1 DBR0 DFL2 UBR0 UFR2 DBL0
diff --git a/test/04_compose/24_U_F.out b/test/04_compose/24_U_F.out
new file mode 100644
index 0000000..4fda397
--- /dev/null
+++ b/test/04_compose/24_U_F.out
@@ -0,0 +1 @@
FL1 UL0 DB0 FR1 UB0 UF0 DL0 DR0 UR1 DF1 BL0 BR0 UFR1 UFL0 DFR1 DBR0 DFL2 UBL0 UBR2 DBL0
diff --git a/test/04_compose/25_F_R.in b/test/04_compose/25_F_R.in
new file mode 100644
index 0000000..2cb5455
--- /dev/null
+++ b/test/04_compose/25_F_R.in
@@ -0,0 +1,2 @@
1FL1 UB0 DB0 FR1 UR0 UL0 DL0 DR0 UF1 DF1 BL0 BR0 UFL1 UBL0 DFR1 DBR0 DFL2 UBR0 UFR2 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/04_compose/25_F_R.out b/test/04_compose/25_F_R.out
new file mode 100644
index 0000000..2119f37
--- /dev/null
+++ b/test/04_compose/25_F_R.out
@@ -0,0 +1 @@
FL1 UB0 DB0 FR1 UF1 UL0 DL0 BR0 DR0 DF1 BL0 UR0 UFR1 UBL0 DFR1 UBR2 DFL2 UFL2 DBR1 DBL0
diff --git a/test/04_compose/30_scrambled_inverse.in b/test/04_compose/30_scrambled_inverse.in
new file mode 100644
index 0000000..abf72e2
--- /dev/null
+++ b/test/04_compose/30_scrambled_inverse.in
@@ -0,0 +1,4 @@
1UL0 BL0 BR1 DL0 FR0 DF0 DB1 DR1 UB0 FL0 UF0 UR1 DFL0 UFR1 DBR1 UBR2 DBL2 DFR0 UFL1 UBL2
2BL0 FR0 DL1 UL0 BR1 UF0 DF0 DR1 UR0 FL0 UB0 DB1 UBL2 DBL1 UFR0 DFL2 DFR2 DBR1 UBR0 UFL1
3
4// Scramble: U R D' L D' F L2 D L F B D2 B' L2 F U2 L2 D2 R2 L2 B'
diff --git a/test/04_compose/30_scrambled_inverse.out b/test/04_compose/30_scrambled_inverse.out
new file mode 100644
index 0000000..dff224d
--- /dev/null
+++ b/test/04_compose/30_scrambled_inverse.out
@@ -0,0 +1 @@
UF0 UB0 DB0 DF0 UR0 UL0 DL0 DR0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFL0 DBR0 UFL0 UBR0 DFR0 DBL0
diff --git a/test/04_compose/31_scrambled_scrambled.in b/test/04_compose/31_scrambled_scrambled.in
new file mode 100644
index 0000000..7fe874c
--- /dev/null
+++ b/test/04_compose/31_scrambled_scrambled.in
@@ -0,0 +1,4 @@
1UL0 BL0 BR1 DL0 FR0 DF0 DB1 DR1 UB0 FL0 UF0 UR1 DFL0 UFR1 DBR1 UBR2 DBL2 DFR0 UFL1 UBL2
2FL1 BR0 DB0 UR1 UF0 UB0 DL0 FR0 UL1 DF1 BL0 DR0 UBL1 DBR1 UFR2 DFR2 DFL2 UBR2 UFL2 DBL0
3// Scramble: U R D' L D' F L2 D L F B D2 B' L2 F U2 L2 D2 R2 L2 B'
4// Followed by R' U' F
diff --git a/test/04_compose/31_scrambled_scrambled.out b/test/04_compose/31_scrambled_scrambled.out
new file mode 100644
index 0000000..8fb1c13
--- /dev/null
+++ b/test/04_compose/31_scrambled_scrambled.out
@@ -0,0 +1 @@
FL1 UR2 BR1 FR1 UL0 BL0 DB1 UB0 DF1 DL1 UF0 DR1 UFR2 UBR0 DFL2 UFL0 DBR0 DFR2 DBL1 UBL2
diff --git a/test/04_compose/compose_tests.c b/test/04_compose/compose_tests.c
new file mode 100644
index 0000000..ae34f6d
--- /dev/null
+++ b/test/04_compose/compose_tests.c
@@ -0,0 +1,30 @@
1#include <stdbool.h>
2#include <stdint.h>
3#include <stdio.h>
4
5#include "../../src/cube.h"
6
7#define STRLENMAX 10000
8
9int main() {
10 char str[STRLENMAX];
11 cube_t c1, c2, c3;
12
13 fgets(str, STRLENMAX, stdin);
14 c1 = readcube(str);
15 fgets(str, STRLENMAX, stdin);
16 c2 = readcube(str);
17
18 c3 = compose(c1, c2);
19
20 if (iserror(c3)) {
21 printf("Error composing cubes\n");
22 } else if (!isconsistent(c3)) {
23 printf("Composed cube is inconsistent\n");
24 } else {
25 writecube(c3, str);
26 printf("%s\n", str);
27 }
28
29 return 0;
30}
diff --git a/test/last.err b/test/last.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/last.err
diff --git a/test/last.out b/test/last.out
new file mode 100644
index 0000000..16375f4
--- /dev/null
+++ b/test/last.out
@@ -0,0 +1 @@
Error composing cubes
diff --git a/test/run b/test/run
new file mode 100755
index 0000000..04c5bca
--- /dev/null
+++ b/test/run
Binary files differ
diff --git a/test/test.sh b/test/test.sh
index 75be809..fb932af 100755
--- a/test/test.sh
+++ b/test/test.sh
@@ -5,7 +5,7 @@ CC="cc -DDEBUG -std=c99 -pthread -pedantic -Wall -Wextra \
5if [ $(uname) != "OpenBSD" ]; then 5if [ $(uname) != "OpenBSD" ]; then
6 CC="$CC -fsanitize=address -fsanitize=undefined" 6 CC="$CC -fsanitize=address -fsanitize=undefined"
7fi 7fi
8SRC="src/array_cube.c" 8SRC="src/cube_array.c"
9TESTBIN="test/run" 9TESTBIN="test/run"
10TESTOUT="test/last.out" 10TESTOUT="test/last.out"
11TESTERR="test/last.err" 11TESTERR="test/last.err"

Generated with cgit - Back to sebastiano.tronto.net