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;
}