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
|
#ifndef CUBE_H
#define CUBE_H
#include <stdio.h>
#include "env.h"
#include "pf.h"
#include "utils.h"
Cube admissible_ep(Cube cube, PieceFilter f);
int array_ep_to_epos(int *ep, int *eps_solved);
Cube arrays_to_cube(CubeArray *arr, PieceFilter f);
Cube compose(Cube c2, Cube c1); /* Use c2 as an alg on c1 */
Cube compose_filtered(Cube c2, Cube c1, PieceFilter f);
void cube_to_arrays(Cube cube, CubeArray *arr, PieceFilter f);
int edge_slice(Edge e); /* E=0, S=1, M=2 */
bool equal(Cube c1, Cube c2);
Cube inverse_cube(Cube cube);
bool is_admissible(Cube cube);
bool is_solved(Cube cube);
bool is_block_solved(Cube cube, Block);
bool is_solved_center(Cube cube, Center c);
bool is_solved_corner(Cube cube, Corner c);
bool is_solved_edge(Cube cube, Edge e);
void epos_to_partial_ep(int epos, int *ep, int *ss);
Cube fourval_to_cube(int eofb, int ep, int coud, int cp);
void free_cubearray(CubeArray *arr, PieceFilter f);
Cube move_via_arrays(CubeArray *arr, Cube c, PieceFilter pf);
CubeArray * new_cubearray(Cube cube, PieceFilter f);
void print_cube(Cube cube);
Center what_center_at(Cube cube, Center c);
Corner what_corner_at(Cube cube, Corner c);
Edge what_edge_at(Cube cube, Edge e);
int what_orientation_corner(int co, Corner c);
int what_orientation_edge(int eo, Edge e);
Center where_is_center(Cube cube, Center c);
Corner where_is_corner(Cube cube, Corner c);
Edge where_is_edge(Cube cube, Edge e);
void init_cube();
#endif
|