diff options
author | Marvin Borner | 2024-03-22 23:05:39 +0100 |
---|---|---|
committer | Marvin Borner | 2024-03-22 23:05:39 +0100 |
commit | fd75e9dd97c8fb8672ba609fe4003a3865391c09 (patch) | |
tree | 2aa1daabe0b2f6107b68f5dc56ae9b7be8ef2fa9 | |
parent | a9880a191bbb5eeaf0faef9336263c92ef9351b6 (diff) |
More AOC
-rw-r--r-- | samples/aoc/2022/02/input | 3 | ||||
-rw-r--r-- | samples/aoc/2022/02/solve.bruijn | 18 | ||||
-rw-r--r-- | samples/aoc/2023/02/input | 5 | ||||
-rw-r--r-- | samples/aoc/2023/02/solve.bruijn | 18 |
4 files changed, 44 insertions, 0 deletions
diff --git a/samples/aoc/2022/02/input b/samples/aoc/2022/02/input new file mode 100644 index 0000000..25097e8 --- /dev/null +++ b/samples/aoc/2022/02/input @@ -0,0 +1,3 @@ +A Y +B X +C Z
\ No newline at end of file diff --git a/samples/aoc/2022/02/solve.bruijn b/samples/aoc/2022/02/solve.bruijn new file mode 100644 index 0000000..9dfbbef --- /dev/null +++ b/samples/aoc/2022/02/solve.bruijn @@ -0,0 +1,18 @@ +# perfectly normal rock paper scissors :) + +:import std/Combinator . +:import std/String . +:import std/Number . +:import std/Number/Conversion . + +:import std/Char C +:import std/Number/Binary B + +parse (split-by (C.eq? ' ')) → &[[²³(B.sub ^1 'A') : ²³(B.sub ^0 'X')]] + +solve [foldr go (+0)] + go &[[[^3 !! 1 + ((drop 0 ^(~3)) ++ (take 0 ^(~3)) !! 1)] (~(~2) !! 1)]] → add + +main lines → (map parse) → (φ cons part1 part2) + part1 solve (((+1) : ((+2) : {}(+3))) : (((+0) : ((+3) : {}(+6))) : ((+1) : ((+0) : {}(+2))))) + part2 solve (((+0) : ((+3) : {}(+6))) : (((+3) : ((+1) : {}(+2))) : ((+0) : ((+1) : {}(+2))))) diff --git a/samples/aoc/2023/02/input b/samples/aoc/2023/02/input new file mode 100644 index 0000000..1cd7d33 --- /dev/null +++ b/samples/aoc/2023/02/input @@ -0,0 +1,5 @@ +Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green +Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue +Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red +Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red +Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green
\ No newline at end of file diff --git a/samples/aoc/2023/02/solve.bruijn b/samples/aoc/2023/02/solve.bruijn new file mode 100644 index 0000000..2daed35 --- /dev/null +++ b/samples/aoc/2023/02/solve.bruijn @@ -0,0 +1,18 @@ +:import std/Combinator . +:import std/String . +:import std/Math . +:import std/Char C + +valid? &[[\(C.eq? 0 'r' (1 >? (+12)) (C.eq? 0 'g' (1 >? (+13)) (1 >? (+14))))]] + +parse map (game → (map (sets → (map (cubes → (map (tail → cube)))) → concat → maxes)) → head) + game (split-list-by (C.eq? ':')) → tail + sets split-list-by (C.eq? ';') + cubes split-list-by (C.eq? ',') + cube (split-list-by (C.eq? ' ')) → &[[(string→number 1) : ^(^0)]] + maxes [(m 'r') : ((m 'g') : {}(m 'b'))] + m [max-by (compare ⋔ head) (filter [C.eq? (tail 0) 1] 1)] + +main lines → parse → enumerate → (φ cons part1 part2) + part1 (map &[[1 : (all? valid? 0)]]) → (filter tail) → (map (head → inc)) → sum + part2 (map &[(map head) → product]) → sum |