aboutsummaryrefslogtreecommitdiff
path: root/src/alg.h
blob: 51e66b0d91d20dd0ad98cdb4a82db2153e3438cf (plain)
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#ifndef ALG_H
#define ALG_H

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "cubetypes.h"
#include "utils.h"

bool        allowed_all(Move m);
bool        allowed_HTM(Move m);
bool        allowed_URF(Move m);
bool        allowed_eofb(Move m);
bool        allowed_drud(Move m);
bool        allowed_htr(Move m);
bool        allowed_next_all(Move l2, Move l1, Move m);
void        append_alg(AlgList *l, Alg *alg);
void        append_move(Alg *alg, Move m, bool inverse);
Move        base_move(Move m);
void        compose_alg(Alg *alg1, Alg *alg2);
bool        commute(Move m1, Move m2);
void        copy_alg(Alg *src, Alg *dst);
void        free_alg(Alg *alg);
void        free_alglist(AlgList *l);
void        inplace(Alg * (*f)(Alg *), Alg *alg);
Alg *       inverse_alg(Alg *alg);
Move        inverse_move(Move m);
char *      move_string(Move m);
void        movelist_to_position(Move *ml, int *pos);
void        moveset_to_list(Moveset ms, Move *lst);
Alg *       new_alg(char *str);
AlgList *   new_alglist();
Alg *       on_inverse(Alg *alg);
void        print_alg(Alg *alg, bool l);
void        print_alglist(AlgList *al, bool l);
void        swapmove(Move *m1, Move *m2);
char *      trans_string(Trans t); /* Here because similar to move_string, move? */
Alg *       unniss(Alg *alg);

void        init_moveset(Moveset *ms);

/* Movesets ******************************************************************/

#ifndef ALG_C

extern Moveset moveset_HTM;
extern Moveset moveset_URF;
extern Moveset moveset_eofb;
extern Moveset moveset_drud;
extern Moveset moveset_htr;

extern Moveset * all_ms[];

#else

Moveset
moveset_HTM = {
	.name         = "HTM",
	.allowed      = allowed_HTM,
	.allowed_next = allowed_next_all,
};

Moveset
moveset_URF = {
	.name         = "URF",
	.allowed      = allowed_URF,
	.allowed_next = allowed_next_all,
};

Moveset
moveset_eofb = {
	.name         = "eofb",
	.allowed      = allowed_eofb,
	.allowed_next = allowed_next_all,
};

Moveset
moveset_drud = {
	.name         = "drud",
	.allowed      = allowed_drud,
	.allowed_next = allowed_next_all,
};

Moveset
moveset_htr = {
	.name         = "htr",
	.allowed      = allowed_htr,
	.allowed_next = allowed_next_all,
};

Moveset *
all_ms[] = {
	&moveset_HTM,
	&moveset_URF,
	&moveset_eofb,
	&moveset_drud,
	&moveset_htr,
	NULL
};

#endif

#endif

Generated with cgit - Back to sebastiano.tronto.net