Day 2 - C
This commit is contained in:
parent
fe0e9a576c
commit
846a6326f8
@ -4,7 +4,8 @@
|
|||||||
|
|
||||||
- [x] BASH
|
- [x] BASH
|
||||||
- [Day 0](./day-0)
|
- [Day 0](./day-0)
|
||||||
- [] C
|
- [x] C
|
||||||
|
- [Day 1](./day-1)
|
||||||
- [] Clojure
|
- [] Clojure
|
||||||
- [] Common LISP
|
- [] Common LISP
|
||||||
- [] C++
|
- [] C++
|
||||||
|
74
day-01/sol.c
Normal file
74
day-01/sol.c
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#define MAX(a, b) ((a) > (b) ? (a) : (b))
|
||||||
|
#define MIN(a, b) ((a) < (b) ? (a) : (b))
|
||||||
|
|
||||||
|
/*
|
||||||
|
USAGE: ./sol <inputfile>
|
||||||
|
*/
|
||||||
|
|
||||||
|
int get_my_score(char elf, char me)
|
||||||
|
{
|
||||||
|
int elf_choice = (int)(elf - 'A') + 1;
|
||||||
|
int my_choice = (int)(me - 'X') + 1;
|
||||||
|
int i_won = 0;
|
||||||
|
if (elf_choice == my_choice)
|
||||||
|
return my_choice + 3;
|
||||||
|
|
||||||
|
switch (elf_choice + my_choice)
|
||||||
|
{
|
||||||
|
case 3:
|
||||||
|
i_won = (elf_choice == 1);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
i_won = (elf_choice == 3);
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
i_won = (elf_choice == 2);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return my_choice + i_won * 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
const int wins[3] = {2, 3, 1};
|
||||||
|
const int loss[3] = {3, 1, 2};
|
||||||
|
|
||||||
|
int get_my_score_2(char elf, char me)
|
||||||
|
{
|
||||||
|
int elf_choice = (int)(elf - 'A') + 1;
|
||||||
|
int outcome = (int)(me - 'X') + 1;
|
||||||
|
|
||||||
|
if (outcome == 2)
|
||||||
|
return elf_choice + 3;
|
||||||
|
|
||||||
|
if (outcome == 1)
|
||||||
|
return loss[elf_choice - 1];
|
||||||
|
return 6 + wins[elf_choice - 1];
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
char *fileName = argv[1];
|
||||||
|
|
||||||
|
FILE *file = fopen(fileName, "r");
|
||||||
|
char line[256];
|
||||||
|
char elf, me;
|
||||||
|
|
||||||
|
int score1 = 0;
|
||||||
|
int score2 = 0;
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
int i = fscanf(file, "%c %c\n", &elf, &me);
|
||||||
|
if (i == EOF)
|
||||||
|
break;
|
||||||
|
score1 += get_my_score(elf, me);
|
||||||
|
score2 += get_my_score_2(elf, me);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("Score one: %d\n", score1);
|
||||||
|
printf("Score two: %d\n", score2);
|
||||||
|
|
||||||
|
fclose(file);
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user