diff --git a/day2/input.txt b/day2/input.txt new file mode 100644 index 0000000..b955ddb --- /dev/null +++ b/day2/input.txt @@ -0,0 +1,2500 @@ +A Z +A Z +A Z +B Z +C X +A Z +A Z +C Y +A Z +A Y +B Y +A Z +C X +A Z +A Z +A Z +A Z +A Y +A Z +A Z +C Y +C X +C X +C X +A Z +A Z +B Y +A Z +A Z +C Z +B Z +A Y +A Z +B Y +A Z +B Y +A X +B Z +A Z +A Z +A Z +C X +C X +A X +A Z +A Z +C X +A Z +B Y +A Z +B Z +A Z +A Z +B Z +B Z +C Y +B Z +A X +B Z +A Z +B Y +A Z +B Z +C X +A Z +B Y +B Z +A Z +B Y +C X +B Y +A Z +A Z +A Z +B Y +A Z +A Z +B Y +B Z +C Z +A X +A Z +A Z +C Z +C X +A Z +C X +A Z +A X +A Z +A Z +A Z +B X +B Y +A Z +A Z +A Z +C Y +B Y +C X +C X +A Z +A Z +A Z +A X +C X +B Z +C X +C X +A Z +A Z +A Z +A Z +B Z +A Y +A Y +C X +A Y +C X +B Y +A Z +C Z +A Z +B Y +A Z +C X +B X +A Y +C X +A Z +A Z +A Y +B Z +C X +C X +C X +B Y +A Z +A Z +B Y +A Z +B Z +C X +C Z +A Z +C X +B Z +A Z +B Y +C X +A Y +B Y +C X +C X +A Z +A Y +A Z +A Z +A Z +A Y +C X +A Z +A Z +B Z +A Z +B Z +A Z +C Z +C Z +A Z +A Z +B Z +A Z +B Z +A Z +B Z +B Y +B Y +B Z +B Y +A Z +A Z +A Z +A Z +A Z +A Z +A Z +A Z +C X +C X +A Z +A Z +C Y +A Z +C Y +B Y +C X +B Z +A Z +A Z +C X +A Z +B Y +A Z +A Z +A Z +B Z +A Z +B Y +A Z +B Y +A Z +A Z +C Z +A Z +C X +C Y +C X +C Y +C X +A Z +B Z +A Z +A Z +A Z +A Z +A Z +B Y +A Z +C X +C X +A Z +A Z +C Z +C Z +A Z +A Z +A Z +C X +A Z +A Z +A Z +A Y +A Z +C X +A Z +A Z +A Z +C X +C X +A Z +C Y +A X +A Z +A Z +A Y +B Z +A Z +A Z +A Z +C X +A Z +A Z +A Z +B Z +B Z +A Y +B Z +C X +B Y +A Z +A Z +A Z +A Z +A Z +A Z +B Z +C X +A Z +A Y +A Z +B Y +B Z +C Z +A Z +A Y +A Z +B Z +A Y +C X +A Z +A Y +A Z +C Y +A Z +A Z +B Y +C X +A Z +A Z +A X +A Z +C X +A Z +B Y +A Z +C X +A Z +B Y +A Z +C Y +B Z +C X +A Z +C X +B Y +A Z +C X +A Z +B Y +A Z +A Z +C Z +A Z +A Y +A Z +A Z +C X +A Y +A Z +B Z +A Z +A Y +C X +A Z +B Y +A Y +A Z +A Z +A Z +A Z +A Z +A Z +B Z +B Y +B X +C Y +B X +A Z +A Y +C X +A Z +A Z +C X +C Y +A Y +A Z +C X +B Y +B Y +C X +A Z +C Y +A Z +A Z +A Z +A Z +B X +A Z +A X +B Z +C Z +A Z +A Z +A Y +A Z +A Y +A Z +A Z +B Y +A Z +A Z +A Z +C X +A Z +A Z +A Z +B Z +A Z +A Z +A Z +A Z +A Z +B Z +A Z +A Z +C X +A Z +A Z +A Z +A Z +A Y +A Z +A Z +C Z +A Z +A Y +B Y +B Z +A Z +B Y +B Z +A Z +C X +A Z +B X +A Z +A Z +A Y +A Z +B X +B Z +A Z +B Z +A Y +A Z +A Z +A Z +B Y +A Z +B Z +A Z +B Z +A Z +A Y +A Z +B Z +A Z +C X +C X +A Z +A Z +B Z +A Z +A Z +C X +A Z +A X +A Z +A X +C X +A Y +C Y +B Y +A Z +A Y +A X +A Z +A Y +A Z +A Z +A Z +C X +B Z +A Z +B Y +A Z +A Y +A Z +A Z +B Z +C X +A Z +A Z +A Y +C X +C Y +B Z +A Z +A Z +B Z +C X +A Z +A Z +A Z +C Y +A Y +A Z +B Z +B Z +A Z +B Z +A X +A Z +B Z +A Z +A Z +B Y +A Z +A Y +B Y +A Z +B Z +C X +C Y +A Z +B Z +C X +A Z +B X +A Z +A Z +C X +A Z +A Y +B Z +B Y +A Z +A Y +C Y +A Z +C X +B Z +A X +A Z +A Z +A Z +A Z +A Z +A Z +A Z +A Y +A Z +A Z +C X +B Y +B Z +C X +C X +C X +A Z +A Z +B Z +B Y +A Z +A Z +B Y +B Y +A Y +A Y +A X +A Y +B Y +A Y +C X +A Z +A Z +A Z +A Y +B Y +A Z +C Y +B Z +C X +A Y +A Z +C Z +A Z +B Z +C X +B Z +C X +B Z +B Y +B Y +C X +A Z +A Z +B Z +B Z +B Z +A Z +A Z +A Z +A Z +A Z +C X +C X +C Y +B X +C X +A Z +A Z +A Z +A Z +A Z +A X +A Z +C X +A Z +C Z +A Z +C X +C Z +A Z +A Z +A Y +B Z +A X +A Z +A Z +A Z +C X +B Y +A Z +B Y +A Z +B Y +A Z +C X +A Z +C X +A Z +A Z +A Z +A Z +A Z +B X +B Y +C X +C X +A Z +C X +A Z +A Z +A Z +A Y +A Z +A Y +A Z +A Z +A Z +C Y +A Z +A Z +B Z +B Y +C X +A Y +A Z +B Z +A Z +A Z +A Z +B Y +C Z +A Y +C Y +A X +A X +B Z +A Y +C X +C X +B Z +A Z +B Z +A Z +A Z +A Y +B Z +C Y +A Z +A Z +A Z +C X +B Y +A X +A Z +C X +A Z +B Z +B Y +C X +B Y +A X +A Z +A Z +A Z +A Y +A Z +A Z +A Y +A Y +A Y +A X +A Z +A Z +B Z +A Y +A Z +C X +C X +A Z +A Z +B Z +B Y +A Z +A Z +C X +A Y +C X +B Z +A Z +A Z +A Z +A Y +A X +C Y +C X +C X +A Z +A Y +A Z +A Z +A Z +C X +A Z +A Z +B Z +C X +C X +B Z +B Z +C X +A Z +B X +A Z +B Z +A Y +A Z +A Z +C X +A Z +C Z +A Z +B Z +C X +A Z +B Y +A Y +A Z +A Z +B X +C X +B Z +C X +C X +C Y +B Z +C X +A Y +C X +A Z +A Z +A Z +A Y +A Z +C X +C Y +A Z +A Z +B Z +A Z +B Y +A X +A X +B Z +C X +B Y +A Z +C X +A Z +B Z +A Z +B Y +B Y +A X +B Y +A Z +A X +A Z +C X +A Z +A Z +B Y +C Y +A X +A Z +C Y +C X +A Z +A Z +A Z +A Y +A Z +C X +A Z +B Y +A Z +B Z +B Z +C X +B Y +A Z +C Y +A Y +A Z +A Z +C X +A Z +A Z +A Z +A Z +B Y +B Z +A Z +A Z +C Y +A Z +A Z +A Z +A Z +A Y +A Z +A Z +C Y +B Y +B Z +A Z +B Z +A Z +B Z +A Z +A Z +A Y +A Z +A Z +B Z +C Y +A Z +B Z +A X +C X +C X +A Z +A Z +A Z +A Z +A Z +C X +A Z +C X +A Z +B Y +A Z +C Y +A Y +B Z +C X +A Y +A Z +A Y +A Z +B Z +B Y +A Y +B Z +A Z +A Z +C Z +C Z +A Y +A Z +A Z +C X +A Z +A X +C Y +C X +A Z +A Z +B Y +B Z +C Y +A Z +B Z +A Z +C Z +A Z +A Y +B Y +C X +A Z +A Z +A Z +C X +A Z +A Y +A Z +A Z +B Z +C X +C X +C X +A Z +A Z +A Z +C X +A Z +A Z +A Z +A X +A Z +C X +C X +B Z +A Z +A Z +A Z +B Y +A Z +C X +A X +B Z +C X +A Z +C X +A Y +A Z +A Z +A Y +A Z +A Y +A X +C X +A Z +A Y +B Y +A Z +A Y +C Z +B Y +A Z +A Z +A Y +A Z +C X +A Z +B Y +B Z +B Z +A Z +A Z +A Z +C X +A Z +B Y +B Y +A Z +A Y +C X +A Z +C X +A Z +C X +C X +A Y +B Z +A Z +A Z +A Z +A Y +A X +B Y +A Z +B Z +B Y +C Y +C X +C Y +A Z +B Z +A Z +A Y +B X +C Z +A X +A Z +A Z +A Z +A Y +A Y +A Z +A Y +C X +A Z +A Y +C X +A Z +A Z +C Y +A Z +B Z +A Y +B Z +B X +B Z +C X +A Z +A Z +C X +A Z +A Z +C X +B Z +B Z +B Z +A Z +A Z +B Y +A Z +A Z +C Z +C Z +B Z +A Z +B Y +A Z +A Z +C X +B Z +A Z +A Z +A Z +C Y +B Y +C X +A Z +A Z +A Z +A Y +A Z +C X +A Z +C X +A Z +A Z +C Y +C X +C X +C X +C X +C X +B Z +B Z +B Y +B Y +C Z +A Z +B Z +A Z +A X +A Z +A Z +A Z +C X +A Z +C X +A Z +A Z +C X +C X +B Y +A Z +C Y +A Z +A Y +C Y +B Z +B Y +C X +A Z +C Y +A Z +A Z +A Z +B Y +C X +B Z +B Z +C X +B Y +B Z +A Z +C X +A Z +B Y +B Z +A Y +A Z +A Z +A Z +A Z +C Y +A Z +C Y +A Z +B Y +C X +B Z +A Z +A Z +B Z +C X +B Z +A Z +A Z +A X +B Y +A Z +A Z +A Z +A Z +A Y +B Z +A Z +A Z +A Z +B Z +C Y +C X +C X +B Z +A Z +B Z +C X +A Y +C X +B Y +B Z +C Y +B Y +B Y +A Y +C Y +A Z +A Z +B Z +B Z +A X +A Z +A Z +B Z +A Z +B Z +A X +A Z +A Y +A Y +A Z +B Z +A Z +B Z +A Z +B Z +C X +A Z +A Z +C X +A Z +A Z +A Z +C X +B Y +A X +B Z +B Z +C Y +A Z +A Z +C X +B Y +C X +A Z +A X +A Z +A Z +A Z +A Z +A Z +A Z +A Z +A Z +A Z +C X +B Z +B Z +C X +A Y +C Z +A Y +A Z +C Y +A Z +A Z +A Y +A Z +C X +C Z +A Z +A Y +A Z +A X +A Y +A Z +C X +B Z +A Z +B Z +C Y +C X +A Z +A Z +A X +A Z +B Z +C X +A Z +B Y +A Z +A X +A Z +B Z +A Z +A Z +C X +B Z +B X +A Z +A Z +C Z +A Z +A Z +A Y +B Z +A Z +C X +B Z +A Z +C Y +A Z +B Z +B Z +A Z +A Z +C X +B Z +C Y +A Y +A Y +B Z +A Z +A Z +C Z +B Z +A Y +A Y +C Z +C Z +A Z +B Z +B Y +A Z +B Y +A Z +A Z +A Z +C Y +A Y +A Z +A Z +A Z +A Z +C Z +A Z +B Y +A Z +B Z +C Y +A Z +B Y +B Z +A Z +A Y +A Z +A Z +B Z +A Z +A Z +A Z +C Z +B Z +C X +B Z +A Z +A Z +A Y +A Z +A Z +A Z +A Z +C Y +A Z +A Z +A Z +A X +A Y +B Y +C X +A Z +A Z +B Y +A Z +C X +A Y +A Z +A Z +C X +A X +A Z +A Z +A Z +B Y +B Z +A X +A Z +C X +A Z +C X +B Z +B Y +A Z +B Y +A Y +A Z +A Y +A Z +B Y +C X +B X +B Y +C X +A Z +A Z +A Y +A Z +A Y +B Z +B Y +B Y +A Y +A X +A Z +C X +A Z +B X +A Z +A Z +C X +B Y +B Z +B Z +B Y +B Z +A Y +C X +C Z +A Z +A Y +B Y +B Y +A Z +A Y +C Y +B Y +B Z +A Z +A Y +A Z +B Z +A Z +A Z +A Z +A Z +B Z +A Y +C X +A Z +A Z +B Y +A Z +B Y +B Z +A Z +C X +A Z +C X +B Y +A Z +B Z +C X +A Z +A Z +A Z +C X +C X +A Z +A Z +A Z +B Y +A Z +A Z +A Z +A Z +A Z +A Y +B Z +C Y +A Y +C X +A Z +A Z +B Y +B X +A Z +C Z +A Z +A Y +A Z +A X +A Z +A Z +A Z +C Z +C X +C X +B Y +C X +C X +B Y +C Z +C X +C X +A Y +A Z +C X +C Z +B Y +A Z +C X +C X +A Z +A Z +A Z +A Y +A Z +A Y +B Z +A Z +A Z +A Z +A Z +A Z +A Z +C X +C X +C X +C X +A Z +A Z +B Z +A Y +A Z +A Z +B Z +A Z +A Z +A Z +A Z +A Z +C X +C X +A Z +A Z +C X +C Z +C Z +A Z +A Z +B Y +B Z +A Z +A Z +B Y +B X +C X +B Y +C X +C X +A Z +C X +C X +C Y +C X +C X +C X +B Z +B Z +A Z +A Z +B Z +A Z +C X +A Z +B Y +A Y +A Z +C Z +B Y +B Z +B Z +A Z +C X +B Z +A X +B Y +A Y +B Y +B Z +A Z +A Z +A Z +A Z +A Z +A Z +C X +C X +B Z +A Z +B Y +A Z +B Z +A Z +B Y +A Z +A X +A Z +B Y +B Y +A Y +C X +A Z +A Z +C Y +A Z +A Z +B Z +C Z +B Z +A Z +A Z +C X +C Y +B Z +A Z +C X +A Z +C X +B Y +C X +B Z +A Z +A Z +C X +A Z +C X +A Y +C X +C X +C Y +B Z +C X +B Z +C X +A Z +A Z +C X +A Y +B Z +C X +B Z +C X +A Z +C X +C X +A Z +A Z +B Y +C Z +A X +A X +A Z +C X +A Z +A Z +A Z +A Y +A Z +A Z +A Z +A Z +B Z +C X +B Y +A Z +A Z +B Y +A Z +A Z +A Z +A Z +B Y +A Z +B Z +A Y +A Y +A Y +A Z +A Y +A Z +B Z +A Z +B Y +A Z +C X +A Y +C X +A Z +B Y +A Y +A Z +A Y +A Z +C Z +A Z +B Z +A Z +C X +B Z +A Z +A Z +C X +B Y +A Z +C X +C Y +A Z +B Y +A Z +B X +B Y +B Y +C Z +C X +A Z +C X +A Y +A Y +B Z +A Z +C X +B Z +A Z +A Z +A Y +C X +C X +A Z +A X +B Z +A Z +A Z +A X +A Z +C X +A Z +B Y +A Z +B X +B Y +A Y +C X +A Z +A X +A X +A Y +B Y +A Y +A Z +C X +B Z +A Z +A X +A X +A Z +C X +B Z +C X +B Y +A Z +C X +A Y +A Z +A Z +A Z +A Z +C Z +B Z +C Z +A Z +A Z +C X +B Y +A Y +B Z +C X +B Z +A Z +A Z +A Z +A X +B Y +C X +B Y +B Z +B Z +A Z +A Y +C Y +A Y +A X +A Z +C X +A Z +A Z +A X +A Z +A Z +C X +A Z +A X +A Z +C Y +A Z +B Z +A Y +A Z +C Z +A Y +A Y +B Z +A Y +A Y +A Y +A Z +A Z +A Z +A Z +C X +A Z +A Z +A Z +A Z +A Z +A Z +A X +A Z +A Z +A Z +A Z +A Z +A Y +B Z +A Y +A Z +C X +A X +B Z +A Z +A X +C Y +B Y +B Y +B Z +C X +C X +A Z +A Z +C X +C X +A Z +A X +A Z +A Z +A Z +A X +C X +C X +A Z +A Y +A Z +A Z +A Z +A Z +C Z +A Z +C X +B Z +C Z +C X +A Z +B Y +C X +C X +B Z +C X +B Y +A Y +B X +A Z +A Z +A Z +B Z +C X +A X +B Z +A X +A Z +C Z +B Z +A Z +A Z +C X +C X +A X +C X +C Y +A Z +A Z +A Z +B Z +C Z +A Z +A Z +A Z +A Z +A Z +B Z +A Z +A Z +C X +B Y +A Z +B Z +A Z +C X +A Z +A Z +A Z +B Z +C X +B Y +A Z +A Z +A Z +C Y +A Z +A Z +C X +C X +A Y +B Z +A Z +C Y +C X +A Z +A Z +A Z +C X +A Z +A Z +B Z +B Z +A Z +A Z +A Z +C X +C X +A Z +B Z +A X +B Y +C X +C X +C X +A Z +C X +A Z +A Z +B Y +A Y +B Z +B Z +A Z +A Z +C Z +A Y +A Y +A Z +A Z +C X +C Z +A Z +A Z +A Z +A Z +C Y +B Y +B Y +C Y +A Z +C X +B Z +A X +A Y +B Z +A Z +A Z +A Z +A X +A Z +A Z +A Z +A Y +C Z +A Y +C X +A Y +A X +C X +A Z +B Y +A Y +B Y +A Z +C X +C Z +A Z +C Z +A Y +A Z +A Z +B Z +B X +B Z +B Z +B Y +C Z +C X +A X +C Z +B Z +A Z +A Z +B Z +A Y +A Z +B Y +C X +A Z +B Z +C X +A X +B Z +A Z +A Z +C X +C X +C X +B Z +C Z +A Z +C X +A Z +A Z +A Z +A Z +C Z +C X +A X +B Y +A Z +C X +C Z +A Z +C X +B Z +B Y +A Z +C X +A Z +B Z +C Z +A Z +A Z +A X +B Y +C X +A Z +C X +A Z +A X +C X +A Z +C X +A Y +A Z +C X +C Z +C Y +B Z +B Z +A Y +B Z +A Z +A Z +A Y +A Z +C X +C X +A Z +A Z +C X +B Z +A Z +B Y +A Z +A Z +A Z +C X +A Z +A Y +B Y +A Z +C X +A Z +A X +A Z +A Z +C X +C Y +A Z +C X +A Z +A Y +C X +B Z +C Z +B Y +A Z +A Z +B Y +A Z +B Y +A Z +A Z +A Z +C X +A Y +C X +A Z +C Y +A Z +A Z +A Z +B Y +B Z +B Z +C Z +A X +A Z +A Z +C X +A Z +C X +A Z +A X +C Z +C X +A Z +A Z +A Z +A Z +B Z +A Z +A Z +C Y +A Y +A Z +C Y +C Y +A Z +B Z +A Z +B Z +A Z +B Z +C Y +C X +C X +A Y +A Z +B Z +C X +A X +A Z +A Z +A Y +A Z +A Z +A Z +C X +C X +A Y +A Z +A Z +C X +B Z +B Y +A Y +A Z +B Z +A Z +A Z +A X +A Z +A Z +B Y +A Z +A Y +B Z +C X +A Z +A Z +A Z +C X +A Z +B Z +B Z +A Z +A Z +A Z +A Z +B Z +A Z +A Z +A Z +A Z +C X +C X +A Z +B X +A Z +B Y +C Z +A Z +A Z +A Z +C Z +A Z +B Y +A X +A Z +C Z +A Z +C Z +A Z +C X +A Y +C X +C Z +A Y +A Z +A Z +C X +C X +A Z +A Z +A Z +B Z +B Z +A Y +B Y +C Z +B Z +B X +A Z +A Z +A Z +C X +B Y +A Z +B Z +C X +A Z +A Z +C X +C X +A Z +A Z +A Z +A Z +B Z +A Z +A Z +A Z +A Z +A Z +B Z +A Z +A Z +B Z +A Y +A Z +B Y +A Z +A Z +A Z +B Z +A Z +A Z +C X +B Y +C X +A Y +C X +A Z +A Z +A Z +C X +B Z +A Z +A Z +A Z +A Z +A Z +C X +A Z +A Z +A Z +A Z +A Z +A Y +C X +B Y +C X +A Z +A Z +A Z +A Z +A Z +B Y +A Z +C X +A Z +A Z +A Z +A Z +A Z +A Z +A Z +C X +A Z +C X +A Y +B Z +A Z +C X +A Z +C X +B Z +B Z +A Z +A Z +A Z +C X +A Z +B Z +B Y +C X +C X +C X +B Z +A X +A Y +A Z +A Z +A Z +A Y +A Z +A Z +A Y +A X +A Y +C X +A Y +C X +B Z +B Y +C X +B Y +B Y +C X +A Z +A Z +B Z +C X +A Z +A Z +B Y +A Z +B Y +A Z +A X +C Y +C X +B Z +C X +A Z +A Z +A Z +C X +A Z +C X +A X +A Y +A Z +A Z +C X +A Y +A Z +B X +A Y +A Z +A Z +A Z +A Z +A Z +A Z +C X +A Z +C X +A Z +C Y +A Z +A Z +B Z +A Y +A Z +B Y +B Y +A Z +C X +A Z +C X +C Z +A Z +B Z +B Z +A Z +A Z +C X +C X +B Y +A Z +A Z +B Z +C Z +B Y +B Y +C X +A Z +A Z +B Y +A Z +C X +C Z +A Z +B Z +C X +A Y +C X +A Z +B Y +B Y +A Y +A Z +A Z +A Z +A Z +A Z +A Y +A Z +A Y +A Z +B Y +B Y +B Y +C X +A Z +A Z +A Y +A Z +A Z +C X +A Y +C X +A Z +A Z +A Z +B Y +A Z +A Z +B Z +C X +A Z +B Y +B Y +C X +C Z +B Y +A Z +A Z +A Z +C X +A Z +B Z +C Z +C X +B Y +A Z +A Z +A Y +A X +A Z +A Z +A Z +A Z +A Z +A Y +B Y +A Z +B Z +B Z +A Z +C Y +A X +A Z +A Z +C X +C X +C Y +B Y +B Y +B X +A Z +A Z +B Z +A Z diff --git a/day2/rockpaperscissors b/day2/rockpaperscissors new file mode 100755 index 0000000..d3edb4b Binary files /dev/null and b/day2/rockpaperscissors differ diff --git a/day2/rockpaperscissors.c b/day2/rockpaperscissors.c new file mode 100644 index 0000000..8274a30 --- /dev/null +++ b/day2/rockpaperscissors.c @@ -0,0 +1,30 @@ +#include +#include +#include + +#define BUFFER_SIZE 5 + +#define score_play(p) (p - 'W') +#define win(o, m) (o == m ? 3 : ((o - m == 1 || o - m == -2) ? 0 : 6)) +#define score_game(o, m) (score_play(m) + win((o - 'A'), (m - 'X'))) + +int main() { + char buf[BUFFER_SIZE], *p, c, opponent, me; + memset(buf, 0, BUFFER_SIZE); + p = buf; + unsigned score = 0; + + while ((c = getchar()) != EOF) { + *p++ = c; + if (c == '\n') { + sscanf(buf, "%c %c", &opponent, &me); + score += score_game(opponent, me); + printf("%u\n", score); + + memset(buf, 0, BUFFER_SIZE); + p = buf; + } + } + + printf("%u\n", score); +} diff --git a/day2/rockpaperscissors2 b/day2/rockpaperscissors2 new file mode 100755 index 0000000..7de0b1f Binary files /dev/null and b/day2/rockpaperscissors2 differ diff --git a/day2/rockpaperscissors2.c b/day2/rockpaperscissors2.c new file mode 100644 index 0000000..6fe32b4 --- /dev/null +++ b/day2/rockpaperscissors2.c @@ -0,0 +1,33 @@ +#include +#include +#include + +#define BUFFER_SIZE 5 + +#define score_play(p) (p - 'W') +#define win(o, m) (o == m ? 3 : ((o - m == 1 || o - m == -2) ? 0 : 6)) +#define score_game(o, m) (score_play(m) + win((o - 'A'), (m - 'X'))) +#define win_strategy(o) (o - 'A' + 1 > 2 ? 'X' : o - 'A' + 1 + 'X') +#define lose_strategy(o) (o - 'A' - 1 < 0 ? 'Z' : o - 'A' - 1 + 'X') +#define draw_strategy(o) (o - 'A' + 'X') + +int main() { + char buf[BUFFER_SIZE], *p, c, opponent, result, me; + memset(buf, 0, BUFFER_SIZE); + p = buf; + unsigned score = 0; + + while ((c = getchar()) != EOF) { + *p++ = c; + if (c == '\n') { + sscanf(buf, "%c %c", &opponent, &result); + me = result == 'X' ? lose_strategy(opponent) : (result == 'Y' ? draw_strategy(opponent) : win_strategy(opponent)); + score += score_game(opponent, me); + + memset(buf, 0, BUFFER_SIZE); + p = buf; + } + } + + printf("%u\n", score); +}