diff --git a/day02/default.nix b/day02/default.nix new file mode 100644 index 0000000..97ee6f3 --- /dev/null +++ b/day02/default.nix @@ -0,0 +1,49 @@ +{ pkgs, lib, ... }: + +with lib; + +let + guide = pipe (builtins.readFile ./input.txt) [ + (splitString "\n") + (map (splitString " ")) + (map (xs: { they = elemAt xs 0; you = elemAt xs 1; })) + ]; + + inherentValue = x: { A = 1; B = 2; C = 3; }.${x}; + comparativeValue = { they, you }: if they == you then 3 else + if (they == "A" && you == "B") + || (they == "B" && you == "C") + || (they == "C" && you == "A") then 6 else + 0; + score = match: comparativeValue match + inherentValue match.you; + + equalizeValueType = x: { X = "A"; Y = "B"; Z = "C"; }.${x}; + + answer1 = pipe guide [ + (map (match@{ you, ... }: match // { you = equalizeValueType you; })) + (map score) + (foldr add 0) + toString + ]; + + inherentValue2 = { they, you }: { + X = { A = 3; B = 1; C = 2; }; + Y = { A = 1; B = 2; C = 3; }; + Z = { A = 2; B = 3; C = 1; }; + }.${you}.${they}; + comparativeValue2 = x: { X = 0; Y = 3; Z = 6; }.${x}; + score2 = match: comparativeValue2 match.you + inherentValue2 match; + + answer2 = pipe guide [ + (map score2) + (foldr add 0) + toString + ]; + +in pkgs.writeText "answers" '' + Task1: + ${answer1} + + Task2: + ${answer2} +'' \ No newline at end of file diff --git a/day02/input.txt b/day02/input.txt new file mode 100644 index 0000000..26bb66a --- /dev/null +++ b/day02/input.txt @@ -0,0 +1,2500 @@ +A Z +A Y +B X +B X +C X +B X +A X +A X +C X +A X +A X +A Y +B X +A Y +C X +C X +A X +A Y +C X +B X +A X +B X +A X +A X +B Y +B Y +A X +A X +A X +A X +A X +A Y +A X +B X +B Y +A Y +C Z +C X +A X +A Y +A X +A X +A Y +A X +A Y +A X +B X +C X +A X +B X +A X +C X +A Y +B X +B X +A X +A X +C Y +B X +A X +C X +B X +B X +A X +A X +B X +A Y +C X +A Y +A X +A X +A Y +B X +A X +A X +A X +B Y +A X +A X +A Y +A X +A X +B Y +B Y +B X +C X +B Y +A X +C X +C X +A Y +A X +A Z +B X +C X +A Y +B X +A X +A X +A X +A Y +C X +A X +A Z +A X +A Y +B Y +A X +C X +B X +A Y +B Z +B X +C Y +B X +B Z +A Y +B X +C X +C Y +A X +A Y +A X +B X +A Y +B Y +A X +C Y +A Y +B Y +A X +B Y +B X +B Y +A X +B Y +A X +C Z +A X +C X +A Y +A X +C X +A X +A X +A X +C X +B Z +A X +B Y +B X +A Y +A X +A X +B Y +B Y +A Y +B X +A X +C Y +A X +C X +A X +A X +A X +A X +A X +C Z +C X +A Z +C Z +A X +A Y +B X +C X +B X +B Y +C X +B X +A X +A X +A X +A Y +B X +B Y +A X +C X +A X +A X +A X +A X +C Y +A Z +C X +A X +A Y +B X +A Y +A X +A Y +A X +A X +A X +A X +A Y +A X +B X +A X +A X +C Y +C Y +A X +C X +A X +A X +C X +C X +B Z +B X +B X +A X +A Y +B Y +A X +A X +C X +C X +C X +B X +C X +B Y +A X +B Y +B X +B X +A X +B Y +A Y +C X +B X +C X +A Y +B X +C X +A X +C X +A X +B Y +A X +A X +B Z +C X +B X +C X +B X +A X +A X +A X +A X +A X +C X +C X +A X +A Z +A Y +A X +A X +A X +A X +C Y +C Y +B Z +A X +A X +B X +B X +A Y +A X +B Y +A X +B Y +A X +C Y +C X +A Y +B Y +C X +A X +A X +A X +A Y +A X +A X +A X +B Y +B X +C X +C Y +A Y +A Z +B X +C X +B X +C X +A X +B Z +B Y +A X +C X +A Y +B X +B X +A Y +A X +A X +A Y +A X +B X +A X +A X +C Y +C Y +A Y +A Y +B Y +B Y +B Y +B X +A X +A Y +B Y +B X +A Y +A X +A Y +C X +C X +B Y +A Y +B Y +A Y +A X +B Y +B X +C X +A X +A X +A X +B Y +B X +A X +B Y +A Y +A X +C X +A X +B Y +A X +A X +B Y +A Y +A X +C Y +B Z +A Y +C X +A Y +A X +B Y +A X +B Y +B Y +B X +B X +A X +A X +C X +B Y +B X +C X +B Y +A X +A X +A X +A X +B Y +C X +B X +A X +A X +A Y +C Y +A Y +B X +A X +B X +A X +A Y +B Y +A X +C X +C X +A Y +B X +C Y +A Y +B X +A X +A Y +C X +A X +A X +B Y +A Y +B X +B Y +B Y +A X +A X +A X +B Y +A Y +A X +B X +A Y +A Y +B X +C Y +A X +A Y +A X +B X +A X +B X +C Z +A X +A X +B Y +A X +A X +A X +C Z +C X +A Z +C Y +B X +A Y +B X +A X +A Y +A X +C X +A X +A X +C Y +A Z +C Y +B Y +B X +B X +A Y +C X +B X +A Z +A X +A Z +C X +A X +C Z +C X +B Z +C Y +B Y +A X +B Y +A X +A X +C X +B X +A X +C Z +B Y +B Y +A Y +B Y +A X +A X +B Y +A X +A X +C Y +C X +A X +C Y +C X +B X +B X +A X +B Y +A Y +A X +B Y +B Y +B X +B X +A X +B X +B X +B Y +B Y +C X +B X +B X +A X +A X +A X +A X +A Y +C Y +A X +A Y +C Z +A Y +C X +A X +C Y +A X +A X +A Y +A Z +A Y +A Y +A X +A Y +A Z +C X +C Z +B X +A X +A X +B X +A X +A X +A X +C X +A X +A Y +A X +A X +A Y +C Z +C X +A X +A X +A Z +A X +C X +A Y +C X +A Y +C X +C X +A X +A X +A Y +B Y +C X +C X +B X +B Z +B X +B X +A X +C X +A Y +C X +A Z +B X +B Y +A Y +A Y +A X +A Y +A X +A X +A Y +A X +A X +B Z +A X +A X +A X +B Y +B Y +C Z +A Y +A Y +B Y +A X +B X +C X +C Y +C X +B X +C X +A Y +A X +A X +B X +C X +B X +A Y +B X +B Z +A Y +A X +A Y +B X +B Z +A X +A X +C X +A X +A Y +A X +B X +A X +A X +A Z +B X +B Y +C Y +C X +A Y +A X +B Y +C X +A X +C Y +A X +A Y +A Y +A X +A X +C X +C X +A Y +A Y +C X +A X +B X +C X +B Y +C Y +C X +B X +B Y +C X +B X +B Y +A X +A X +B X +A Y +A X +B X +A X +C Y +A X +B X +A Y +C Y +A X +A Y +A Z +C Z +A X +A X +C X +A X +B X +A X +C X +C X +A Y +A X +C Y +A Y +A X +B Y +A X +A Y +A X +C Z +C Z +C X +A X +A X +A X +A X +C X +A X +C X +B X +B X +A X +A Y +B Y +B X +B X +A Y +A Y +A X +A X +B Y +B X +A X +C X +B X +C X +B Y +B Z +B Y +A X +A X +A X +A X +A X +B Y +A X +C X +B Z +A X +C Y +A X +B X +C Y +A X +A Y +B X +A X +B Y +B X +A Y +C Y +C X +A Y +A X +A X +A X +C X +B X +C X +A Y +A X +A Y +C Z +C X +A X +A Y +B X +B X +B X +B X +A X +B X +A Z +B Y +A X +A X +A X +C Z +A Y +A Y +C X +C X +C Y +B Y +A Y +A X +A X +C Y +A X +C X +A X +A X +C Y +A Y +A X +C X +A X +A Y +C X +A Y +A X +A X +A X +B X +B X +A X +B Y +C Y +C X +A Y +B X +B X +B Z +C X +B Y +A Y +C Z +B X +C X +A X +A Y +B Y +B X +C Z +B X +A X +C X +C X +A X +A X +A Y +B Y +B X +A Y +C Y +B Y +B Y +A X +A Y +A X +B X +A Y +A X +A Y +A X +B Z +B X +A X +A Y +A X +B Y +A Y +A X +A X +C X +A X +A X +A X +A X +B Y +B X +A X +A X +C Y +C X +A Y +A X +B X +A X +B X +B X +B Y +A X +B X +B Y +A X +B X +C X +A X +A X +C Z +A X +B X +A X +B X +B X +B Y +A X +B Y +C Y +A X +C X +A X +B X +B Y +A X +C X +B X +A X +C Y +C X +B X +A X +B X +A Z +C Y +A X +A X +B X +A Y +B X +A X +A Y +B X +A X +C Y +A X +C X +B X +A X +C Y +C X +A X +B Y +B X +A Y +B X +A X +B X +A Y +B X +A X +A X +C X +A X +A X +A X +A X +C X +C X +B X +B Y +B X +B Z +A X +B X +B Y +B X +B X +A X +A Z +A Z +A X +B Y +A X +B X +B Y +A X +B Y +B X +A X +C X +C Y +A X +A X +B X +B X +B Y +A X +C X +B Y +A X +A Z +A X +C Y +A Y +B X +C X +C X +A X +B X +C X +A Z +A X +A X +B Y +C X +A X +A Y +C Z +B X +A Y +A X +A Z +C Y +A X +C X +A X +C Y +B X +A X +A X +B Y +A X +B X +B X +B X +C X +C X +A X +C Z +A X +C Y +A X +C Y +A Y +B Y +B X +B Y +B X +C Y +B Y +B Y +B X +B Y +A Y +A Y +C Z +A X +A X +A X +A Z +B X +B Y +B X +B Y +A X +C X +B X +A X +C Y +B X +C X +C Y +B Y +A X +B Y +B X +C X +B X +C X +B X +A X +C X +B Z +B Z +C X +A Y +B X +A Y +A X +B X +C Y +C X +A Y +C Y +B Z +B Y +B Y +B Y +B Z +B Y +A X +A X +A Y +B Y +B Y +A X +A Z +C X +A X +A Y +C X +A Y +A X +B X +A X +A X +C X +A X +A X +C Y +B Y +A Y +A X +A X +B Y +A X +B X +A X +A X +B X +B X +A X +B Y +A X +A Y +B Y +A Y +A X +C X +A Y +A X +C X +A X +A X +B X +C Y +C Y +B X +B Z +A X +A Y +A X +A X +C Z +A X +B X +A Z +A X +A X +A X +A X +A X +A X +C X +B X +B X +C X +A X +A X +A X +A X +A X +A X +B X +A X +C X +A Y +A X +A X +A X +A X +B X +B Y +A Y +A X +A X +C X +C X +A X +A X +C X +A X +A X +A X +A X +A X +A X +C X +A X +A X +A X +A X +B X +A X +A X +B Y +C Y +A X +A Y +C Y +A X +B X +B X +A X +A X +A X +B X +A X +A X +A X +A Y +A X +B Y +A Y +A X +A Y +A X +C X +A X +C Y +B X +B X +A X +A X +A X +A X +A X +C Y +A Z +A X +B X +B X +A X +A X +C Z +A X +B Z +B Y +C Y +A X +A X +C X +B X +B X +B X +C X +A X +A Y +B Y +C X +A X +B Y +A X +C Z +B X +A Y +A X +A X +C Y +A X +A X +C X +A X +B X +B Y +B Y +B X +A X +A Y +C X +A X +A X +A X +B X +C X +B Y +A X +A X +A Y +A X +A X +B X +C X +C X +A Y +B X +A X +A X +A X +B Y +A X +B X +A X +A X +A X +A Y +A X +A Z +C X +B Y +B X +A X +B X +C X +A X +A X +B X +A X +A X +A X +A X +B X +A X +C X +A Y +B X +C X +A X +B X +A X +B Y +A X +C Y +A X +C Y +C X +B Y +A Y +A X +A X +B X +A X +C X +A X +A Z +B X +A X +A X +A Y +A X +A X +C X +B Y +C Z +A X +A Y +B X +B X +A X +B Y +C X +A X +B X +A Y +B X +A X +A Y +A X +A X +C Y +B X +A Y +C X +C X +A Y +A Y +A X +B Z +A Y +C X +C X +C Y +A Y +B X +B Z +A X +B Y +A X +A X +B X +A Y +C X +C Y +A X +B Y +A Y +A X +B Z +B Y +A X +B X +A X +A X +B Y +A Y +A X +A X +A X +A Y +A X +A X +C X +A X +A X +C X +A X +A X +C Z +B X +A Y +A X +B Y +B X +A X +A X +A X +C Y +C Y +B Y +A X +C X +C X +B X +A X +A X +A X +A Y +A X +A X +B Z +C X +A X +A X +A X +B Y +B X +C X +B X +A X +B X +A X +C X +A X +C X +A X +C X +B Y +B X +A X +A X +B Y +B X +B X +A X +B X +C Y +A X +A Y +A Y +A Y +A Z +B Y +A X +A X +A X +A X +A Z +A X +A X +A X +B Z +B Y +C Y +A X +A X +B X +C X +A Y +A X +B X +A X +A X +B X +B Y +A X +B X +C X +B X +A X +A X +A X +A X +B X +B X +C Y +B X +B X +A X +B X +A X +B Y +B X +A X +A X +A Y +B X +A X +B Y +A Y +B Y +B X +A Z +A X +B Y +A X +B X +A X +A X +A X +B Y +B X +A X +C Z +A Y +A Y +C X +B Z +B X +C Z +B X +B X +A X +A X +B Y +C X +A X +A Z +B X +A X +A X +B Y +A X +A X +A X +B Y +A X +C Y +A X +C Y +A X +C Y +B X +A Y +A X +B X +A X +B Y +A X +B X +B X +A Z +A X +C Y +B Y +A X +A X +C X +B Y +C Y +C X +A Y +B Y +A Y +A Y +B X +A X +A X +A X +A X +A Y +A X +A X +A X +B Y +A X +A Y +C X +A X +B X +A X +A X +A X +C Z +A X +A Y +A X +C Z +B Y +B X +A X +A Z +A X +A X +A Y +A X +A X +A X +B Y +A X +B X +A X +A X +A X +A X +B X +B Z +C X +C X +C X +B Y +A X +B Y +B X +A Y +B X +B X +A X +C Y +B X +A X +A X +A X +A X +A X +A X +B Y +C Y +B X +C Y +B Y +C X +A Y +C X +B X +C X +B X +A X +A X +B Y +A X +C X +A Y +C X +C X +B Y +A X +C X +C X +B Z +A X +C X +A Y +B Y +A X +A Y +A X +B X +A X +A X +B Y +A Z +A X +B Y +B X +A X +A Y +B X +B X +A X +A X +A Y +A X +C X +A X +B X +C X +C X +C Y +A X +B X +B Y +A X +C X +A X +B Y +A X +B X +B Z +A X +A X +A X +B X +C X +C X +B X +A Y +A X +A Y +A X +A X +A X +A X +C Y +B X +A X +A X +A X +B Y +A X +B X +B Y +A Z +A Y +A X +A Y +A X +A Y +B Z +A X +B Y +B Z +B X +A X +C X +C Y +A X +A X +A X +B X +A Y +C X +A X +B Y +A Y +B X +B X +A X +A Y +B X +A Y +C X +A X +C X +A X +C X +A X +A X +C X +A X +A X +A Y +B X +C X +B Y +A Y +A X +A X +A X +A Z +B Y +A X +A X +B Y +A Y +B Y +A X +B Y +B X +A X +A X +A X +B X +B Y +A X +C Z +B Z +A X +A X +A X +B X +B Y +A X +B Z +A X +A Y +A Y +A Y +C X +B Y +A X +A X +C Y +B X +A Y +A X +A X +B Y +C X +C X +C X +A X +A X +A X +B Z +A X +C X +A X +A X +B X +B X +A X +C Y +A X +B X +C X +B Y +A X +B Y +C X +A X +C X +B Y +A X +A Y +C X +C Z +A X +C X +A X +A X +C X +A Y +C X +B Y +A X +C Z +A X +B X +B Y +A Y +A X +A X +A X +A X +A Y +A Y +B X +C X +A Y +A X +C X +B X +B Y +C X +B X +A X +B X +A X +C Y +A X +A X +A X +A X +C X +A X +B X +A X +B X +A X +A Y +C X +C Y +C X +A Z +B X +A Z +A X +B Y +A Y +B X +A X +B Y +A Y +A X +B Y +A X +B X +A X +A X +A X +A X +B Y +A Y +A X +A X +B X +B Z +A Y +A Y +C Y +C Y +A X +C X +A X +B Y +B X +B Y +B X +C X +B X +C X +A X +B Y +A X +B X +A X +B X +C Y +B X +A X +A Y +A X +B Y +C X +C X +A X +B Z +A X +A X +B Y +A X +A X +B X +A Y +C X +A X +C Y +A Y +C X +A Y +A X +A X +A X +A Y +B X +B X +A Y +C X +B Y +A Y +B X +B X +B X +B X +A X +B X +B X +A X +C X +A X +C X +C X +A X +C X +B X +A Y +A Z +A X +A X +A X +A Y +A X +A X +C Z +A X +B X +C X +A X +B X +C X +C X +A X +B Y +A X +A X +A X +A Y +B Y +B Y +A X +B X +A X +C X +A X +B Y +C Y +C X +C X +B X +B X +C X +A Y +B X +A X +A X +A X +A X +A Y +B X +B X +C Y +C Y +B Y +B X +A X +C Y +A X +C Z +C X +A X +B Z +A X +A Z +C X +B Y +A X +A Y +A X +B X +A Y +C X +C Y +B X +B X +B Y +B Y +C X +B Y +B Y +B X +C X +C X +A X +A X +A Y +A X +A Y +B X +A X +B Y +B X +A X +A X +A Y +B X +B X +A X +B X +C Y +A Y +B Y +C Y +B Y +A X +B Y +B X +B Z +A Y +A Y +C Y +B X +A X +A X +B Y +A X +A X +B X +A X +A X +A X +B X +B X +B Y +A X +C X +A X +B X +A X +A X +A Y +B X +B X +B X +C X +B Y +C Z +A X +C X +A X +B X +A X +A Y +B Y +A Z +A X +C X +A Y +A X +A X +A X +A X +A Y +A X +C X +A X +C Y +B X +A X +A X +A X +A X +A X +C X +A X +B X +B Y +B Y +B X +C Z +C X +B X +C Y +A X +A X +A X +A X +A X +C X +A X +B X +C X +C X +A X +A X +B X +A X +A X +A X +B X +A X +C X +A X +A Y +A X +B Y +A X +B X +A Y +C X +B X +C Y +C Y +B X +A X +B X +C X +A X +C X +A X +C X +B X +B X +C X +C X +B X +B X +C Y +B X +A X +B X +B X +B Y +A Y +B X +A X +C Y +A Y +C Y +A X +B Y +A X +A X +A X +B Y +B X +A Y +A X +A X +A Y +B X +B Y +A Y +B X +C X +C Z +B X +A Y +A X +C X +A X +C X +B Z +C X +A Y +A X +C X +B Y +A Z +B Y +A X +A X +A Y +C X +A Z +A X +B Y +A X +B X +A Y +A Y +A X +A X +A X +C Y +B X +A X +B X +B Y +B Y +A X +A X +A Y +A X +C X +B X +C X +B X +B X +C Y +A Y +B X +A X +A X +A X +C X +C X +A X +B X +A X +A X +A Z +A X +C X +B X +A X +C Y +A Y +C Y +B Y +B Y +B Z +A X +C X +A X +B Y +B Y +A X +B Y +A X +B Y +B X +B X +C X +B Y +B X +A X +A Y +B X +A X +B Z +A Y +B X +B X +A Y +C Y +B X +B Y +A X +B X +A Y +A Y +B X +B Y +B X +A X +C X +A X +A X +A X +B Y +A Y +B X +C X +C Z +A X +B Y +A Y +A X +B X +A X +A Y +A X +A Y +A X +A X +A X +C X +A Y +C Y +A X +A X +C Z +B X +A Y +B X +B X +B X +B X +B X +A X +A X +B X +B Y +A X +C Y +C X +A X +A X +A X +A X +A X +A X +A X +A Y +B Y +A X +A X +A Z +C Y +C Y +B X +C Z +A X +A X +A X +B Z +B Y +A X +A X +A X +B X +A X +C X +C X +C X +B X +A X +A X +C Z +B Z +C Y +A X +A X +A X +C Z +A X +A X +C X +C X +A X +C Y +A X +A Y +A X +A X +A Z +C X +C X +A Y +B X +B X +A Y +A X +B X +C Y +A X +A Y +B Z +A X +C Y +A X +B Y +A X +A Y +A X +C Z +A X +B X +A X +B Y +A X +A X +A X +A X +A X +B Y +C X +A X +B X +A X +A Y +A Z +A X +A X +B Y +B X +C X +A X +A X +B X +B Y +B Y +A Y +B Z +B Y +A X +A X +A X +A X +B X +C Y +A X +A X +A X +A X +A X +A X +A X +A X +B Y +A X +B X +C X +C X +C X +C X +A X +B Y +A X +B X +B X +A X +A X +C Z +A X +B X +B X +C X +A X +B X +B X +B X +B X +B Y +A X +B X +A Y +A X +A Y +B Y +A X +C Y +B X +A X +A X +A X +A Z +A Y +A X +C X +C X +B X +A X +A X +B X +A X +A Y +C Z +A Y +B X +B Y +A X +C Y +B Z \ No newline at end of file diff --git a/flake.nix b/flake.nix index c37f8a6..3b9c8c3 100644 --- a/flake.nix +++ b/flake.nix @@ -7,6 +7,7 @@ in { packages.${system} = { day01 = pkgs.callPackage ./day01 {}; + day02 = pkgs.callPackage ./day02 {}; }; }; } \ No newline at end of file