aboutsummaryrefslogtreecommitdiff
path: root/old/2021-05-26-before-restyle/cube.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--old/2021-05-26-before-restyle/cube.h65
1 files changed, 0 insertions, 65 deletions
diff --git a/old/2021-05-26-before-restyle/cube.h b/old/2021-05-26-before-restyle/cube.h
deleted file mode 100644
index 0c9fc7b..0000000
--- a/old/2021-05-26-before-restyle/cube.h
+++ /dev/null
@@ -1,65 +0,0 @@
1#ifndef CUBE_H
2#define CUBE_H
3
4#include <stdio.h>
5#include <stdbool.h>
6#include <stdint.h>
7#include <string.h>
8#include "utils.h"
9
10typedef enum {U_center,D_center,R_center,L_center,F_center,B_center} Center;
11typedef enum { UF, UL, UB, UR, DF, DL, DB, DR, FR, FL, BL, BR } Edge;
12typedef enum { UFR, UFL, UBL, UBR, DFR, DFL, DBL, DBR } Corner;
13
14typedef struct {
15 uint16_t eofb, eorl, eoud, coud, cofb, corl,
16 epose, eposs, eposm, cp, cpos;
17} Cube;
18
19typedef struct {
20 bool edge[12], corner[8], center[6];
21} Block;
22
23typedef struct {
24 bool epose, eposs, eposm, eofb, eorl, eoud, cp, coud, cofb, corl, cpos;
25} PieceFilter;
26
27typedef struct {
28 int *ep, *eofb, *eorl, *eoud, *cp, *coud, *corl, *cofb, *cpos;
29} CubeArray;
30
31extern PieceFilter pf_all, pf_cpos, pf_ep, pf_cp,
32 pf_e, pf_s, pf_m, pf_eo, pf_co;
33
34void cube_to_arrays(Cube cube, CubeArray *arr, PieceFilter f);
35Cube arrays_to_cube(CubeArray arr, PieceFilter f);
36
37/* piece can be edge or corner and orientation is any of the following:
38 "eofb", "eorl", "eoud", "coud", "corl", "cofb"
39 Return either 0 (oriented) or 1 for edges and 0, 1 or 2 for corners */
40int piece_orientation(Cube cube, int piece, char *orientation);
41Center center_at(Cube cube, Center c);
42Edge edge_at(Cube cube, Edge e);
43Corner corner_at(Cube cube, Corner c);
44bool block_solved(Cube cube, Block);
45/* Aggiungi funzioni per "queries" sul cubo: se pezzo è orientato rispetto ad
46 un certo asse, se il pezzo è risolto... */
47/* Would be nice: a funciton block_solved(Cube c, Block b), where Block is
48 something like struct {bool centers[6], edges[12], corners[8]}
49 (The advantage over checking pieces one by one is that I can convert
50 to cubearray only once and for all) */
51/* Altro TODO, ma forse non ne vale la pena: pre-calcolare tutti i possibili
52 valori per questi, e salvare i risultati in array (facile per cp e cpos,
53 mentre per ep bisogna anche cercare quale tra epose, eposs e eposm contiene
54 il valore giusto) */
55
56bool equal(Cube c1, Cube c2);
57bool is_solved(Cube cube);
58void print_cube(Cube cube);
59Cube admissible_ep(Cube cube, PieceFilter f); /* Returns admissible ep */
60Cube inverse_cube(Cube cube);
61Cube compose(Cube c2, Cube c1); /* Use c2 as an alg on c1 */
62Cube compose_filtered(Cube c2, Cube c1, PieceFilter f);
63Cube move_via_arrays(CubeArray arr, Cube c, PieceFilter pf);
64
65#endif

Generated with cgit - Back to sebastiano.tronto.net