Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- typedef struct {
- int position[2];
- char character_direction;
- } character_t;
- char * sanitize_input(char string[]);
- character_t * get_new_position(char * string, character_t *character);
- int main() {
- character_t *character = (character_t*)malloc(sizeof(character_t));
- character->position[0] = 0;
- character->position[1] = 0;
- character->character_direction = 'N';
- FILE* f = fopen("input.txt", "r");
- while(!feof(f)) {
- char input[10];
- fscanf(f, "%s", input);
- char * string = sanitize_input(input);
- get_new_position(string, character);
- }
- printf("Position: [%i, %i]\n", character->position[0], character->position[1]);
- printf("Blocks away: %i\n", abs(character->position[0]) + abs(character->position[1]));
- return 0;
- }
- char * sanitize_input(char string[]) {
- for(int i = 0; i < strlen(string); i++) {
- if(string[i] == ',' || string[i] == ' ') {
- string[i] = '\0';
- }
- }
- return string;
- }
- character_t * get_new_position(char * string, character_t *character) {
- int * character_position = character->position;
- char character_direction = character->character_direction;
- char new_direction;
- int steps;
- sscanf(string, "%c%i", &new_direction, &steps);
- if(character_direction == 'N') {
- if(new_direction == 'R') {
- character_direction = 'E';
- character_position[0] += steps;
- } else if(new_direction == 'L') {
- character_direction = 'W';
- character_position[0] -= steps;
- }
- } else if(character_direction == 'W') {
- if(new_direction == 'R') {
- character_direction = 'N';
- character_position[1] += steps;
- } else if(new_direction == 'L') {
- character_direction = 'S';
- character_position[1] -= steps;
- }
- } else if(character_direction == 'S') {
- if(new_direction == 'R') {
- character_direction = 'W';
- character_position[0] -= steps;
- } else if(new_direction == 'L') {
- character_direction = 'E';
- character_position[0] += steps;
- }
- } else if(character_direction == 'E') {
- if(new_direction == 'R') {
- character_direction = 'S';
- character_position[1] -= steps;
- } else if(new_direction == 'L') {
- character_direction = 'N';
- character_position[1] += steps;
- }
- }
- character->character_direction = character_direction;
- character->position[0] = character_position[0];
- character->position[1] = character_position[1];
- return character;
- }
Advertisement
Add Comment
Please, Sign In to add comment