aoc

Advent of Code Solutions
git clone git://git.alexkarle.com.com/aoc
Log | Files | Refs | README | LICENSE

commit 8500c8a46fe77c06d2a0295e845c4ca7a987e6f9 (patch)
parent ba857efbe6ad423afa07db551bebdafaef1ac348
Author: Alex Karle <alex@alexkarle.com>
Date:   Fri,  2 Dec 2022 00:31:44 -0500

day2: Add hacky brute-force solution

Diffstat:
A2022/02/input | 2500+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A2022/02/sol.py | 5+++++
A2022/02/sol.scm | 53+++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 2558 insertions(+), 0 deletions(-)

diff --git a/2022/02/input b/2022/02/input @@ -0,0 +1,2500 @@ +C Z +C Y +B X +A Z +C Z +B X +C Z +B Z +A Z +A Z +B Z +B X +C Z +C Z +A Z +B Y +B X +C Y +B X +B X +A Y +A Z +A Z +A Z +A Z +C Z +A Z +C Z +B X +A X +A Z +B Y +B X +A Z +B X +C Z +A Z +C Z +A Z +A Z +B X +C X +B X +A X +B X +A Z +A Z +B X +B Y +B Y +B Y +C Z +A Z +A Z +C X +B X +C Y +B X +C Z +A Z +C Z +B X +B X +B Z +B X +A Z +C Z +A Z +A Z +A Z +A Z +B X +C Z +C Y +A Z +A Z +A Z +A Z +C Z +A X +A Z +A Z +C Z +C Y +A Z +C Y +A Z +A Z +C Y +C Z +C Z +A Z +B Y +B X +B Y +C Z +A Z +A Z +A Z +B Z +C Z +A Z +B X +C Y +A Z +B X +A Z +B Z +A Z +B X +A Z +B Y +A Z +A Z +C Y +A Z +B Z +A Z +A Y +B Y +C Z +A Z +B X +C Z +C Z +B X +C Z +C Z +A Z +B X +C Z +C Z +A Z +C Y +A Z +A Z +B Y +C Y +A Z +B X +B Y +B X +B X +A Z +C Y +A Z +C Y +A Z +B Y +C Z +A Z +A Z +C Y +A Z +A Z +C Z +A Z +A Z +A Z +C Y +A Z +B X +C Z +A Z +C Z +B Z +C Z +A Z +C Y +B X +C Z +C Z +A Z +C Y +A Z +B Y +B X +A Z +C Y +C Z +B X +C X +B X +C Y +B X +B X +C Z +B X +A Z +C X +A Z +C Z +B X +C Y +A Z +A Z +C Z +C Y +A Z +A Z +A Z +B X +A Y +B X +C X +C Z +B X +C Z +C X +A Z +C Z +B Z +A X +A Z +C Y +A Z +C Z +C Z +B X +C Z +A X +C Y +C Z +C Z +C Z +B Y +C X +B X +A Z +B Y +A Z +A Z +C Y +A Z +B X +A Y +A Y +C Y +A Z +A Z +C Z +A Z +A Z +A Z +B Y +B X +B X +A Z +C X +C Y +A Z +C Z +A Z +A Z +A Z +A Z +A X +A Z +C Z +A Z +B Y +A Y +A Y +C Y +C Y +B X +B Y +A Z +A Z +C X +A Z +B X +C Y +A Y +A Y +A Z +C Y +C Z +B X +A Z +C Y +B X +C Z +A Z +B X +A Z +C Y +B X +C Z +A Z +A Z +A Y +A Z +A Z +C Y +C Z +A Z +B X +C Z +C Y +A Z +A Z +C Y +A Z +C Z +B X +A Z +C Z +A Z +A Z +A Z +C Y +C Y +B X +B Z +B X +A Z +B Y +B Y +A Z +A Z +A Z +B Y +B Y +C Y +A Y +A Z +C X +B X +A Y +B Y +C Y +A Z +B Z +C Y +C Z +B X +A Z +A X +B X +C Y +B Z +A Z +B Y +A Z +B X +A Z +B X +A Z +C X +C Y +C Z +B X +C Z +C Y +A Z +C X +C Z +A Z +C Y +A Y +C Y +C Y +B Y +A Z +A Z +A Y +A Z +C Z +B X +A Y +B X +B Y +B X +A Z +C Z +C Z +C Y +B X +C Z +A X +A Z +A Z +A Y +A Z +A Z +A Z +A Z +B Z +B X +B X +C Y +C Z +C Z +A Y +B X +C Z +C X +C Z +B Y +A Z +B X +B Y +B X +A Z +B X +B X +A Z +A Z +C X +B X +C Z +C X +A Z +A X +C Z +A Z +A Z +C Z +B Z +C Z +B X +A Z +A Z +C Z +A Y +A Z +A Z +C Y +A Z +B X +B Y +A Z +A Y +A X +B X +A Z +A Z +C Y +C Y +A Z +C X +A Z +A Y +A Z +B Y +A Z +A Y +B X +C Z +A Z +B X +A Z +A Z +B X +A Z +A Z +B X +A Z +C Y +A Z +C Z +C Y +B Y +B X +A Z +B Y +A Z +A Z +B X +A Z +A Z +B X +C Z +A Z +C Z +B X +B X +B Y +A Y +C Y +B X +A Z +C Z +A Z +A Z +A Z +B X +A Z +B X +A Z +A Z +A Z +C Z +A X +B X +B Z +A Z +A Z +C Z +A Z +A Z +A Z +B Y +A Y +C Z +B X +B X +C Y +A Y +A Z +C X +B Z +A Z +A Z +C Z +A Z +A Y +B Y +C Z +B X +A Z +A Z +A Z +C Z +A Z +A Y +B X +C Y +A Z +A Z +A Z +C X +B X +A Z +A Z +C Z +B X +A Z +A Z +A Z +A Z +A Z +A Z +C Y +A Z +B X +A Y +C Y +A Z +A Z +B X +A Z +B Y +A Y +B X +A X +A Z +C Z +C Z +C Y +A Z +B Y +A Z +C X +A Z +A Z +B X +A Z +A Z +B Y +A Y +A Z +A Z +B X +C Y +B X +B Y +C Y +C X +A Z +A Z +B Y +A Z +B Y +C Y +C Y +A Z +C Y +A Z +C Z +A Z +B X +A Z +A Z +A X +A Z +A Z +A Z +A Z +B Z +C X +B Y +A Z +C Z +A Z +A Z +A Z +C Z +B X +A Z +B X +C Y +C Z +A Z +A Z +C Z +B X +B X +A Z +A Z +B X +A Z +A Z +C Z +A Z +A Z +A X +C Z +C Y +A Z +A Z +A Z +A Z +C Z +A Z +A Z +B Z +A Z +C Y +A Z +A Z +B Y +A Z +A Z +B X +A Z +B X +A Z +A Z +C Y +A Y +C Y +B Z +B X +B Y +A Z +A Z +C Y +A Z +A Y +B Z +A Z +C Y +A Z +A Z +A X +A Z +B Y +B Y +A Z +A Z +A Z +C Z +C Z +A Y +C Y +B X +A Y +B X +B Y +C X +C Y +C Y +A Z +C Z +A Z +A Z +A Z +B X +A Z +A Z +A Z +A Z +A Y +B X +A Z +A Z +B X +A Z +A Z +A Z +A Z +A X +C Y +B X +A Z +A Y +C Y +C Y +A X +A Z +C X +C Z +A Z +C X +A Z +A Z +B Y +A Z +A Z +A Z +B X +A Z +A Z +B X +B X +A Z +A Z +C Z +C Z +A Z +C Z +B X +A Z +A Z +B X +C Z +C Z +C Y +C Z +A Z +B X +A X +C Z +A X +C Z +A Z +A Z +A Z +A Z +A Z +B X +A Z +B X +C Y +A Z +A Z +A Z +C Z +A Y +A Y +B Y +A Z +A Z +C Y +C Z +B X +B X +A X +C Z +B X +A Z +A Z +A Z +B Z +A Z +C Y +B X +A Z +A Z +A Y +B Y +C Z +C Z +A Z +A Z +A Z +B Y +A Z +C Y +B X +B Z +C X +B X +C Y +A X +C Z +A Z +B X +C X +A Y +C X +A Z +B X +B X +A Z +A Z +C Z +B X +B Z +C Y +C Z +A Z +B Y +A Z +A Z +B X +C Y +A Z +C Z +A Z +B Z +C Z +C Z +A Z +C Y +A Z +A Z +A Z +C Z +C X +B Y +C Y +A Z +C Y +C Y +C X +C Y +A Z +C Y +C Y +C X +C X +A Z +B X +A Z +C Y +A Z +B X +B X +B X +B X +B X +B Y +A Z +A Z +C Z +A Z +A Z +A Z +C Z +C Z +C Z +A Z +A Z +A Y +A Z +A Z +A Y +A X +C Z +A Z +A Z +C Z +B X +C Z +B Y +C Z +A Y +A Z +C Y +B X +A Z +C Y +A Z +C Z +C Y +B X +A Z +A Z +A Z +A Z +A Z +C X +C Z +A Z +A Z +A Z +C Z +A Z +B X +A Z +A X +A Z +B X +A Z +C Z +A Z +A Y +B X +B Z +A Z +B X +A Z +A Z +B Y +A Z +A Z +C Y +B Y +C X +A Z +A Z +A Z +C Z +A Z +A Z +A Z +C Z +A Z +C Y +B X +A Z +A Z +C X +A Z +C Z +A Z +B Y +A Z +A Y +C Z +C Z +A Y +A Y +A Z +A X +A Z +A Z +B X +A Z +A Z +B X +C Z +A Z +A Y +B X +A Z +A Z +C Z +A Z +A Z +B X +B Z +A Z +A X +B Y +A Z +B X +A Z +C Z +B X +C Y +A Z +B X +A Z +A Z +A Z +B Z +A Z +C Z +A Z +C Z +B X +A Z +B Z +A Z +C Z +C Z +B Y +C Z +A Z +A Z +C Y +A Z +A Z +B X +B Y +C Z +A Z +C Z +A Z +C Z +A Z +B X +A X +B Y +A Z +C Z +A Z +C Z +C Y +B X +C Z +C Z +B Y +B X +C Z +B X +C Y +A Z +C Y +C Y +A Z +B X +A Z +C X +C Z +B Y +C Z +B Z +A Z +A Z +A Z +A Z +A Z +A Z +A Z +A Z +C Z +A Z +B Y +C Y +C X +C Y +B Y +B X +A Z +C Z +B X +B Y +A Z +B Y +A Z +A Y +B X +A Z +B X +A Z +C Z +A Z +A Z +A Z +C X +B Y +C Z +C Z +A X +C Z +A Z +C Z +B Y +A Z +B Y +A Z +A Z +A Z +B Z +C Z +A Z +A Z +A Z +A Z +A Z +A Y +A Z +C Z +A Z +C X +A Z +A Z +A Z +C Z +A Y +A Z +A Z +B Z +A Z +A Z +A Z +C Z +C Z +A Y +A Z +A X +C Y +C Y +B Z +A Y +C Z +A Z +C Z +C Z +A Z +A X +A Z +B Y +C Z +B Y +A Z +B X +A Z +A Y +A Z +A Z +A Z +C Z +A Z +A Z +A Z +C Z +A Z +C Z +C Z +C Y +A Z +B X +A Z +A Z +A Z +A Z +A Z +A Z +C X +C Z +C X +A Z +A Z +A Z +A Z +A Z +A Z +C Z +B Y +B X +A Z +C Z +B Z +A Z +C Y +A Z +C Z +A Z +C Z +A Z +A Z +A Z +C Z +A Z +C Y +A Z +A Z +A Z +A Z +A Z +C Z +C Y +A Z +C X +A Z +C X +C Z +C Z +A Z +A Z +B Y +B X +A Z +B X +A Z +A Z +A Z +C Z +B Z +A Z +A Y +B Y +A Z +C Z +B X +C X +C Y +C Y +C Z +C X +B X +A Z +B X +A Z +C Z +A Z +A Y +A Z +B X +A Y +A Z +A Y +C Y +A Y +A Z +A Z +B X +C X +A Z +A Z +A Z +A Z +A Z +A Z +A Y +B X +A Z +A Z +B Y +B X +A Z +A Z +B X +A Z +C Y +C Y +B Y +A Z +A Z +A Y +A Z +A Z +A Y +C Z +C Y +C Z +C X +C Z +C Y +A Z +A Z +C Z +B X +A Z +C Z +A Z +C Z +C X +B Y +C X +B X +C Z +B X +C Z +A Z +A Y +B Y +A Z +A Z +C X +C Y +A Z +B X +A Z +A Z +C Y +C Z +B X +B X +A Z +C X +A Z +B X +C Y +A Z +A Y +B X +C Y +B X +A X +A Z +A Z +A Z +C Z +B Y +C Z +B Y +A Z +A Z +C Z +B X +A Z +A Z +A Z +A Z +C Y +B X +A Z +C X +A Z +C Z +B Z +A Z +A Z +A Z +B Z +A Y +A Z +A Z +C Z +B Z +A X +B X +A Z +A Z +A Z +A Z +A Z +A X +C Z +A Z +C Z +B X +B X +C Y +B X +A Z +A Z +C Y +C Z +B X +C Y +A Y +B X +B X +C X +A Z +A Z +C Z +A Z +C Z +C Z +B X +A Z +B X +A Z +A Z +B Y +B Y +A Z +A Z +C Z +A Z +A Z +B X +A Z +C Z +C Z +B X +C Y +A Z +A X +B X +B X +B Y +B Y +A Z +C Z +A Z +C Z +A Z +C Y +B X +A Z +A Z +C Z +B X +A Z +C Y +A Z +A Z +A Z +B X +A Z +A Y +C Y +C Z +A Z +A Z +B X +C Y +A Z +C X +A Z +B X +A Z +A Z +B Y +B X +C Z +A Z +B X +A Y +A Z +B Z +A Z +C Y +B Y +C Z +C X +B X +A X +B X +B Z +B X +B Y +B X +C Y +B X +A Y +B Z +B X +C X +B X +A Z +A Z +B X +B X +A Z +A Z +C Y +B Y +A Z +A Z +A Z +C Z +A Z +B X +A Z +B X +A Z +A Z +A Z +A Z +C Y +C X +A Z +A Z +A Z +A Z +B Y +A Z +A Z +C Z +C Z +B X +A Z +A Z +B X +A Z +B X +C Y +B X +C Z +A Z +C Z +C Z +A Z +A Z +A Z +A Z +A Z +C X +C Z +B X +B X +B X +A Z +A Z +C Z +B X +A Z +C X +A Z +C Z +A Z +A Z +C Z +A Z +A X +B X +A Z +A Z +A X +A Z +B Y +A Z +A Z +A Z +C Y +C Y +A Z +C Y +C X +A Z +B Y +A Z +A Z +B Y +A Z +A Z +A Z +C Y +B X +A Z +A Z +A Z +A X +A Z +A Y +A Y +A Z +C Z +B Y +C Y +B X +B X +B X +A Z +A Z +A Z +C Y +A Z +B X +A Z +A Z +C Z +B X +A Z +A Z +C Z +A Z +C Y +A Z +B X +C Z +C Y +A Z +C X +A Y +B Z +C Z +C Y +A Z +A Z +A Z +A Y +A Y +C Y +B X +C Z +B X +C Y +B X +B X +A Z +A Z +C Z +A Z +B X +A Z +B X +C Y +C Z +A X +B X +B X +C Z +C Z +C Z +C Z +C Z +A X +A Z +B X +A Z +B X +A Z +A Z +A Z +B X +B Y +C Z +C Y +A Z +C Z +B X +C Z +A Z +C Z +A Z +A Z +A Z +B X +B Z +A X +B Y +C Z +A Z +A X +A Y +A Z +C Y +A Z +C Z +A Z +A Z +A X +A Z +A Y +B Z +A Z +A Z +B X +B Y +A Z +C Z +A Z +A Z +C Z +A Z +A Z +C Y +B X +B X +A Z +C Y +B Z +A Z +B X +B X +B X +B Y +C Z +B Z +A X +B X +A Y +A Z +B X +B X +A Z +B X +A Z +C Z +A Z +C Z +C Y +B X +B X +C X +A Z +A X +A Z +C Y +C Z +C Y +C Z +C Y +C Y +B X +B Y +A Z +C X +C Z +B X +C Z +C Z +B X +A Z +A Z +A Y +A Z +A Z +C Y +A Z +B X +A Z +A Z +C Y +A Z +A Z +B X +A Z +A Z +B Z +A Z +A Z +A Z +A Z +A Z +C Z +A Y +A Z +C Z +C Z +C Z +A Z +B X +B Y +A Z +C X +A Y +A Y +C Y +C Y +A Z +C Y +B X +C X +B X +C Y +A Z +A Y +B X +B X +A Z +A Z +A Z +A X +A Z +B X +B Y +A Y +C Z +B Y +A X +A Z +A X +A Z +A X +A Y +C Y +C Z +A Z +A Z +A Z +C Y +A Z +A X +A Z +A X +A Z +A Z +B X +C X +C Y +C Z +B X +A X +C Z +C Z +C X +A Z +C Z +C Y +A Z +C Z +C Z +B X +A Z +B Y +B X +B X +C Z +A Z +A Z +B X +B X +A Z +C Z +B X +A Y +B Z +C X +A Z +C Y +A Z +A Z +B X +C Z +C Y +A Z +B X +B Y +A Z +B X +B Z +C X +A Z +C Y +C Z +B X +C X +C Y +A X +C X +C Y +B Y +A Z +C Y +C Z +A Z +A Z +A Y +A Z +C Y +C X +B X +C Y +A Z +B Y +A Z +B X +A Z +C X +A Z +C Z +B Y +B Y +B Y +C Y +A Z +A Y +C Z +C Y +B Y +A Z +B Y +B X +A Z +B Z +A Z +A Z +A Z +C Y +A Z +B X +A Z +C Z +B X +B X +C Z +A Z +C Z +B Y +C Y +C Z +A Z +A Z +A Z +A Z +A Z +C Z +A Z +C Y +A Z +B Y +A Z +C X +A Z +A Z +C Y +A Z +B X +A Z +A Z +B Y +A Y +C X +A Y +A Z +A Z +A Z +B X +A Z +B X +C Z +A Z +B X +C Y +C Z +A Z +A Z +C Z +A Z +A Z +A X +B X +B X +A Z +B X +C Y +A Y +A Z +A Z +C X +A Z +A Z +B X +A Z +A Z +A Z +A Y +B X +A Z +B X +B X +B X +B X +A Y +B X +A Z +A Z +B X +C Y +B X +C Z +B X +A Z +C X +A Z +B Y +C Z +B X +A Z +A Z +C Y +C Y +A Z +A Z +C Z +A Y +A Z +C X +C Z +A Z +A Z +B X +A Z +B X +A Y +B Z +B X +A Z +A X +B X +A Z +A Z +A Y +C Z +A Z +A Z +C Z +C Z +A X +A Z +C Y +A Z +B X +A Z +A Z +A Y +C Y +B X +C Z +A Z +C Y +B Y +A Z +B Y +C Z +A Z +A X +B X +B X +A Z +A X +A Z +A Z +A Z +A Z +B Z +A Y +A Z +A X +C Y +A Z +B X +B Y +B X +C Z +A Z +A Z +B X +A Z +C Z +A Z +B X +C Y +C Z +A Z +B Z +C Z +B X +C Y +A Z +C Z +B X +B X +A Y +A Z +B Z +B X +C Z +A Z +C Y +B Y +A Z +B Y +A Z +C Z +B X +B X +B X +C Z +A X +B Y +B Y +A Z +A Z +A Z +A Z +A Z +B X +A Z +A Z +B X +C Z +A Z +C Y +C Z +A Z +A X +A Z +A Z +A Z +B X +B Y +B X +A Z +A Z +C Z +A Z +C Z +A Z +A Z +B X +A Z +A Z +C Y +A Z +B X +A Z +A Z +B X +A Z +C Z +A Z +B X +A Z +A Z +A Z +C Z +B Y +A Z +B X +C X +A Z +B X +A Z +C Y +A Z +A Y +A Z +B Z +B X +C Z +A Z +C Z +C Y +B Y +B X +B Y +C Y +C Y +A Z +C Y +A X +A Z +B Y +A Z +B X +A Y +C Y +B X +C Y +B X +A Z +A X +B Y +B X +C Z +A Z +A Z +A Z +A Z +A Z +C Z +C Z +A Z +A Y +B X +B X +C Z +A Z +A Z +C X +B Z +C Z +B X +A Z +A Y +A Z +A Z +A Z +A Z +A Z +A Z +B Z +B X +A Z +B X +C Y +C Z +A Z +B X +B X +A Z +C X +A Z +B Y +A Z +C Y +B X +A Y +B Y +C Y +B X +B X +B Y +C Y +B X +A Z +C X +A Z +B X +A Z +A Y +A Z +A X +C X +C Y +A Z +A Z +C Y +A Z +A Z +A X +C Z +C Y +A Z +A Z +B X +B X +C Z +B X +A Z +C Y +B X +B X +C Z +A X +A Z +B Z +C Z +C Y +A Z +C Z +C Z +B Y +C Y +B Y +C Z +A Z +C Z +B X +A Z +B Y +B Y +C Y +C Y +A Z +C Z +C Z +A Z +A Z +C X +A Z +A Z +C X +A Z +A Z +A Y +A X +C X +A Z +A Z +A Z +C Z +A Z +A Z +A X +A X +B Y +A X +A Z +A X +B X +B X +A Z +C Y +A Z +C Y +C Y +B X +B X +A Z +B Z +B X +C X +B X +A Z +A Z +A Z +B X +C Y +C Z +A Z +B Y +C Y +C X +A Z +A Z +A Z +A Z +A X +C Z +A Z +B X +A Z +A Z +C Z +C X +C Z +A Z +C Y +B Y +A Z +C Z +B X +B Z +A Z +A Z +A Y +C Y +C Z +C Z +A Z +A Z +C Z +B X +A Z +A Z +A Z +B X +A Z +B X +B X +A Z +C Y +A Z +A Z +A Z +C Z +A Z +C Y +B X +A Z +C Z +A Z +C Z +A X +A Z +A Z +A Z +A Z +A Z +A Z +C Z +A Z +A Z +A Z +B X +C Y +B Z +A Z +C X +A Z +C Z +C Z +C Y +C Y +B X +A Z +C Z +A Z +A Z +A Z +A Z +A Z +A Z +A Y +A Z +A Z +A Z +C Y +B Y +C Z +C Z +A Z +A Z +A Z +A Y +C Z +A Z +A Y +A Z +A Z +A Z +B X +B X +C Y +B X +A Z +A Z +A X +C Z +C Y +A Z +C Y +A Z +A Z +A Z +C X +B X +A Z +C X +C Y +A Z +A Z +A Z +A Z +A Z +A Z +C Z +B X +C X +C Z +B Y +B Z +B Z +C Y +A Z +B X +B X +A Z +A Z +A Z +B Z +B Z +A Z +C Z +A Y +C X +C Y +A X +C Y +A Z +C X +A Z +B X +C Z +B X +B Z +A Z +A X +A Z +B X +C Y +B Y +A Z +C Z +A Y +A Z +C Y +A Z +C Y +B X +A Z +A Z +A Z +A Z +B Y +A X +A Z +C Z +A Z +C Z +B X +C Z +A Z +B Y +A Z +C Y +C Y +C Z +A Z +A Z +A Y +B X +A Z +A Z +C X +B X +C X +A Y +A Z +A X +B X +A Z +B Y +C Z +C Z +C Y +A Z +A Y +A Z +A Z +B Z +C Y +A Z +A Z +B Y diff --git a/2022/02/sol.py b/2022/02/sol.py @@ -0,0 +1,5 @@ +#!/usr/bin/env python3 +import sys + +for line in sys.stdin: + diff --git a/2022/02/sol.scm b/2022/02/sol.scm @@ -0,0 +1,53 @@ +(import (chicken io) + (chicken string)) + +; A, X - Rock +; B, Y - Paper +; C, Z - Scissors +(define (decode-1 str) + (cond ((or (equal? str "A") (equal? str "X")) 'R) + ((or (equal? str "B") (equal? str "Y")) 'P) + ((or (equal? str "C") (equal? str "Z")) 'S) + (else (error "Bad decode")))) + +; A, B, C - Rock, Paper, Scissors +; X, Y, Z - Lose, Draw, Win +(define (decode-2 round) + (let ((a (car round)) + (b (cadr round))) + (cond ((and (equal? a "A") (equal? b "X")) '(R S)) + ((and (equal? a "A") (equal? b "Y")) '(R R)) + ((and (equal? a "A") (equal? b "Z")) '(R P)) + ((and (equal? a "B") (equal? b "X")) '(P R)) + ((and (equal? a "B") (equal? b "Y")) '(P P)) + ((and (equal? a "B") (equal? b "Z")) '(P S)) + ((and (equal? a "C") (equal? b "X")) '(S P)) + ((and (equal? a "C") (equal? b "Y")) '(S S)) + ((and (equal? a "C") (equal? b "Z")) '(S R)) + (else (error "Bad decode"))))) + +(define (score-sym s) + (cond ((eq? s 'R) 1) + ((eq? s 'P) 2) + ((eq? s 'S) 3) + (else (error "Bad sym")))) + +(define (beats? a b) + (or (and (eq? a 'R) (eq? b 'S)) + (and (eq? a 'S) (eq? b 'P)) + (and (eq? a 'P) (eq? b 'R)))) + +(define (score-round round) + (let* ((opp (car round)) + (you (cadr round))) + (+ (score-sym you) + (cond ((beats? opp you) 0) + ((beats? you opp) 6) + (else 3))))) + +(define (main args) + (let* ((lines (read-lines)) + (rounds-1 (map (lambda (l) (map decode-1 (string-split l))) lines)) + (rounds-2 (map decode-2 (map string-split lines)))) + (print (apply + (map score-round rounds-1))) + (print (apply + (map score-round rounds-2)))))