#include #include #include "rubiks.h" void rubik_output(t_rubiks *rub, FILE *f) { char out[55]; memcpy(out, rub->grid, sizeof(rub->grid)); out[54] = 0; fprintf(f, "%s", out); } void spatial_show(t_rubiks *rub) { printf(" +---+\n"); printf(" |%c%c%c|\n", rub->grid[5][0][2], rub->grid[5][1][2], rub->grid[5][2][2]); printf(" |%c%c%c|\n", rub->grid[5][0][1], rub->grid[5][1][1], rub->grid[5][2][1]); printf(" |%c%c%c|\n", rub->grid[5][0][0], rub->grid[5][1][0], rub->grid[5][2][0]); printf(" +---+\n"); printf(" |%c%c%c|\n", rub->grid[2][0][2], rub->grid[2][1][2], rub->grid[2][2][2]); printf(" |%c%c%c|\n", rub->grid[2][0][1], rub->grid[2][1][1], rub->grid[2][2][1]); printf(" |%c%c%c|\n", rub->grid[2][0][0], rub->grid[2][1][0], rub->grid[2][2][0]); printf("+---+---+---+\n"); printf("|%c%c%c|%c%c%c|%c%c%c|\n", rub->grid[3][0][2], rub->grid[3][1][2], rub->grid[3][2][2], rub->grid[0][0][2], rub->grid[0][1][2], rub->grid[0][2][2], rub->grid[1][0][2], rub->grid[1][1][2], rub->grid[1][2][2]); printf("|%c%c%c|%c%c%c|%c%c%c|\n", rub->grid[3][0][1], rub->grid[3][1][1], rub->grid[3][2][1], rub->grid[0][0][1], rub->grid[0][1][1], rub->grid[0][2][1], rub->grid[1][0][1], rub->grid[1][1][1], rub->grid[1][2][1]); printf("|%c%c%c|%c%c%c|%c%c%c|\n", rub->grid[3][0][1], rub->grid[3][1][0], rub->grid[3][2][0], rub->grid[0][0][1], rub->grid[0][1][0], rub->grid[0][2][0], rub->grid[1][0][1], rub->grid[1][1][0], rub->grid[1][2][0]); printf("+---+---+---+\n"); printf(" |%c%c%c|\n", rub->grid[4][0][2], rub->grid[4][1][2], rub->grid[4][2][2]); printf(" |%c%c%c|\n", rub->grid[4][0][1], rub->grid[4][1][1], rub->grid[4][2][1]); printf(" |%c%c%c|\n", rub->grid[4][0][0], rub->grid[4][1][0], rub->grid[4][2][0]); printf("+---+---+---+\n"); } static void doSolutionOutput(struct s_stackitem *s, FILE *out, size_t down) { if (--down) doSolutionOutput(s->prev, out, down); fprintf(out, "%c", (int) s->value); } void solution_output(t_stack *s, FILE *out) { fprintf(out, "."); doSolutionOutput(s->items, out, stack_length(s)); }