diff options
-rw-r--r-- | day02 | 2500 | ||||
-rw-r--r-- | day02.k | 3 | ||||
-rw-r--r-- | day02.mew | 7 | ||||
-rw-r--r-- | day02.rkt | 43 | ||||
-rw-r--r-- | day02.zig | 27 |
5 files changed, 2580 insertions, 0 deletions
diff --git a/day02 b/day02 new file mode 100644 index 0000000..6b75281 --- /dev/null +++ b/day02 @@ -0,0 +1,2500 @@ +A Y +A Z +A X +B X +A Y +B Y +B Y +A X +A Z +A X +A X +A X +B X +B X +B X +B X +C Z +B Z +B Y +B X +A X +A Y +B X +B X +B X +B Z +B X +B X +B X +B Z +B Z +A X +A X +C X +B X +B X +B X +A X +B X +B X +A Z +B X +B X +B X +B Z +B X +A X +B X +B Z +B X +B X +B Z +A Z +B X +B X +B X +A X +C Z +A X +A X +C Y +A X +B X +B X +B X +A X +B X +B X +A X +C X +B Y +A Z +A Y +B Z +B Z +C X +B Y +A X +B Y +A Y +B X +C X +B X +B X +C X +B X +A X +B X +B X +A Y +A X +B X +B Z +A Z +B Z +B Y +A Y +B Z +B X +B X +B X +A Z +B X +B X +A X +A Y +B X +B Z +B X +B X +B Y +B X +C X +B Z +C X +B Z +B X +A Y +B X +A Z +C Y +B Z +B Y +B X +A X +A Y +A X +B Z +B Z +A Z +B X +B Z +B X +A Y +B Z +B X +B Z +C X +B X +B X +B X +B Z +B Y +C Z +A X +B Y +B X +B X +B Z +B X +B Z +B X +A X +B Z +B Z +B Z +B Y +B X +C Z +B X +B Y +A X +B X +B Z +A X +B X +B X +B Z +B X +B Z +B Y +B Y +B Z +A X +B X +B Y +A Y +A Y +C X +B Z +B X +B X +A Y +C Y +B X +A Z +A Y +B Z +B X +B X +B Z +A Y +B X +B Z +A Y +B Z +B X +B X +A X +B Z +A X +B X +B Z +A X +B X +A X +A X +B X +A Y +B Z +B X +B Y +B X +B X +A Y +A X +C X +A Z +B Y +B Z +C X +B X +B Z +B Z +B Z +B X +B X +C X +C X +C Y +A Z +B X +A X +A Z +A X +B Y +A Z +B Z +B X +B Y +B X +C Z +A Y +B X +A X +B Z +B Z +A Z +A X +A X +B X +B Y +B Y +B Z +B X +B Z +A X +B X +B X +A X +A Y +A Z +B Z +B X +B Z +B X +A X +C Z +B X +A Z +B X +B X +B Z +B X +B Z +B X +B X +A Z +B Z +B X +C X +B X +A X +B X +C X +B X +B X +B X +B X +B X +A X +A Z +A X +B Z +C Z +B X +A Z +C Y +B Z +B Z +B X +A Z +B X +A Z +B Y +B X +A X +B X +B X +B X +A Z +B X +C X +B Y +C X +B Y +B X +B X +B Z +A X +B X +A Y +A Y +A Y +A Y +A Y +B X +A X +B X +A Z +A Z +B Y +A Z +A Y +A X +B X +A Z +A X +A X +B Z +B Z +A Z +B Z +B X +B X +A X +B X +B X +B X +A X +B X +C Z +A Z +A X +A X +B X +B X +B X +B X +A X +A X +A X +B Y +B Y +B X +A X +A Y +A Y +B X +A X +B X +A X +A Z +B Z +B X +B X +A Y +C X +C X +A Y +B X +B Z +B X +B X +A Z +C X +C X +B X +B X +C X +B X +B X +B X +B Y +B X +A Y +B X +A Y +B Z +B X +B X +B X +B X +A X +B X +B X +B X +B X +B Y +B Y +B Z +A Y +B X +B Z +A X +B X +A X +A Y +B Y +B X +B X +C Z +B X +A Z +C Y +B Z +C Z +A X +B X +A X +A Z +A X +A X +A Y +B X +B X +B Y +A X +B Z +B Z +B X +B Y +C X +B X +B X +B X +A X +C X +A Y +B Z +B X +B Z +B Y +C Y +A X +C Z +A X +B X +A Y +B Z +C X +B Z +B X +A X +A Z +B X +C Y +A X +B X +B X +B Z +B Z +B X +A X +A X +B X +B Z +A X +A Z +A Z +A Y +A Z +B X +C Z +A Y +B X +B Z +B X +B X +B X +B Z +A X +B X +A X +B Y +B Y +B X +C Z +A X +A X +A X +B X +B X +B X +B X +A Z +B X +B X +B Y +A X +B Z +C X +A Y +B X +A Y +A Y +B X +C X +C X +B Z +B Z +B Z +B X +B Y +A Y +B Z +B X +C Z +B Z +A Z +A X +A Z +A X +B X +B Z +B X +B X +A Z +B Z +C Y +B Z +B X +B X +A X +A X +C X +B X +C Z +B Z +B X +A Y +B Z +B X +B X +A Z +A X +B X +A X +A X +A X +A Z +C Y +B X +B X +A X +B X +B Y +B Y +B X +B X +B X +C Z +B X +B X +C Z +B Z +A X +C Y +A X +A X +A X +A X +B X +A X +C Y +B Z +A X +B X +B Y +C X +B Z +A X +B X +B Y +B X +C Y +A X +B Z +B Y +B X +B X +B Z +B X +B Y +B Z +B X +C X +B Y +B X +B Z +B Z +B Z +B X +B X +B X +B Y +A Y +B X +B X +B X +B Z +B Y +C X +C X +C Z +B X +A X +B X +B Z +B Z +B Z +A Z +A Y +B X +A X +A Z +B Y +A X +B X +A Y +A X +B X +B Z +A X +A X +A Z +B X +B X +A X +B Y +B X +B Z +A Y +B X +A X +B X +B X +B X +A Y +B X +B X +B Z +C X +C Y +B X +A X +B Y +B X +B X +B Y +B X +B Z +B Y +C X +B Y +B X +C Y +A Z +C X +B X +B Z +A X +B X +B X +B X +B X +A Y +C Z +B X +B X +B Z +A Y +B X +B Y +A X +C X +B X +A Y +A X +B X +B X +B X +B Y +A X +C X +B X +A X +B X +B Z +C Z +A X +A X +B X +A X +C X +A X +B Z +B X +B X +B X +A Y +A Z +B X +C X +B Y +B Z +A Z +A Y +B Y +A Y +B X +B X +C X +B X +A X +B X +B Z +A Y +B Z +A X +B X +A Y +B X +B X +B X +B Z +B X +B X +A X +B X +B X +B X +B X +C X +A Y +A Z +B Z +A X +A Z +A X +B Z +B Z +B X +B X +B X +A X +B X +B Y +A X +B X +C X +A Z +B X +B X +C Z +B X +B Z +A Y +A X +A Y +A X +B X +B Y +B Z +B X +B X +B X +B Z +B Z +A X +A X +B X +B Z +A X +A Y +A Y +A X +B X +A Z +B X +A Y +B Z +A X +C X +B X +B X +A X +B X +C X +B Z +B X +B X +C X +A Y +B X +B X +B Z +B X +A Y +B Z +C Z +B Y +B X +A Y +B X +B X +B X +B X +C X +A Y +B X +B Z +B X +B X +C Z +A X +B X +A Y +A X +B X +B X +A X +A Z +C X +A X +A Y +A Y +B Z +A X +B Z +B X +B Y +A Z +A X +A X +A Y +C Z +B X +A Y +B Z +B X +B X +B Z +B X +A Z +C Z +B Z +A Z +B X +A X +B Z +A X +B X +B Z +B X +A X +B Y +A Z +A Z +B X +B Z +A Y +B Z +A Y +B X +C X +A Y +B Z +A X +B X +B X +C X +B Y +B Z +B Z +B X +A X +A X +B X +A X +C Y +A Y +A X +A Z +A X +A X +B X +B X +B X +B Y +C Y +A X +B X +B X +B X +B X +B X +C Y +A Z +B X +A X +A X +A Z +A Y +C X +A Z +B X +B X +B X +A X +B Z +B X +C Z +A Y +B X +A Y +B Y +B X +A Y +B Z +B X +B Z +B X +A Y +B Y +B Y +A X +B X +C Z +B Z +B Z +B X +A Z +C X +B Z +C Y +B X +A Y +A X +B X +A X +B Z +A Y +B Y +B Y +B X +C X +C X +A Y +A Z +B X +B X +B X +B X +C X +B X +C X +B X +B Z +A X +A X +B X +A Y +B Z +B X +A X +B X +B X +A Z +C X +B Z +C X +A X +B Z +C X +B X +B Z +A X +C X +A Y +A X +A X +A Y +B Y +B X +B X +B X +B Y +B X +A Y +B X +A X +B X +C X +B X +B X +B X +B X +B X +A X +C X +C Z +B X +B X +B Z +B Z +A X +B Y +B X +B X +A Y +B X +B Z +A X +A X +C X +B X +B X +C X +B X +B X +B X +A X +A X +C X +B X +B X +B Z +B Z +A Z +B X +A X +A X +B X +B Y +A X +B X +B X +A X +B X +B X +B X +B X +A Y +A X +B X +A X +B X +A Z +A Y +B X +B X +A Z +B Z +B X +B X +B X +B X +A X +B X +B X +B X +A Y +C Y +A X +B Z +A X +B X +B X +B X +B Y +C X +A X +B Z +B X +C X +A X +A X +A Y +B Z +B X +B X +B Z +C Z +B X +B Z +B X +A X +A Y +A Y +B Z +B X +C Y +B X +B Z +A Y +B Z +A Y +B Y +B X +C Z +B X +A X +A Z +B Z +C X +A Y +C X +A Y +B Y +B X +C X +A X +A Y +A Y +B X +A Z +A Z +A Z +B X +A Z +B Z +A X +B X +A Y +A Z +A X +B X +A Y +B X +B X +B Z +A X +B X +B Y +C Y +B Y +B X +C Y +A X +C Y +A Z +A Y +B Z +B X +A X +C X +B X +C Z +C Y +B Z +B X +C X +B Z +B X +C X +B Z +B Z +C X +B X +B Z +A X +A Y +C Y +B X +A Y +A Y +A Z +B X +B Z +A Y +B Y +A Z +B X +B Y +A Y +B Y +A X +A Y +B Z +A Y +B Z +B Z +B X +B X +C Z +A Y +A Y +B Y +B Z +B Z +A X +B X +A Y +C Z +B X +B Z +B X +B Z +B X +C X +A X +B Z +A X +B Z +C X +B X +A X +A X +A Y +B X +B Z +B X +A X +B Z +B Z +B Y +B Z +C Y +B X +B X +B X +A X +B X +C Z +B X +C Z +A X +B Y +B X +C Y +C X +B X +B X +B Z +B Z +B X +B X +B Z +B X +B Y +A X +B X +A X +C Z +B X +B Z +B X +B X +B X +A X +A X +A Y +B Z +C X +B X +C Y +A Y +B Y +B Y +A X +B Z +B X +A Y +B Z +B Z +A X +B Z +B Y +C X +C X +B X +B X +B Y +B Y +B Y +A X +B X +B X +A Y +B Z +A X +A Z +A Y +A Z +B Z +B Z +A Y +A X +A X +B X +B Z +A Y +B X +A Y +B X +B X +A Y +B X +B X +B Z +C X +A Y +B X +B X +C Y +B Y +B X +B X +B X +A X +B X +A Z +B X +A Z +B Z +A Y +B X +C X +B X +A X +A Z +B Z +B Z +B X +B X +C X +B X +B Z +B X +B Z +B X +B X +A Y +B X +B Y +B X +B X +B Y +B X +B Z +B X +B Z +A X +A Y +B Y +A X +B X +A X +B X +A X +A Y +B Y +B Y +B X +B X +B Z +A X +B X +A X +A X +A Y +B X +A Y +A X +A Y +B Y +B Z +B X +A X +B X +B X +A Y +A Z +B X +A Z +B X +B X +C Z +B Z +B Z +B Y +A Z +B Z +A Z +B Y +B X +C Z +A Z +B Z +A X +B X +B X +B X +C Y +C Z +B Z +C Z +B X +B X +B X +B X +B X +A X +A Z +B X +A X +B X +C Z +B Z +B X +A Z +A X +B X +A X +B X +A Y +B X +A X +A Y +C X +B X +C X +A Z +C Z +B X +C X +B Z +A X +B X +B X +B Z +A Y +A Z +B Z +B X +A X +C Y +B Z +B Z +B X +B X +A X +B X +A Y +B X +B Y +A Z +B X +B X +A Z +A X +B Y +B Z +B X +B X +C X +B Z +A X +B X +A Z +B X +B X +B X +B X +B X +B X +B Z +A X +B X +B X +B X +B X +B Z +B Z +A Y +B X +C Y +B Z +B Z +A Z +B Z +C Y +B X +B Y +A X +A X +A Z +B X +B Y +C X +B Z +B X +B X +B X +B Z +B X +B X +C Y +C X +A X +B X +B Y +B X +B X +A Y +A X +B X +A X +B X +A Z +B X +C Y +C Y +A Y +B Z +C Y +C Y +C X +C Y +C Z +C X +B X +B X +B X +B Y +B X +A Y +C Y +B X +B X +A Z +B X +B X +B X +C Z +B Y +A Z +C Z +B X +B Z +A X +B X +B Z +B X +B X +B Z +A Y +B Z +A X +A X +B X +B X +B X +B X +A Y +A Z +B X +B Z +B Z +B Z +B X +B X +B Y +A Y +B X +C Y +B Z +B Y +B Z +B X +C Y +B Z +A X +B X +A X +B Z +B Y +B X +B Z +C Y +A Y +B X +C Y +C Y +A X +A X +A X +A X +B X +B X +A Y +A Z +B Y +B Z +B X +B X +B X +B Y +B Y +A X +B Y +B X +B Z +B X +B Z +B X +A X +B X +B X +B Y +B X +B Z +B Z +B X +B X +B X +B X +B Z +B X +B Z +A Z +B X +B X +B X +B Y +A X +B Z +A X +C Y +B Y +B Z +C X +C X +B Z +B Z +C X +A X +B X +A X +B X +B X +A Z +B X +A Y +A X +A X +B Y +A Y +A Y +C X +A X +B X +B Y +B Y +A Y +A X +C Y +A Y +B Z +B X +B Y +B Z +A Y +A Y +B Z +A X +C X +A Z +B X +B X +B X +B X +A X +A Y +B X +B X +B Z +A Y +A Y +C Z +B Z +B Y +A Y +A X +C X +A Y +B X +C X +A X +A Z +B X +A X +B X +B Z +C X +B X +A Y +B X +B Z +B X +B X +B X +C X +B X +C Y +B Z +B Z +B X +B X +B Z +C X +B X +B X +A Z +B X +A Y +B X +B Y +B Z +A X +A Z +A X +B X +B Z +B Z +B X +A Y +B Z +B X +C Y +A X +A Y +A Y +B Z +B X +A X +A Y +C X +A Y +A X +B X +B X +A X +C X +B Z +A X +B Y +B X +A X +C Z +C X +B Z +A X +B X +B Y +B X +B X +A Y +B Y +A X +A X +A Z +B X +A Z +A X +B X +A X +B Z +A X +A X +A X +B X +A Y +B X +B Z +C Z +B X +A X +B X +C Z +B X +B Z +A X +C X +B X +B X +A X +B X +B Z +A X +C X +B Z +B X +B X +B X +B X +B X +A Y +C Y +B Z +C Z +B X +A X +A X +A Y +B X +B X +C Y +B X +C Z +A X +B X +A Y +B X +B X +A X +C X +B X +C Y +B X +C Y +A X +B X +B Y +C Y +B Z +B X +A X +B X +B X +B Y +A X +B X +A Z +A Y +A X +A Z +B X +A Y +C Y +B Z +C Y +B X +B X +A Y +C X +C Z +B Z +B X +B X +A Y +B X +B Y +A X +A X +B X +B Z +A Y +A Y +A Y +B X +B X +C X +B Y +B X +A Y +A X +C X +B X +B Z +A Z +B Z +A Y +B Z +A X +B X +B X +B X +B Y +C Z +B Y +B X +A X +B X +A X +A Z +B Z +B X +B X +B X +C X +C Z +B Z +A X +B X +B X +A Y +B X +B Z +A X +B X +A X +A X +C Y +B Z +A X +A X +B Y +B X +A Y +B Y +C X +B Z +A X +A Z +B X +B X +A X +B X +A Y +A X +C X +B X +A X +C X +B Z +B X +A X +A Z +B X +B X +B Z +B X +B Z +C X +B Z +A X +A X +B X +B X +B Y +B X +B X +B Z +A Y +A X +C X +A X +B X +A Z +B X +A X +A X +B X +A X +B X +B X +A Y +A Y +A X +B X +B Z +C X +A X +B X +B X +B Z +B X +B X +A Z +B Z +B Z +B X +B Y +C X +B Z +A X +B X +B X +B Z +A Y +B X +B X +B X +B X +B X +C X +C Y +A Z +B X +C Y +A Y +C X +B X +B X +B Z +B X +B X +A X +A X +A Z +C Y +B X +B X +A Y +B Z +B Z +A X +A Z +C X +B X +B X +B X +B X +A X +C X +B Z +B X +A X +A X +A Y +B X +B X +A Z +C X +B X +A X +B Z +A X +B Y +B X +B X +A Y +C Y +B Z +A X +A Z +A Y +C Y +B X +C X +B X +B Y +B X +B Z +A X +C Y +A Y +B Z +B X +A X +C Z +B X +B Z +A X +C Y +B Y +B X +B X +A Y +B X +B Z +B X +B Z +B X +B Z +A Y +A X +B X +B X +A Y +C X +A X +C X +B X +B X +B X +A X +B Z +B Z +C Z +B Z +A X +A X +B Z +C X +A Z +A Y +B Y +B X +A X +A Y +A X +A Z +B X +B X +B Z +B Z +A Y +B X +B X +B Z +B X +A X +C X +B X +B X +B Y +A X +B X +B X +C Z +B X +B Z +B X +B Y +B X +B X +A X +A Y +A Y +B X +A X +A Z +B Z +B Z +B X +B X +B Z +B X +A Z +B X +A X +C X +B X +B X +B Z +B X +A X +B Z +B X +B Z +C Y +B X +B X +B X +B Z +C X +B X +B X +B Y +B Z +B X +C Y +A Y +C X +A X +B X +A X +B Z +B X +B X +A Y +C Z +A X +B Y +A X +B Z +B X +C Z +B X +C Z +A X +B X +A X +B X +A Y +B X +B Z +B X +B Z +C Z +B X +B X +A Z +A X +A X +B X +A X +B X +B X +B X +B X +A X +B Z +B X +A X +B Z +C Y +C Z +A X +B X +B X +B Z +B Z +A X +A Y +B X +A Y +B X +B X +C X +B Z +B Y +B Z +B Z +A Y +C X +B Y +B X +B X +A Z +B X +B Y +C X +B Y +C Y +B X +B X +C Y +A Z +C X +B X +C X +A Y +B X +C Z +B Z +B X +B Y +A Y +A X +B X +C Y +C X +A X +B X +B X +A X +B X +B X +C X +C Y +A Z +C X +A X +C X +B X +A Y +B X +A Y +C X +B X +C Z +C X +B Z +B X +B X +A X +A X +A Y +B Y +B Y +A Y +C Z +A Y +A X +B Z +B X +B X +C X +B X +C X +A Y +B Z +B X +A Y +A Y +C X +A Y +B Z +B Z +A X +B X +A Y +B Y +B X +A Z +B X +B X +B Z +C X +B X +C X +B X +B X +C X +A X +A Y +B X +A Y +C Z +C X +A Z +B X +B X +B X +A X +B X +B Y +B X +B Z +B X +A Y +B X +B X +B X +B X +B Y +B Y +B Z +C X +A Y +C X +B Y +B X +B Y +B X +A X +B Z +B Z +B X +A Z +C X +A X +B Z +B Y +A Y +B X +B X +B X +A X +B X +A Y +A X +B X +B Z +B X +A X +A Y +B X +B X +A X +B Z +A Z +A X +A Y +C X +A Z +B X +B X +A X +B Z +B Z +A X +A Y +B X +B Z +B X +A Y +B Y +A Y +B X +B X +A X +B X +A X +B X +C Z +A X +B X +C Z +A X +A X +B X +A X +A X +C Z +B Z +B X +B Z +A X +B Z +B X +B X +B X +A Z +B X +B X +B Z +A X +A Y +B X +A X +C X +A Y +A X +B X +B X +B Y +A Y +B X +A Y +A Z +B Z +B Z +B Z +B X +B X +A Y +A Z +B X +B X +B X +B X +B X +A Z +A Z +B X +B X +B X +B X +A X +B X +A X +B X +B Z +C X +A X +B X +C Z +B X +B X +B X +A X +A Z +B Z +C X +A X +B X +C X +B X +A X +C Z +A Z +A Y +B X +C X +B X +C X +B X +B Y +B Z +A X +B X +B X +A X +A Z +B Z diff --git a/day02.k b/day02.k new file mode 100644 index 0000000..7741b09 --- /dev/null +++ b/day02.k @@ -0,0 +1,3 @@ +(a;x;b):+-"A X"-/:0:"day02" +c:(b;3!a+b+2) ++/'1+c+3*3!1+c-\:a diff --git a/day02.mew b/day02.mew new file mode 100644 index 0000000..d274993 --- /dev/null +++ b/day02.mew @@ -0,0 +1,7 @@ +(op=> (lines "day02") + (gmap (match-fun ("A X" '(4 3)) ("A Y" '(8 4)) ("A Z" '(3 8)) + ("B X" '(1 1)) ("B Y" '(5 5)) ("B Z" '(9 9)) + ("C X" '(7 2)) ("C Y" '(2 6)) ("C Z" '(6 7))) _) + ,(inject (op* map +)) + unlist + prn) diff --git a/day02.rkt b/day02.rkt new file mode 100644 index 0000000..d8fd4c0 --- /dev/null +++ b/day02.rkt @@ -0,0 +1,43 @@ +#lang racket + +(define/match (translate move) + [((or "A" "X")) 'rock] + [((or "B" "Y")) 'paper] + [((or "C" "Z")) 'scissors]) + +(define/match (win-score p1 p2) ; for p2 + [(draw draw) 3] + [('rock 'paper) 6] + [('paper 'rock) 0] + [('rock 'scissors) 0] + [('scissors 'rock) 6] + [('rock 'paper) 0] + [('paper 'scissors) 6] + [('scissors 'paper) 0]) + +(define/match (shape-score p) + [('rock) 1] + [('paper) 2] + [('scissors) 3]) + +(define (score p1 p2) + (+ (shape-score p2) (win-score p1 p2))) + +(for/sum ([line (file->lines "day02")]) + (apply score (map translate (string-split line)))) +;; 10595 + +(define/match (correct-move p1 p2) + [(p1 "Y") (list p1 p1)] ; draw + [('rock "X") (list p1 'scissors)] ; lose + [('paper "X") (list p1 'rock)] ; lose + [('scissors "X") (list p1 'paper)] ; lose + [('rock "Z") (list p1 'paper)] ; win + [('paper "Z") (list p1 'scissors)] ; win + [('scissors "Z") (list p1 'rock)] ; win + ) + +(for/sum ([line (file->lines "day02")]) + (match-let ([(list p1 p2) (string-split line)]) + (apply score (correct-move (translate p1) p2)))) +;; 9541 diff --git a/day02.zig b/day02.zig new file mode 100644 index 0000000..7278131 --- /dev/null +++ b/day02.zig @@ -0,0 +1,27 @@ +// hat tip to https://gitlab.cs.washington.edu/fidelp/advent-of-code-2022/-/blob/main/advent-2022-02-rough.fs + +const std = @import("std"); +const data = @embedFile("day02"); + +pub fn main() !void { + var lines = std.mem.split(u8, data, "\n"); + + var part1: i32 = 0; + var part2: i32 = 0; + + while (lines.next()) |line| { + if (line.len == 0) + break; + + var p1: i32 = line[0] - 'A'; + var p2: i32 = line[2] - 'X'; + + part1 += 3 * @rem(p2 - p1 + 4, 3) + (p2 + 1); + + p2 = @rem(p1 + p2 + 2, 3); + + part2 += 3 * @rem(p2 - p1 + 4, 3) + (p2 + 1); + } + + std.debug.print("{} {}\n", .{ part1, part2 }); +} |