aboutsummaryrefslogtreecommitdiff
path: root/old/2021-02-18-piecefilter/src/cube.h
diff options
context:
space:
mode:
Diffstat (limited to 'old/2021-02-18-piecefilter/src/cube.h')
-rw-r--r--old/2021-02-18-piecefilter/src/cube.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/old/2021-02-18-piecefilter/src/cube.h b/old/2021-02-18-piecefilter/src/cube.h
new file mode 100644
index 0000000..9b64a0c
--- /dev/null
+++ b/old/2021-02-18-piecefilter/src/cube.h
@@ -0,0 +1,45 @@
1#ifndef CUBE_H
2#define CUBE_H
3
4#include <stdio.h>
5#include <stdbool.h>
6#include <stdint.h>
7#include "utils.h"
8
9typedef enum {U_center,D_center,R_center,L_center,F_center,B_center} Center;
10typedef enum { UF, UL, UB, UR, DF, DL, DB, DR, FR, FL, BL, BR } Edge;
11typedef enum { UFR, UFL, UBL, UBR, DFR, DFL, DBL, DBR } Corner;
12
13typedef struct {
14 bool epose, eposs, eposm, eofb, eorl, eoud, cp, coud, cofb, corl, cpos;
15} PieceFilter;
16
17typedef struct {
18 uint16_t eofb, eorl, eoud, coud, cofb, corl,
19 epose, eposs, eposm, cp, cpos;
20} Cube;
21
22typedef struct {
23 int ep[12], eofb[12], eorl[12], eoud[12],
24 cp[8], coud[8], corl[8], cofb[8], cpos[6];
25} CubeArray;
26
27
28extern PieceFilter fAll;
29
30Cube blank_cube();
31/* Return axis (ud=0, rl=1, fb=0) of center c */
32int center_axis(int c);
33/* Return slice (e=0, s=1, m=2) to which e belongs */
34int edge_slice(int e);
35void cube_to_arrays(Cube cube, CubeArray *arr, PieceFilter f);
36Cube arrays_to_cube(CubeArray arr, PieceFilter f);
37bool equal(Cube c1, Cube c2);
38bool is_solvable(Cube cube);
39bool is_solved(Cube cube);
40void print_cube(Cube cube);
41Cube inverse_cube(Cube cube);
42/* Use c2 as an alg on c1 */
43Cube compose_via_arrays(CubeArray c2, Cube c1, PieceFilter f);
44
45#endif

Generated with cgit - Back to sebastiano.tronto.net