#include "maze.h" #include #include #include /** * @brief Checks if pointer points inside the memory specified by upper and lower * bound. * @param first Start of the allocated memory. * @param last First address that is not included in the allocated memory. * @param pos Pointer to memory. * @returns true if pos points to the memory [first, last), * false otherwise. */ static bool within_bounds(const char *first, const char *last, const char *pos) { /* TODO */ } /** * @brief Sets 2D coordinates of the pointer. * @param map Start of the 2D memory. * @param position Pointer to the map. * @param width Width of one row of the map. * @param row Output variable where the row is set. * @param col Output variable where the column is set. */ static void set_coordinates(const char *map, char *position, size_t width, size_t *row, size_t *col) { /* TODO */ } /** * @brief Checks if indices are within bounds of the 2D map. * @param width Width of the map. * @param height Height of the map. * @param row Row to be checked. * @param col Column to be checked. * @returns true if row,col are within bounds of the map,.false * otherwise. */ static bool within_bounds_by_index(size_t width, size_t height, size_t row, size_t col) { /* TODO */ } void print_maze(const char *map, char *position, char direction, size_t width, size_t height) { printf("Maze:\n"); for (size_t row = 0; row < height; row++) { for (size_t col = 0; col < width; col++) { const char *current = &map[row * width + col]; if (current == position) { switch (direction) { case '^': putchar('N'); break; case 'v': putchar('S'); break; case '>': putchar('E'); break; case '<': putchar('W'); break; } continue; } putchar(*current); } putchar('\n'); } putchar('\n'); } enum end_state_t walk(const char *map, char *position, char direction, size_t width, size_t height) { /* TODO */ return NONE; }