diff --git a/puzzle.h b/puzzle.h new file mode 100644 index 0000000000000000000000000000000000000000..ebd3004a87177edbc066395ccc5bd8c7298d0f43 --- /dev/null +++ b/puzzle.h @@ -0,0 +1,43 @@ +#ifndef PUZZLE_H +#define PUZZLE_H// PUZZLE_H + +#include +#include + +#define GRID_ROWS 8 +#define GRID_COLS 8 +#define BIT(row, col) (1ULL << ((row) * 8 + (col))) + +/* --- PIECES --- */ +#define PIECE_1 (BIT(0,0) | BIT(0,1) | BIT(0,2) | BIT(1,1) | BIT(2,1)) +#define PIECE_2 (BIT(0,1) | BIT(0,2) | BIT(1,0) | BIT(1,1)) +#define PIECE_3 (BIT(0,1) | BIT(0,2) | BIT(1,0) | BIT(1,1) | BIT(1,2)) +#define PIECE_4 (BIT(0,0) | BIT(0,1) | BIT(0,2) | BIT(1,0) | BIT(2,0)) +#define PIECE_5 (BIT(0,0) | BIT(0,1) | BIT(1,0) | BIT(2,0) | BIT(2,1)) +#define PIECE_6 (BIT(0,0) | BIT(1,0) | BIT(2,0) | BIT(3,0) | BIT(3,1)) +#define PIECE_7 (BIT(0,0) | BIT(1,0) | BIT(2,0) | BIT(2,1)) +#define PIECE_8 (BIT(0,0) | BIT(0,1) | BIT(1,1) | BIT(2,1) | BIT(2,2)) +#define PIECE_9 (BIT(0,0) | BIT(0,1) | BIT(1,1) | BIT(1,2) | BIT(1,3)) +#define PIECE_10 (BIT(0,0) | BIT(0,1) | BIT(0,2) | BIT(0,3)) + +typedef struct { + int largeur; + int hauteur; +} Dimensions; + +typedef struct { + uint64_t plateau_de_depart; + uint64_t* catalogue; + int id_piece_depart; +} ThreadArgs; + +/* --- Prototypes des fonctions --- */ +uint64_t genererGrilleDeJeu(void); +Dimensions calculer_dimensions(uint64_t piece); +uint64_t normaliser(uint64_t piece); +uint64_t rotation_90(uint64_t piece); +uint64_t miroir_horizontal(uint64_t piece); +bool trouverPremiereCaseVide(uint64_t plateau, int *r, int *c); +void placeAutoPiecerec(uint64_t plateau, uint64_t* catalogue, uint16_t pieces_utilisees, int* nb_solutions, int piece_forcee); + +#endif