diff --git a/2/advanced.nix b/2/advanced.nix new file mode 100644 index 0000000..d1da5e6 --- /dev/null +++ b/2/advanced.nix @@ -0,0 +1,32 @@ +with import ; + +let + input = fileContents ./input.txt; + + splitStr = pattern: flip pipe [ + (strings.split pattern) + (filter isString) + ]; + + score = myAction: opponentShape: { + X.A = 0 + 3; + X.B = 0 + 1; + X.C = 0 + 2; + Y.A = 3 + 1; + Y.B = 3 + 2; + Y.C = 3 + 3; + Z.A = 6 + 2; + Z.B = 6 + 3; + Z.C = 6 + 1; + }.${myAction}.${opponentShape}; +in + +pipe input [ + (splitStr "\n") + (map (flip pipe [ + (splitStr " ") + elemAt + (get: score (get 1) (get 0)) + ])) + (foldl' add 0) +] diff --git a/2/basic.nix b/2/basic.nix new file mode 100644 index 0000000..7a346ab --- /dev/null +++ b/2/basic.nix @@ -0,0 +1,32 @@ +with import ; + +let + input = fileContents ./input.txt; + + splitStr = pattern: flip pipe [ + (strings.split pattern) + (filter isString) + ]; + + score = myShape: opponentShape: { + X.A = 3 + 1; + X.B = 0 + 1; + X.C = 6 + 1; + Y.A = 6 + 2; + Y.B = 3 + 2; + Y.C = 0 + 2; + Z.A = 0 + 3; + Z.B = 6 + 3; + Z.C = 3 + 3; + }.${myShape}.${opponentShape}; +in + +pipe input [ + (splitStr "\n") + (map (flip pipe [ + (splitStr " ") + elemAt + (get: score (get 1) (get 0)) + ])) + (foldl' add 0) +] diff --git a/2/input.txt b/2/input.txt new file mode 100644 index 0000000..60a9320 --- /dev/null +++ b/2/input.txt @@ -0,0 +1,2500 @@ +A Y +C Y +C X +A Y +C X +C Y +B Z +A Y +A Y +C Z +A Y +A Y +A Y +C Y +A Y +A Y +A Y +A X +B X +A X +A Y +C Y +C X +A Y +A Y +C Y +A X +A Y +B Z +A Y +C X +A Y +A Y +C Z +C Y +C X +A Y +A Z +A Y +A Y +A Y +A Y +C Y +C Y +B Z +B Z +C Y +B X +A Y +A Y +A Y +C Z +A Y +C X +A Z +C Y +A Y +A Y +A Y +A Y +A Y +C X +A Y +C Y +A Y +C Y +A Y +A X +C Y +A X +A Y +C Y +C Y +A Y +C X +A Y +A Y +A Y +C X +A Y +A Y +A Y +C X +A Y +C X +A Y +A Y +C Z +A Y +A Y +A Y +C X +A Y +A X +C Y +A X +B Z +C Y +A Y +A Y +B Z +C Y +A Y +A Z +C Z +C Y +B Z +A Y +A Y +C Y +A Y +C X +A Y +A Y +C X +C X +C Y +A Y +A Y +C X +A Y +A Y +A Y +A Y +C X +C Y +A Y +A Y +A Y +C Z +A Y +C Y +A Y +C X +C Z +A Y +B X +A Y +C X +A Y +B X +A Y +C Z +A Y +A Y +A Y +A X +A Y +A Y +A Y +C Y +A Y +A Y +A Y +A Y +C Y +C X +A Y +A Y +A Y +A Y +C Y +A Y +A Y +A Y +C Y +B X +A Y +A Y +A Y +A Y +A Y +A X +C Y +A Y +C X +A X +B Y +A Y +C X +A Y +C Y +C Y +A Z +C Z +C X +B X +C Y +A Y +C Z +A Z +A Y +C X +A Y +A Y +C X +A Y +B X +C X +A Z +C Y +A Y +C X +A Y +A Y +A Y +B Z +C Z +A Y +A X +C X +A Y +A Y +C Y +A Y +A Y +A X +A X +C Y +C X +B X +A Y +A Y +A Y +A Y +B Y +A Y +C Y +A Y +A X +B Z +A X +C Z +C X +C X +C Y +C X +C X +A X +C X +A Y +C Y +A X +C X +B Z +C Z +A Y +C X +B Y +A Z +C Y +C X +A Y +A Y +A Y +C X +A Y +A Y +A Y +A X +B Y +C Y +C X +B Z +A Y +A Y +B Y +A Y +A Y +A Y +C X +A Y +A Y +A Y +A Y +A Y +A Y +A Y +A Y +A Y +C Y +C Y +C Z +A Y +C Y +A Y +A Y +A X +A X +A Y +A Y +C Y +A Y +A X +A Y +A Y +C X +A Y +C X +C X +C Y +B Y +A Y +C X +A Y +A Y +A X +A Y +A Y +A X +A Y +B Z +C Y +A Y +A Y +A Y +C Y +C Z +A Y +A Y +A Y +A Y +A Y +C Y +C Y +C Y +C Y +C Y +A X +C Y +A Y +A Y +A Y +A Y +C X +A Y +C Z +A Y +B Y +A X +A Y +A Y +A Y +C Y +C Y +A X +C Y +A Y +A Y +A Y +B Z +A X +A Y +A Y +A Z +C Y +A Y +C X +C Y +C Y +C Z +B Y +C X +C X +A Z +C Y +A Y +A Z +A X +A Z +C Y +C X +B Z +A X +C Y +A Y +C Y +B Z +A Y +A Y +C X +C X +C X +A Y +B X +C X +C Y +C X +A X +A X +B X +A Y +A Y +A Y +C X +A Y +C Y +C X +A Y +B Z +A Y +A Y +A Y +B X +A Y +A Y +A Y +C Y +A Y +C X +C Y +C Y +A Y +B Z +C Y +C X +C Y +C X +C X +C Y +A Y +A Z +A Y +A Y +A Y +A Y +C Z +A Y +A Y +C Y +A Y +A X +C Z +C Y +C X +C X +A Y +A Z +A Z +B Y +A X +C X +C X +A Y +A Y +A Y +C Z +C X +C X +C X +A Y +C Z +A Z +C X +C Y +A X +C X +C X +A Y +C Y +C Y +B X +B Z +A Y +A Y +A Y +B Z +C Y +A Y +B Z +A X +C Y +C Y +B X +C X +B Y +A Y +B X +C Z +A Y +A Z +C Z +C Z +A Y +A X +A Y +A X +C Y +A Y +A Y +A Y +C X +C X +C X +A Y +A Y +A Y +A Y +A Y +C Y +A Y +C Y +A Z +C X +C Y +A Y +A Y +B Y +C Y +A Y +C Z +C Z +A Y +B Y +A Y +A Y +A X +C Y +A Y +A Y +A Y +C Z +C Y +C X +A Y +A Y +B Z +C Y +C X +C Z +A Y +C Y +A Y +A Y +C X +C Y +C Y +A Y +C Y +C X +C Y +A Y +A Y +A Y +A Z +B Z +A Y +A Y +A X +C Z +C X +A Y +A Y +A Y +C X +C Y +B Z +C X +A Y +A Y +A Y +C Y +A Y +C X +C Z +C X +A Y +A X +A Y +C Z +C X +B Y +A Y +A X +A Y +B Y +A Y +A Y +C Y +C Z +C Y +C Y +C X +A Y +A Y +A X +A Y +A Y +A Z +A X +C Y +A Y +C Y +C Y +C Z +C Y +C Y +A Z +A Y +C Z +C Y +C Y +C Y +B X +C Y +A Y +C X +A Y +B X +C Z +C Z +C Y +A Y +C X +A Y +A Y +A Y +A Y +C Z +A Z +A X +C Y +C X +A Y +A Y +C X +C Y +C Z +C X +C Y +A X +A Y +A Y +B X +A Y +A X +C X +A Y +A Y +A Y +B Z +A Z +B Z +C X +B Z +A Y +C X +A Y +C X +A Y +A Y +C Y +A Y +A Y +B X +A Y +C Y +A Y +A Y +A Y +C Y +A Y +A Y +A Y +B Y +A Y +C Y +A Y +A Y +A Y +A Y +C Y +A X +B X +A Y +B Z +C X +A X +B X +C Y +A Y +B X +C Y +A Y +B X +A Y +C X +B X +A Y +A Y +A Y +A Y +C X +C X +A Y +B X +C Y +A Y +A Y +A Y +A Y +B X +A Y +B Z +C X +A Y +B Z +C X +C Z +C Z +B X +C Y +A Y +A Y +A Y +A Y +A Y +A Y +C Y +A Y +A Y +A X +A X +C X +A Y +C Z +C Y +A Y +C X +A Z +A Z +A Y +C Z +A Y +A Y +A Y +C Y +A X +C X +C Z +A Y +A Y +C X +B X +A Y +A Z +C Y +A Z +A Y +A Y +A Y +A Y +A Y +B X +A Y +C Y +C X +A Y +A Y +C Z +C Z +C Y +A Y +B Z +A Y +A Y +A Y +A Y +A Y +C X +A Z +A Y +C Y +A Z +C X +A Y +C X +A Y +A Y +C Z +C Y +A Y +A Z +C X +C X +A Y +B Z +A Y +B X +C Y +C X +C Z +A Y +A X +C X +C Z +C Y +C X +A Y +A Y +A Y +A Y +A Y +A Y +C Y +A Y +C Y +A Y +C Y +B Y +A Y +A Y +A Y +A Y +B Z +C Y +A Y +C Y +A X +C Y +A Y +B Y +C Y +C X +C X +A Y +A Y +A Y +C X +A X +A Y +A X +C Y +A Y +A Y +C Y +C Y +A Z +A Y +A Y +B X +A Z +B X +A Y +C Y +A X +C Y +C Z +B Z +A Y +A Y +C Y +A Y +C Z +A Y +A X +A Y +C Y +A Y +A Y +A Y +A Y +A Y +A Y +A Y +A Y +C X +C Y +A Y +A Z +A Y +C X +A Y +C Z +A Y +C X +A X +A Y +C Y +A Y +C X +A X +A Y +A Y +A Y +C Y +A Y +C Y +A Y +B Y +C Y +C Y +A Y +A Y +A Y +A Y +C Z +A Y +C Z +A Y +C Y +B X +A X +C Y +C Z +A X +A Z +A Y +A X +C Z +C Y +A Z +C Y +A X +A Y +A Y +A X +C Z +A X +A Z +C Y +A Y +C Y +A Z +B Z +A Y +C X +C X +A Y +A Y +A X +A Y +A Y +A Y +C X +A Y +B X +A Y +C X +A Y +C Y +A Y +C Y +C Z +C Y +C Z +A Z +A Y +C Y +C Z +C Z +A Y +A Y +C Y +A X +A Y +C Y +A Y +A Y +A Y +A X +A Y +B Z +C Y +C X +A Y +C X +B X +C Y +C Y +A Y +C Y +C Y +A X +A Y +A X +A Y +A Z +C Z +B X +A Y +C X +A Y +C Z +A Y +C Y +A Z +A Y +A Y +A Y +C Y +C Y +A Y +A Y +C Y +A Y +C Y +C Y +A X +A Y +C X +C Z +A Y +A Y +A Y +C X +C X +C Y +C Y +C Z +A X +A Y +C Y +C Z +A Y +B Y +A Y +C Z +C Z +A Y +A Y +A Y +B Z +A Y +A Z +A X +C X +C X +C Z +A Y +C Z +A Z +C Y +C Z +C X +C Y +C X +A Y +C Y +A Z +A Y +A Y +A Y +A Y +C Y +A X +C X +A Y +A Y +C Z +B Z +A Y +A Y +C X +A Y +C Y +C Y +B Z +A Y +C Y +A Y +C X +C X +A Y +C Y +A X +C X +A Y +C Z +A Y +C X +A Y +C X +A Y +C Y +A Y +C Z +A Y +C Z +A Y +A Y +A Y +C Y +A Y +A X +A Z +A Y +C Y +C Y +A Y +A Y +B Z +A X +A X +C X +C X +C Z +C Z +A Y +A Y +A Y +A X +A X +A Y +A Z +C Y +C Y +C X +A Y +C X +B X +A X +A Z +A Y +B X +A Y +B Z +B Z +A Y +B X +C Y +A Y +A Y +C Y +C Y +A Y +A Y +A Z +A Y +C Z +B X +A Y +C Y +C Y +A Y +B X +C X +C Y +A X +C X +A Y +A X +A Y +A Y +B Z +A X +C Y +A Y +A Z +B Y +A Y +B X +A Z +C Y +C Z +C Z +C Z +C Y +A Y +C Y +C Y +B Y +A Y +C Z +B Y +A Y +A Y +A Y +A X +B Z +A Y +C Z +A Y +A X +C Z +C X +A Y +A Y +A Y +B Z +B Z +A Y +C Z +A Y +A Y +A Y +C Y +C Z +C X +A Y +B Z +C Y +B Z +C X +C X +A Y +A X +A X +B Z +C Y +C Y +C X +A Y +C X +C X +A Y +C X +C Z +A X +C Y +C Y +C Y +A Y +A X +C Y +A Y +A Y +C Y +C X +C Y +B X +C X +A Z +A X +A Y +C Y +A Y +A X +C Y +A Y +A X +C X +A X +C X +C Y +C Y +A Y +C X +A Y +A X +C Y +A Y +C Z +A Z +A Y +A Y +A Y +A Z +A Y +B X +B Z +C X +A Z +C X +A Y +A Z +A X +C Y +C Y +B Z +A Z +A Y +A Y +A Y +B X +C Y +A Y +A X +A Y +B Z +B Z +A Y +A Y +A Y +C X +C X +C X +C Y +A Y +C Y +C Y +A Y +A Y +A Y +A Y +C Y +A Y +C X +A Y +C X +C Y +C Y +C Z +B X +A Y +C Y +A Y +C Y +A Y +A Y +A Y +A Y +B Z +C Z +C Y +A X +C Y +A Y +C Y +C Y +A Y +B Z +C Y +B X +B X +A Y +A Y +C Y +C Y +B X +A X +C Y +C X +C Y +A Y +A Y +C X +A X +A Z +A Y +A Z +A Y +B X +A X +C X +A X +C X +C Z +A Y +C X +C Y +C X +C Y +A Y +C Y +A Y +A Y +C Y +C Z +C X +A Y +A Y +A X +C Y +B Z +A Y +C Y +B Z +C Y +A Y +C Y +A X +A X +A Y +B X +A Y +C X +C Y +A Y +A Y +A Y +C X +C Z +A Y +C Y +A Z +C Y +A Y +C Y +A Y +C Z +C Y +C X +A Y +C X +A Z +B Z +A Y +A X +A Y +A Y +A X +A Y +A Y +A Y +A Y +C Y +C X +A Y +A Y +A Y +A Y +A Y +C Y +C Y +C Y +A X +A Z +A Y +C X +A Y +A Y +C Y +B Y +C Y +A X +A Y +A Y +A Y +C X +A X +C Y +C Z +A Y +B Z +A Z +C Y +A Y +A Y +B Z +A X +A Y +C Y +A Y +A X +B X +C Z +B X +A Y +A Y +C Y +A Y +A Z +A Y +A Y +A Y +C X +A Y +A Z +A Z +A Y +C X +A Y +C Z +C Y +B X +C Y +A Y +C Z +B Z +A Y +C Y +A Z +A Y +C X +C Y +A X +A Y +C Z +A Y +A Y +A Y +A Y +B Z +A Z +C Z +A X +A Y +A Y +A Y +A Y +A Y +C Y +C Y +A Y +C X +A Y +A Y +A X +A X +A Y +C Y +C Z +A Z +A Y +A X +B X +B X +B Z +C X +C Y +A Y +A Y +A Y +C Z +A Y +A Y +A Y +C Y +C Y +B Y +C Z +B Z +C Y +B Z +A Y +A X +C X +A X +C X +B Y +A Y +A Z +A Y +A X +A Y +A Y +C X +A Y +A Y +C X +C X +A Y +C X +C Z +C X +B Z +B Z +B Z +C Y +B Z +C Y +C Z +B Y +A Y +C Z +A Y +C X +C X +B Z +B Y +A Y +A Z +C Y +C X +C Y +A Z +C X +C X +C X +A Y +A Y +C Y +A Y +C Y +C Y +A Y +C Y +C Z +A Y +B Y +C Y +C X +A Y +A Y +A X +A Y +C Y +B Z +A Y +A Y +A Y +A Y +C X +B X +A Y +A Y +A Y +A Y +B X +A Y +A Y +A X +C Y +A Y +A Y +C X +A Y +A Y +A Y +C X +B Y +A Z +C Y +C X +A Y +A Z +B X +A Y +A Y +A X +C Y +C Y +C Y +A Y +C Z +A Y +A Y +C Y +B Z +A Y +A Y +C X +A X +A Y +A Y +A Y +B Z +C Y +A Y +C Y +C Y +A Y +A Y +C Y +C Y +A Y +C Y +A Y +B X +C Y +A X +A Z +A Y +A Y +C Y +C Y +A Y +C Z +A Z +A Y +A Y +C Y +C Y +C X +C Y +A Y +C X +C Y +A Y +C X +C Y +C Y +A Y +A Y +A Y +C X +C Y +A Y +A Y +C Y +A Y +C Y +A Y +A Y +C Y +C Y +C Y +A Z +A Y +C Y +C Y +A Y +A X +C X +A Y +C Y +B X +C Y +A Y +A Y +C Y +C Y +A Y +A Y +A Y +B Z +A Y +C Y +A Y +A Y +C X +C Y +A Y +A Y +C Y +C Y +C Y +C Z +A Y +A Y +C X +A Y +C Z +A X +C X +B X +A Y +C Y +A Y +A Y +A X +A Y +A Z +B Y +A X +A Y +C Y +C Y +C X +A Y +C Y +A Y +C Y +A Y +C X +C X +A Y +C Y +C Z +C X +B X +A Y +B X +A Y +A Y +C Y +A Y +C Y +A Y +A Y +A Y +A Y +A X +A Z +A Y +B X +A Y +A Y +C X +A Y +C Z +A Y +A Y +C Y +C X +C X +A Y +A Y +B X +C X +A Y +C Y +A Y +C Y +A Y +B Z +A Y +C Y +A Y +A Y +A Y +C Z +A Y +A X +C X +A X +A Y +A Y +A Y +C X +C Y +C Y +C Y +A Y +A Y +A Z +C X +A Y +A Y +A Y +C Y +C Y +A X +A Y +C Y +B Y +A Y +A Z +C X +A Y +A Z +A X +A Y +A Y +A Y +C Y +A Y +A Y +A X +C Y +A X +B X +C X +C Y +A Y +A Y +A Y +C Y +A Y +A Y +A Y +A X +C X +A Y +A Y +A Y +C Y +A Y +B Y +C Y +C Y +C Y +C Y +A Y +A Y +C Y +C Y +A Y +C Y +C Y +A Y +C Y +C X +C X +C Y +A X +C X +C X +A Z +C Y +C Z +A Y +B Z +A Y +A Y +B X +C Y +A Y +C Z +A Y +C Z +A Y +A Y +A X +C Y +C X +C X +C Y +C X +A Y +A Y +C X +A Y +A Z +B X +C X +C Y +B X +B Z +A Y +A Y +A Y +C Y +A X +C Y +C Y +C X +A Y +C X +A Y +A X +C X +A Y +A Y +A X +C Y +B Y +A Y +A X +A Y +C Y +A X +C Y +A Z +A Y +A Y +C Z +A Z +C Y +A Y +C Y +A Y +A Z +C Y +C Y +B Z +B Y +C X +C X +B Z +A Y +A Y +A Y +A Y +A Y +A Y +C X +A Y +C Y +A Y +B Y +A Y +A Y +B X +A X +C X +C Y +A Y +C Y +A Y +A Y +A Y +A Y +C X +B Z +A Z +C Y +B Y +C X +A Y +A X +A Y +A Y +C Y +C Y +A Y +A Y +C Y +B Z +C Y +A X +C Y +A Z +A Y +A Y +A Y +B X +A Y +C Y +C X +B Y +C Y +A Y +B Y +A Y +A Y +C X +C Y +C Y +A Y +A Y +C X +C X +C Y +A Y +C X +C X +B X +C Y +A Y +C Y +B Z +A Y +B X +C Y +C X +A X +A Y +C Y +A Y +A Y +A Y +C X +A Y +C X +C X +A Y +C Y +A Y +B Z +C X +C Y +C Y +B X +A Y +C Y +A X +A X +B Z +C X +A Y +C Y +A Y +A X +C Y +A Y +A Y +A X +A X +A Z +C Z +B Y +C Y +C X +A Y +A Y +C Y +A Y +C Z +C X +C X +C Z +C Y +C X +C X +A Y +C Z +B X +C Z +A Y +A Y +C Y +C X +C Z +C X +C X +C Y +C X +C Y +A Y +A X +A Y +C X +A Y +A Y +A Y +A Y +A Z +C X +A X +B X +A Y +A Y +C Z +C Y +A Y +A Y +C Y +C Y +C Y +A Y +A Y +A Y +B X +A Y +B Z +A Z +A X +A X +C Y +A Y +C Z +A Y +A Y +C Y +A Y +A X +C Y +C Y +A X +A Y +C Y +A Y +C X +A Y +C X +A X +A Y +A Y +A Y +B X +C Z +A Z +B Y +A Y +B Z +B Z +A Y +C Z +B Z +A Y +A Y +A Y +C Y +B X +A Y +C X +A Y +C Z +C X +B Y +C X +C X +B X +C Y +B Z +A X +A Y +B Y +C Z +A Y +A Z +A Y +C X +A Y +A Y +C Y +C X +B Y +B X +C Y +B X +C Y +A X +A Z +A X +C X +B Z +C Y +C X +A Y +A Y +A X +B X +C X +A Y +B Y +C Z +A Y +C Y +A Y +A Y +A Y +B X +A Y +C X +A Y +A Y +A Y +A X +C X +A X +C Z +C Y +A Y +A Y +C Y +A X +C Z +A Y +A Y +A Y +B Y +C Y +C Y +C Z +C Z +C Z +A Y +C Y +A Y +A Y +A Y +A Y +A Y +B Y +C Y +C Y +A X +C Z +C Y +A Y +A Y +A Y +C X +A Z +A Y +A Y +A X +A Z +C X +B Y +A Y +A Y +C Y +B X +A Y +A Y +C Y +C Y +C Z +A X +C Y +C X +C X +C Z +A X +B Z +C X +C X +C Y +C X +C Z +C X +C X +B Z +B Z +A Y +B Z +A Y +A Y +A Y +B X +C X +A Y +C Z +A Z +A X +A Y +B Y +B X +B Z +A Y +A X +A X +A Y +C X +B X +A Y +C Y +A Y +A Y +C X +C Y +C X +C Z +B X +C X +C Z +A Z +A X +A Y +A Y +A Y +C Z +A Y +C Y +C X +A Y +A Y +C X +C X +A Y +C Y +C Z +C Y +C X +B Y +C Y +C X +A Y +B X +C X +A Y +A Y +C Y +C Z +A Y +A Z +B Y +A Y +B X +C Y +C Z +B X +B X +C X +A Y +B Z +A Y +A Y +A Y +A Y +C X +A Y +A Y +C Z +C X +B Y +C Y +C Y +A Y +C X +B Z +A Z +C Y +A Y +B Y +B X +B Y +A Z +C Y +C Z +A Y +C Z +C X +A Y +A Z +C Z +A Y +A Y +A Y +C X +A Y +C Y +B Z +A Y +C X +A X +A Y +C Y +C Z +C Y +A Y +C Z +A Z +A Y +C Y +A Y +C X +A Y +A Y +B Z +A Y +A Y +A Y +C Y +C Y +C Y +C X +C Y +C X +B Z +A Y +A Y +A Z +A Z +A Y +A Z +A Y +A Y +A X +C Z +A Y +A Y +A Y +C X +C Y +C X +A Y +A Y +A Y +C Y +C X +B Y +A Y +C Y +C Y +A Z +C Z +A Y +A X +A Y +A Y +B X +A Y +C Y +A X +C Y +A Y +A Y +A X +C Y +A X +B X +C Y +A Y +A Y +A Y +A Y +C Z +C Y +C X +A X +A Y +C X +C Y +A X +A X +B Y +B Z +A Y +C Z +A X +C Y +A X +A Y +C Y +C X +C Y +C X +A Y +A X +A Y +A X +C Z +A X +A Y +C Y +C X +C Y +C X +A Y +C Y +C X +A Y +A Y +C Y +C Y +A Y +A Z +C Y +A Z +A Y +C Y +A Y +A Y +C Y +A Y +B X +C X +C Y +C X +A Y +B Y +C Z +A Y +C X +A Y