output.c 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #include <string.h>
  2. #include <stdio.h>
  3. #include "rubiks.h"
  4. void rubik_output(t_rubiks *rub, FILE *f)
  5. {
  6. char out[55];
  7. memcpy(out, rub->grid, sizeof(rub->grid));
  8. out[54] = 0;
  9. fprintf(f, "%s", out);
  10. }
  11. void spatial_show(t_rubiks *rub)
  12. {
  13. printf(" +---+\n");
  14. printf(" |%c%c%c|\n", rub->grid[5][0][2], rub->grid[5][1][2], rub->grid[5][2][2]);
  15. printf(" |%c%c%c|\n", rub->grid[5][0][1], rub->grid[5][1][1], rub->grid[5][2][1]);
  16. printf(" |%c%c%c|\n", rub->grid[5][0][0], rub->grid[5][1][0], rub->grid[5][2][0]);
  17. printf(" +---+\n");
  18. printf(" |%c%c%c|\n", rub->grid[2][0][2], rub->grid[2][1][2], rub->grid[2][2][2]);
  19. printf(" |%c%c%c|\n", rub->grid[2][0][1], rub->grid[2][1][1], rub->grid[2][2][1]);
  20. printf(" |%c%c%c|\n", rub->grid[2][0][0], rub->grid[2][1][0], rub->grid[2][2][0]);
  21. printf("+---+---+---+\n");
  22. printf("|%c%c%c|%c%c%c|%c%c%c|\n",
  23. rub->grid[3][0][2], rub->grid[3][1][2], rub->grid[3][2][2],
  24. rub->grid[0][0][2], rub->grid[0][1][2], rub->grid[0][2][2],
  25. rub->grid[1][0][2], rub->grid[1][1][2], rub->grid[1][2][2]);
  26. printf("|%c%c%c|%c%c%c|%c%c%c|\n",
  27. rub->grid[3][0][1], rub->grid[3][1][1], rub->grid[3][2][1],
  28. rub->grid[0][0][1], rub->grid[0][1][1], rub->grid[0][2][1],
  29. rub->grid[1][0][1], rub->grid[1][1][1], rub->grid[1][2][1]);
  30. printf("|%c%c%c|%c%c%c|%c%c%c|\n",
  31. rub->grid[3][0][1], rub->grid[3][1][0], rub->grid[3][2][0],
  32. rub->grid[0][0][1], rub->grid[0][1][0], rub->grid[0][2][0],
  33. rub->grid[1][0][1], rub->grid[1][1][0], rub->grid[1][2][0]);
  34. printf("+---+---+---+\n");
  35. printf(" |%c%c%c|\n", rub->grid[4][0][2], rub->grid[4][1][2], rub->grid[4][2][2]);
  36. printf(" |%c%c%c|\n", rub->grid[4][0][1], rub->grid[4][1][1], rub->grid[4][2][1]);
  37. printf(" |%c%c%c|\n", rub->grid[4][0][0], rub->grid[4][1][0], rub->grid[4][2][0]);
  38. printf("+---+---+---+\n");
  39. }
  40. static void doSolutionOutput(struct s_stackitem *s, FILE *out, size_t down)
  41. {
  42. if (--down)
  43. doSolutionOutput(s->prev, out, down);
  44. fprintf(out, "%c", (int) s->value);
  45. }
  46. void solution_output(t_stack *s, FILE *out)
  47. {
  48. fprintf(out, ".");
  49. doSolutionOutput(s->items, out, stack_length(s));
  50. }