These are my solutions to Day 2 of the advent of code 2022. Today’s puzzle involved working out the score from a game of rock-paper-scissors by parsing a large text document, and then developed into a slightly more complicated variation in the second part. I solved the problem today using C.

#include<stdio.h>

int main(){
  // First let's open the file.
  FILE *fp;
  char moves[6];
  long int grand_total;
  grand_total = 0;
  fp = fopen("input", "r");

  while(fgets(moves, 6, fp) != NULL){
    char my_move;
    char their_move;
    
    int my_score;
    int their_score;

    my_score = 0;
    their_score = 0;
    
    my_move= moves[2];
    their_move = moves[0];
    printf("%c", my_move);
    switch(my_move){
    case 'X':
      my_score = 1;
      break;
    case 'Y':
      my_score = 2;
      break;
    case 'Z':
      my_score = 3;
      break;
    }
    printf("%i", my_score);
    printf("%c", their_move);
    switch(their_move){
    case 'A':
      their_score = 1;
      break;
    case 'B':
      their_score = 2;
      break;
    case 'C':
      their_score = 3;
      break;
    }

    if ((my_score - their_score > 0) & (my_score - their_score < 2)) {
      my_score += 6;
    }
    else if (my_score - their_score == -2){
      my_score += 6;
    }
    else if (my_score == their_score) {
      my_score += 3;
    }
    else {
      // They won
    }
    
    printf("%u\n", my_score);
    grand_total += my_score;
  }


  
  fclose(fp);
  printf("Grand total %ld", grand_total);
  return 0;
}
#include<stdio.h>

int main(){
  // First let's open the file.
  FILE *fp;
  char moves[6];
  long int grand_total;
  grand_total = 0;
  fp = fopen("input", "r");

  while(fgets(moves, 6, fp) != NULL){
    char my_move;
    char their_move;
    
    int my_score;
    int their_score;

    my_score = 0;
    their_score = 0;
    
    my_move= moves[2];
    their_move = moves[0];

    printf("%c", their_move);
    switch(their_move){
    case 'A':
      their_score = 1;
      break;
    case 'B':
      their_score = 2;
      break;
    case 'C':
      their_score = 3;
      break;
    }
    
    printf("%c", my_move);
    switch(my_move){
    case 'X':
      my_score = ((their_score - 1));
      break;
    case 'Y':
      my_score = their_score;
      break;
    case 'Z':
      my_score = (their_score + 1);
      break;
    }
    if (my_score == 0){
	my_score = 3;
    }
    else if (my_score == 4){
      my_score = 1;
    }
    switch(my_move){
    case 'X':
      break;
    case 'Y':
      my_score += 3;
      break;
    case 'Z':
      my_score += 6;
      break;
    }
    printf("%i\n", my_score);
    grand_total += my_score;
  }


  
  fclose(fp);
  printf("Grand total %ld", grand_total);
  return 0;
}
  
Share Share Share