From 3568412f8f230774d0d11d7ed1c897424f95d3ef Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Thu, 11 Nov 2021 21:37:34 +0100 Subject: Rewritten from scratch. Welocme nissy 2.0! --- old/2021-06-17-cachedata/cube.h | 79 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 old/2021-06-17-cachedata/cube.h (limited to 'old/2021-06-17-cachedata/cube.h') diff --git a/old/2021-06-17-cachedata/cube.h b/old/2021-06-17-cachedata/cube.h new file mode 100644 index 0000000..d233165 --- /dev/null +++ b/old/2021-06-17-cachedata/cube.h @@ -0,0 +1,79 @@ +#ifndef CUBE_H +#define CUBE_H + +#include +#include +#include +#include +#include +#include +#include +#include + +/* Constants and macros *****************************************************/ + +#define POW2TO11 2048ULL +#define POW2TO12 4096ULL +#define POW3TO7 2187ULL +#define POW3TO8 6561ULL +#define FACTORIAL4 24ULL +#define FACTORIAL6 720ULL +#define FACTORIAL8 40320ULL +#define FACTORIAL12 479001600ULL +#define BINOM12ON4 495ULL +#define BINOM8ON4 70ULL +#define MIN(a,b) (((a) < (b)) ? (a) : (b)) +#define MAX(a,b) (((a) > (b)) ? (a) : (b)) + +#define NMOVES (z3+1) +#define NTRANS (mirror+1) +#define NROTATIONS (NTRANS-1) +#define PTABLESIZE(n) ((n+1) / 2) +#define PTABLEVAL(t,i) (((i)%2) ? (t[(i)/2] / 16) : (t[(i)/2] % 16)) + +/* Type definitions **********************************************************/ + +#include "cubetypes.h" + +/* Public functions **********************************************************/ + +Cube apply_alg(Alg *alg, Cube cube); +Cube apply_move(Move m, Cube cube); +Cube apply_trans(Trans t, Cube cube); +bool block_solved(Cube cube, Block); +Center center_at(Cube cube, Center c); +Cube compose(Cube c2, Cube c1); /* Use c2 as an alg on c1 */ +Corner corner_at(Cube cube, Corner c); +Edge edge_at(Cube cube, Edge e); +uint64_t epos_dependent_cube(Cube cube); +bool equal(Cube c1, Cube c2); +Cube inverse_cube(Cube cube); +Move inverse_move(Move m); +Trans inverse_trans(Trans t); +bool is_admissible(Cube cube); +bool is_solved(Cube cube, bool reorient); +int piece_orientation(Cube cube, int piece, char *orientation); +void print_cube(Cube cube); +Cube random_cube(); +AlgList * solve(Cube cube, Step step, SolveOptions *opts); + +Move base_move(Move m); +void free_alg(Alg *alg); +void free_alglist(AlgList *l); +Alg * inverse_alg(Alg *alg); +Alg * new_alg(char *str); +Alg * on_inverse(Alg *alg); +void print_alg(Alg *alg, bool l); +void print_alglist(AlgList *al, bool l); +Alg * trans_alg(Trans i); +void transform_alg(Trans t, Alg *alg); + +void generate_ctable(CacheData *cd); +void generate_ptable(PruneData *pd); +void print_cachedata(CacheData *cd, bool printalgs); +void print_ptable(PruneData *pd); + +void init(); + +#endif + -- cgit v1.3