rubiks.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #pragma one
  2. #include <stdio.h>
  3. typedef struct {
  4. char *file;
  5. int count;
  6. int nbMovment;
  7. } t_params;
  8. typedef struct {
  9. char grid[6][3][3];
  10. } t_rubiks;
  11. struct s_stackitem {
  12. struct s_stackitem *prev;
  13. int value;
  14. };
  15. typedef struct s_stack {
  16. struct s_stackitem *items;
  17. size_t count;
  18. } t_stack;
  19. /* params.c */
  20. void usage(char*);
  21. int parse_params(char **, t_params *, char *);
  22. /* generator.c */
  23. t_rubiks *doGenerate(t_params *);
  24. /* solver.c */
  25. t_stack *doSolve(char buffer[54], int nbMovment);
  26. /* std */
  27. void xfree(void *);
  28. /* rubiks_transform.c */
  29. void rubik_applyX(t_rubiks *, char[3]);
  30. void rubik_applyY(t_rubiks *, char[3]);
  31. void rubik_applyZ(t_rubiks *, char[3]);
  32. /* rubiks.c */
  33. t_rubiks *rubik_create(char [54]);
  34. t_rubiks *rubik_createempty();
  35. void rubik_applyVect(t_rubiks *, char [3]);
  36. void rubik_apply(t_rubiks *, char movment);
  37. void rubik_reverse(t_rubiks *, char movment);
  38. int rubik_isDone(const t_rubiks *);
  39. /* output.c */
  40. void spatial_show(t_rubiks *);
  41. void rubik_output(t_rubiks *, FILE *);
  42. /* tree.c */
  43. t_stack *stack_create();
  44. t_stack *stack_copy(const t_stack *);
  45. void stack_destroy(t_stack*);
  46. int stack_pop(t_stack *);
  47. int stack_value(const t_stack *);
  48. size_t stack_length(const t_stack *);
  49. void stack_push(t_stack *, int value);