diff --git a/aoc.jl b/aoc.jl index 6e6fcc2..e129133 100755 --- a/aoc.jl +++ b/aoc.jl @@ -16,11 +16,7 @@ function _cookie() end function _get_input(year, day) - res = HTTP.get( - "https://adventofcode.com/$year/day/$day/input", - cookies = _cookie(), - headers = Dict("User-Agent", "git.fuckwit.dev/fuckwit/aoc2022/src/branch/master/aoc.jl by huanzodev@gmail.com") - ) + res = HTTP.get("https://adventofcode.com/$year/day/$day/input", cookies = _cookie()) if res.status ≠ 200 error("Unable to fetch infput for AOC $year day $day") end diff --git a/data/day_2.txt b/data/day_2.txt new file mode 100644 index 0000000..16845b0 --- /dev/null +++ b/data/day_2.txt @@ -0,0 +1,2500 @@ +A Z +C Z +C Z +A Z +C Y +C Z +A Z +B Z +A Z +A Z +C Z +A X +C Y +C Z +C Y +C Z +A Z +C Z +A Z +A Z +C Z +C Z +C Z +A Y +C Z +C Z +C Y +A Z +C X +A Z +A Z +C Z +B Y +C Z +C Y +C X +C Z +C Z +B Y +A Z +C Z +C Y +B Y +C Z +A Y +B Y +C Z +C Z +A Z +A Z +A X +A Z +B Z +A Z +A X +A Y +C Z +C Z +A Z +C Y +A Z +C Z +B Y +C Z +C Y +B Z +A Z +C Z +A Z +B Z +A X +C Z +A Z +C Y +C Y +C Z +A Z +C Z +C Y +C Z +C Z +C Z +C Z +C Y +A Z +C Z +C Y +A Z +A Z +A Z +C Z +A X +A Z +A Z +A Z +C Z +C Y +C Y +A Z +A Z +C Y +A Z +C Z +A Z +C Y +B Y +C Z +A Z +A Z +C Z +A Z +C Y +A Z +A Z +C Y +A Z +C Z +A Z +A Z +A Z +C Y +A Z +B Z +C Y +C Z +B Y +A Z +A Z +C Z +C Z +B X +B Y +A Z +A Z +A Z +C Z +C Y +B Z +C Z +C Z +C Z +A Y +A Z +A Z +C Y +C Z +A Z +C Z +A Z +A Z +C Z +C Z +C Z +C Y +C Y +C Y +C Z +A Z +C Z +A Z +A Z +C Z +A Z +C Z +A Z +A Z +B Z +A Z +A Z +C Z +C Z +C Z +C Z +C Z +C Y +B X +A X +A Y +A X +C Z +A X +B X +A X +B Z +A Z +C Z +C Z +C Z +C Z +B Z +C Z +A Z +A Z +A Z +A Z +C Z +A Z +A Z +C Z +A Z +C Y +C Z +C Z +B Y +C Z +A X +A Z +A Z +C Y +C Z +C Z +A Z +C Z +A Z +C Z +A Z +C Y +A Z +B Y +C Z +C Z +A Z +C Z +C Y +C Z +A Z +A Z +C Z +C Z +A Z +A Z +C Z +C Y +C Z +C Z +C Z +C Y +C Z +A Z +C Z +A Z +A Z +A Z +B Z +A Z +C Y +A Y +A Z +C Z +A Z +A Z +C Z +A Z +C Z +C Z +C Z +A Z +B Z +C Y +C Z +C Z +B X +C Z +C Y +A Z +A Y +C Z +C Y +B Y +A Z +C Z +A Z +B Y +C Z +C Z +C Z +B Z +B Z +C Z +C Z +C Z +C Z +A Z +A X +B Y +C Z +C Z +A Z +C Y +A Z +C Z +A Z +C Y +C Z +A Z +C Y +C Y +C Z +A Z +C Z +C Z +C Z +A X +A Z +C Z +C Z +C Z +A Z +C Z +C Z +C Y +C Y +C Y +C Z +C Y +C Z +A Z +A Z +C Z +C Z +C Y +A Y +C Z +C Z +B Z +A Z +A Z +A Y +A Z +B Y +A Z +C Y +A Z +C Y +A Z +A Z +A X +B Z +C Y +A Z +C Z +A Y +C Z +C Y +B Y +A Z +B Z +B Z +C Z +A X +B Y +C Z +A Y +C Z +A Z +C Z +B Z +C Y +C Z +A Z +C Z +C Y +A Z +A X +A Z +A Y +C Z +A Z +C Y +A Z +C Z +C Y +C Z +B X +C Z +C Z +C Z +C Z +C Z +C Z +C Y +C Y +C Z +B Z +B Z +C Z +B Z +A Z +C Z +C Y +C Z +C Z +A Z +C Z +B Y +C Z +A Z +C Z +A Z +C Z +A Z +C Y +A Z +C Z +C Z +C Z +C Z +C Z +C Y +C Y +A Z +A Z +C Z +A Z +A Z +B Y +A Z +A Z +C Z +C Y +A Z +C Z +A Z +A Z +C Z +C Z +C Z +A Z +C Y +C Z +C Z +C Y +C Y +C Y +A Z +C Z +A Z +C Z +B Y +A X +C Z +C Z +C Z +C Z +B Z +A Z +C Z +A Z +B Z +B X +C Z +B X +C Z +C Z +A Z +B X +C Z +A Z +A Z +B Y +C Z +C Z +B X +C Y +A Z +A Z +B Z +A Z +C Z +A Z +B Y +A Z +C Z +B Y +C Y +C Z +C X +C Z +C Z +A X +C Z +A Y +C Z +A X +A Z +C Z +C Z +C Z +B Y +C Y +A Z +C Z +A Z +C Z +C Z +C Z +C Y +C Z +C Z +B Y +A Z +C Z +C Z +C Z +A Z +C Z +A Z +B Z +C Z +A Z +C Z +A Z +C Y +C Z +C Z +C Z +C Z +A Z +A Z +B Z +A Z +B Z +C Z +C Z +C Y +C Z +A Z +A Z +C Z +A Z +B Y +A Z +C Z +C Z +A Z +A Z +A Y +A Z +C Z +A Z +C Y +C Z +C Z +C Z +A Z +C Z +C Z +B X +A Z +A Z +C Y +B Z +C Z +A Z +A Z +A Y +C Z +C Z +C Z +A Z +C Z +C Z +C Z +B Y +A Z +B Z +C Y +B Y +A Z +A Z +A Z +C Z +C Y +A Z +A Z +C Z +C Z +A Z +B Z +C Z +A Z +A Z +C Z +A Z +A Z +A X +B Z +C Z +C Z +C Z +C Z +C Y +A Z +C Z +C Y +C Z +B Y +A Z +A Z +C Z +C Z +A Z +C Y +C Z +A Z +A Z +C Z +C Z +C Y +B Y +C Z +A Z +A Z +C Z +C Z +C Y +C Z +A Z +C Z +A Z +C Z +A Z +C Y +C Z +C Z +C Y +A Z +B Y +C Z +A Z +C Z +C Z +B Z +B Z +A Z +C Z +C Y +C Z +C Z +A Z +B Y +B Z +C Z +A Z +C Z +C Y +C Z +C Z +C Y +C Z +A Y +A Z +A Z +A Z +B Y +C Z +C Z +C Z +C Y +C Z +A Z +C Y +B Y +C Z +A Z +A Z +C Z +C Z +A Z +A X +B Z +A Z +C Z +A Z +C Z +C Y +A Z +A Z +C Z +C Z +B Z +B Y +A X +A Z +A Z +A Z +A Z +C Z +C Z +C Z +C Z +C Y +A Z +A Z +C Y +C X +A Z +A Z +A Z +A Z +C Z +C Z +C Z +C Z +C Z +A X +C Z +A Z +B Y +B Y +A Z +A Z +C Z +C Y +C Z +A Z +A Z +A X +A Z +C Z +A Z +A Y +A Z +C Z +B Y +B Y +C Z +B Y +A Z +B Y +C Z +B Z +B Y +C Y +C Z +C Y +C Z +A Z +C Y +C Z +C Z +C Z +A Z +C Z +C Y +C Z +B Z +C Z +A Z +B Y +B Z +C Z +B Y +C Z +A Z +C Z +C Z +A Z +C Y +C Z +B Y +A Z +B X +C Y +C X +C Y +A Z +B Z +A Z +A Y +B Y +C Z +A Z +C Z +C Y +C Z +A Z +B Y +A Z +A Z +B Y +C Y +A Y +C Y +C Z +C Z +A Z +C Z +C Z +A Y +C Z +A Z +C Z +C Z +B Y +B Y +C Z +B Z +A Z +A Z +A Z +C Z +C Y +C Z +B Y +C Y +A Z +A Z +C Z +B Y +C Y +B Y +C Z +A Z +B Y +A Z +A Z +A X +C Z +C Z +C Y +A Z +C Y +C Y +C Z +A Z +A X +C Z +A Z +A Z +A Z +C Z +C Y +A Z +A X +C Z +C Z +C Y +C Y +A Z +C Z +B Z +B X +A Z +C Z +B Y +C Y +A Z +A Z +C Y +C Z +C Y +C Y +B Y +C Z +C Z +A Z +B Y +C Z +C Z +A Z +A Z +B Y +C Z +C Y +A X +A Z +C Y +A Z +C Z +C Z +A Z +C Y +A Z +C Z +C Z +C Z +C Z +A Z +C Z +C Y +B Z +C Z +A Z +C Z +C Z +B Y +C Z +A Z +A Z +A Z +C Y +C Z +A Z +A Z +C Z +A Z +A Z +C Z +A Z +C X +A Z +A Z +C Z +A Y +B Z +A Z +C Y +A Z +C Y +B Z +C Z +B X +C Z +A Z +A Z +C Z +B Y +C Z +C Z +B Z +A Z +B Y +C Z +C Z +C Z +A Z +C Z +B Z +A Z +C Z +A Z +B Z +A X +C Y +A X +C Z +C Y +C Z +C Z +B Y +B Y +C Z +B X +C Z +A Z +A Z +B X +A Z +C Z +C Z +C Z +B Y +C Z +C Y +A Z +B Z +C Y +C Z +C Z +A Z +C Z +A Y +C Z +C Z +C Z +A Z +C Z +C Z +C Y +C Z +B Y +B X +A Z +A Z +C Z +C Y +C Y +C Y +B Y +A X +C Z +B Y +A Z +A Z +C Z +B Y +B Y +C Z +A Z +C Z +C Z +C Z +C Z +B Y +C Z +B Y +B Y +A Z +C Z +B Y +A Z +A X +C Z +C Z +C Z +C Z +C Z +C Z +C Z +B Y +A Z +B Z +A Z +C Z +A Z +C Z +A Z +C Z +A Z +A Z +C Y +A Z +A Z +C Z +C Z +C Z +C Z +B Z +C Z +A X +A Y +B Y +B Z +A Z +C Y +A Z +B X +A Z +C Z +B Z +B Y +C Z +C Z +C Y +C Z +A Z +A Z +A Z +A Z +A Z +A Z +A Z +A X +A Z +A Z +C Z +C Z +C Z +A Z +B Z +C Z +C Z +A X +C Y +A Z +C Z +C Y +A Z +A Z +C Z +C Z +A Z +C Z +C X +C Y +A Z +A Z +C Z +B Y +C Z +A Z +A Z +A Z +B Z +A Y +B Y +C Z +C Z +C Y +C Y +B Y +A Z +A Z +B Y +C Z +C Z +A Z +A Y +A X +A X +C Z +A Z +A X +A Y +A Z +C Y +A Z +C Y +A Z +C Y +B Z +B Y +A Z +C Z +A Z +C Z +C Y +A Z +C Z +A Z +B Y +A Z +C Z +C Z +C Z +A Y +C Z +C Z +C Z +A Z +C Y +A Y +C X +C Z +A Z +A Z +A Z +A Z +A Z +B Y +B Y +C Z +C Z +C Y +A Z +C Z +C Y +C Z +C Y +A Z +A Z +C Z +A Z +C Z +C Y +A Z +C Y +A Z +C Z +C Y +B Y +C Y +C Y +A Z +A Z +C Y +C Z +C Y +B Z +A Z +C Z +C Z +B Y +C Y +A Z +A Z +C Z +A Z +B Z +C Z +A Z +C Z +C Z +A Z +A Y +B Y +C Y +C Z +A Z +C Z +A Z +C Z +A Z +C Y +C Y +C Z +A Z +A Z +B Y +C Z +A Z +C Z +A Z +A Z +C Z +C Z +C Z +C Y +B Y +C Z +A Z +B Z +A Z +A X +C Z +A Z +A Z +C Z +B Y +A Z +A X +C Y +C Z +C Z +C Z +C Z +B Y +C Z +B Z +A Z +A Z +A Z +A Z +B Z +B X +C Z +A Z +C Y +A X +C Z +C Y +C Z +C Z +B X +C Z +C Y +A Z +C Z +A Z +C Z +B Z +A Z +C Z +B Y +C Z +C Z +C Z +C Z +C Z +C Z +A Z +C Z +A Z +A Z +B Y +A Z +C Y +B Y +B X +C Z +C Y +C Z +C Z +C Y +C Y +B Y +C Y +C Z +A Z +A Z +A X +C Z +C Z +B Y +C Z +C Z +A Z +C Z +B X +C Z +C Z +C Y +C Z +C Z +C Z +A X +C Z +A Z +A Z +C Y +B Z +A Y +C Z +C Y +B Y +C Z +C Z +C Z +C Z +A Z +C Z +C Z +A Z +C Z +C Y +C Z +C Z +A Y +C Z +C Y +A Z +C Z +C Y +C Z +C Y +C Y +B X +A Z +C Z +C Y +C Y +A Z +A X +C Z +A Z +C X +B Y +A X +B Z +C Z +B Y +A Z +C Z +A Z +C Z +A X +C Z +C Z +C Z +C Y +A Z +C Y +C Z +C Z +A Z +A Z +A Z +C Z +A Z +C Y +C Z +A Z +A Z +C Z +A Z +C Z +C Z +C Z +C Z +B Y +A Z +C Z +A Z +C Y +C Z +A Z +C Y +C Z +A Z +C Y +C Y +A Z +A Z +A Z +C Z +C Z +B Y +A X +A X +A Z +C Z +C Y +C Y +C Y +C Z +A Z +B Y +A Z +A Z +C Z +C Y +C Z +C Y +C Z +A Z +C Z +C Z +C Z +C Y +A Z +C Z +B X +C Z +C Z +C Z +C Z +A Z +C Z +C Z +C Z +C Y +C Z +A Z +C Z +B Y +A Z +C Y +A Y +C Z +C Z +B Z +C Z +C Z +B Y +C Z +A Z +C Y +C Z +B Y +C Z +A Z +C Z +C Z +C Z +A Z +B Y +C Y +A Z +C X +C Z +C Y +C Z +A Z +A Z +C Y +C Z +A Z +B Y +A X +C Y +B Y +A Z +B Y +A X +B Z +A Z +A Z +A Z +A Z +C Z +C Z +A Z +A Z +A X +C Z +A Z +A Z +A X +B Y +C Z +C Z +C Z +B Z +C Z +A Z +C Z +C Z +A Z +A Z +C Y +C Z +C Z +A Z +A Z +C Y +C Y +C Z +A Z +B X +A Z +A Z +C Z +C Z +C Z +B Y +A Z +C Z +A X +B Z +B Z +C Z +C Z +C Y +A X +A Z +B Y +C Z +B Y +C Z +B Y +C Z +C Y +C Z +A Z +C Y +C Y +A Z +C X +B Z +C Z +C Z +A Z +C Y +A Z +A Z +B Z +A Z +C Z +C Z +C Z +C Z +A Y +C Y +A Z +C Z +C Z +C Y +A Z +B Y +A Z +B Z +A Z +A Z +B X +B Z +A Z +C Z +C Z +C Z +C Z +C Z +A Z +C X +C Z +C X +C Z +B Z +C Y +A X +A Z +A Z +C Z +C Y +C Z +C Z +A Z +C Z +A Z +A Z +A X +C Z +A Z +A Z +A Z +A Z +A Z +A Z +B Y +A Z +C Z +B X +B Z +C Z +A Z +A Z +B Z +C Y +A X +C Z +B Y +B Y +C Y +A Z +A Z +A X +C Z +C Z +A Z +C Y +B Y +A Z +B X +A Z +A X +A X +A X +A Z +A Z +C Z +A Z +A Z +A X +B X +B Z +B X +A Z +B Y +A Z +C Z +A Z +A Z +C Z +A Y +C Z +B Z +C Y +C Y +A Z +C Z +C Z +A Z +B Y +C Z +A Z +A X +B Z +A Y +B Z +C Y +C Y +C Z +A Z +C Z +C Z +A Y +C Z +A Z +B Y +C Z +B X +A Z +C Z +C Y +B Y +A Z +B Y +B Z +A Z +A Z +B Y +C Z +A Z +C X +C Z +C Z +B Z +B Z +C Z +A Z +A Z +C Z +A Z +C Z +C Z +A Y +C Z +A X +A Z +A Z +A Z +A Z +A Y +A X +C Z +C Z +C Z +C Z +A Z +B Z +C Z +B Z +B Y +C Z +C Z +C Z +A Z +C Z +B Y +C Y +A X +A Z +A X +C Z +B X +C Z +A Z +B Y +C X +A Z +C Z +C Z +A Z +C Z +A Z +A Z +A Z +A Z +A Y +A Y +A Z +A Z +A Z +A Z +C Z +C Z +C Z +A Z +A Z +C Z +A Y +C Z +B Z +C X +C Z +C Y +A Y +B Y +C Z +C Z +A Z +C Z +A X +B Y +C Y +C Z +C Z +A Z +A Y +A Z +A Z +C Z +A Z +C Z +C Z +C X +A Z +C Z +A Z +A Z +C Y +B Y +C Z +A X +A Z +C Z +A Z +C X +A Z +C Z +C Y +A Z +A Z +C Z +C Z +C Z +A Z +A Z +C Z +A Z +A X +C X +C Z +C Z +A Z +A Z +A Y +C Z +C Z +B X +C Z +C Y +C Z +C Z +A Z +C Z +A Z +C Y +C Y +C Z +A Z +C Z +B Y +C Y +A Z +B Z +A Z +B Z +A Z +A Z +C Z +C Z +C Z +A Z +C Z +A Z +B Z +C Z +C Z +C Z +A Z +C Z +C Z +C Z +C Z +C Z +C Z +C Z +B Y +A Z +B Y +C Y +C X +C Z +C Z +C Z +C Z +C Y +A Z +C Y +A Z +C Y +C Z +C Y +C Z +C Y +A Z +A Z +C Z +C Z +B Z +C Y +C Z +C Z +C Z +B Z +B Z +B Z +A Z +A Z +A Z +C Z +B Z +A Z +A Z +C Y +A Y +C Y +C Z +C Y +C Z +C Z +C Y +A Z +C Z +B Y +C Y +B Y +A Z +C Z +A Z +A X +A Z +C Z +A Z +A Z +A Z +C X +C Z +A Z +C Z +C Z +C Z +C Z +C Z +C Z +A Z +C Z +C Y +A Y +B Y +B X +B Z +C Z +C Z +A Z +B Y +C Z +A Z +B Z +C Z +A Z +C Y +C Y +B Y +C Z +C Y +C Z +C Y +A Z +C Z +C Z +A Z +A Z +A Z +C Z +A Z +A X +A Z +A Z +C Z +C Y +C Z +C Z +C Z +A Y +B Y +A Z +A Z +A Z +A X +B Z +A Z +C Y +B Y +A Z +A Y +B Z +A Z +B Y +C Z +B Y +A Z +B Y +C Z +C Z +A Z +A Z +A Z +C Y +B Y +B X +A Z +C Z +A X +B Z +A X +A Y +C Z +B X +B Y +A Z +A Z +B X +C Z +C Y +C Y +C Y +C X +C Z +C Z +C Z +A Z +B Y +C Z +A Z +A Z +A Z +A Z +C Y +C Z +C Z +A Z +C Z +B Z +B Y +A Z +A Z +C Z +A X +A Y +B Y +A Z +A Z +B Z +A Z +C Z +A Y +A Z +C Z +C Z +A Z +A Z +C Z +B Y +A Z +A X +C Y +A Z +C Z +C Z +C Z +C Z +A Z +C Y +C Z +A Z +A Z +C Y +A X +C Z +B Y +A Z +B Z +C Z +B Z +A Z +C Y +C Z +B Y +C Y +C Z +A Z +C Z +C Z +A Y +A Z +B Z +A X +C Y +A Z +A Z +C Z +B Y +C Z +A Z +C Z +A Z +B Y +A Z +C Z +A Z +B Y +A Z +C Z +C Z +C Z +A Z +A Z +C Z +A Z +A Z +C Y +A Y +B Y +B Z +C Z +C Y +A Z +C Y +C Z +B Y +C Y +C Z +B Z +C Z +C Y +C Z +C Y +C Z +C Y +B X +C Z +C Y +A Z +A X +A Z +C Z +A Z +B Y +C Z +A Z +A Z +B Y +C Y +A Z +A Z +C Z +C Z +C Y +A Z +C Y +B Y +A Y +C Z +A Z +A Z +C Z +C Z +C Z +C Z +A Z +A Z +C Y +A Z +C Z +C Z +C Z +C Z +A Z +A Y +C Y +A Z +C Y +A Z +A Z +A Z +C Z +A Z +C Z +A Z +C Z +C Z +A Z +C Z +C Z +C Y +B Z +C Z +C Y +A Z +B X +C Y +C Y +C Z +A Z +B Y +A Z +A X +B Y +A Z +A Z +B Y +B Z +A Z +A Z +C Z +A X +C Z +C Z +B Z +C Z +C Y +B Y +A Z +B Z +C Z +C Z +C Z +A Y +A X +C Y +A Z +B Z +A Z +B Z +C Z +A Y +C Z +C Y +A Z +C Y +C Z +C Y +B Y +B Y +C Z +A X +C Z +A Z +A Z +C Y +C Y +C Z +A Z +B Z +C Z +C Z +C Z +A Y +A Z +C Z +C Z +C Z +C Z +C Z +B Y +C Z +C Z +A Z +B Y +A Z +C Z +C Z +C Z +B Z +A Z +C Y +A Z +C Z +B Z +C Z +B Y +C Y +A X +C Z +A Z +C Y +C Z +C Z +C Y +A Z +C Z +B Z +A Z +C Z +A Z +A X +C Z +A Z +C Z +B X +C Z +C Z +C Z +C Z +A Z +A X +C Z +C Z +A Z +C Z +A Z +C Z +B Y +A Z +C Z +A Z +C Y +C Z +C Z +A Z +C Z +A Z +A Z +A Z +B Z +C Y +B X +C Y +C Z +C Z +A X +A Z +C Z +B Y +C Z +C Y +C Z +A Z +C Z +B Y +C Z +C Y +B Z +A Z +C Z +B Z +A Z +B Z +A Z +C Z +C Z +B Y +C Y +C Y +A Z +C Z +A Z +A Y +B Y +C X +A X +C Z +C Y +B Y +C Z +A Z +A Z +C Y +C Z +C Z +A Z +B Y +B Z +A Z +A Z +A Z +B Z +C Z +C Z +C Y +A X +C Z +A Z +C Z +B Z +B Y +C X +C Z +A X +A X +C Y +B Y +C Z +C Z +A Z +A Z +A Z +A Z +C Y +C Z +A Z +A Z +C Z +C Z +C Z +C Z +C Z +A Y +A Z +C Y +C Z +B Y +A Z +C Y +A Z +A Z +B Z +C X +B Y +C Z +A Z +C Y +C Z +B Y +A Z +C Y +C Z +B Y +C Y +C Z +A Z +A X +C Z +C Y +B Z +A Z +A Z +B Y +C Z +A Z +C Z +C Z +B Y +A Z +C Z +C Z +B Y +B Y +A Z +C Z +C Z +C Z +C Z +A Z +C Z +B Z +B Y +C Z +B Y +A Z +A Z +C Y +A Z +A X +B Z +C Y +C Z +C Z +C Z +C Y +C Z +C Z +C Y +A X +B X +B X +C Z +C Y +A Z +B Y +C Y +C Z +C Z +A Z +C Y +A Z +B Z +C Z +C Y +C Y +C Z +A Z +C Z +A Z +B Z +B Z +C Y +A Z +C Z +A Z +A Z +C Z +C Z +C Z +C Z +C Z +C Z +A Z +A Z +A Z +B Y +B Z +B Y +C Y +A Z +C Z +C Y +A Z +C Z +A Z +A X +B Z +A Z +C Z +C Z +C Z +A Z +C Y +B Y +C Y +A Z +C Y +B Z +B Y +B Y +C Z +C Z +A Z diff --git a/src/day_1.sh b/src/day_1.sh index b4933f4..5d3ed78 100644 --- a/src/day_1.sh +++ b/src/day_1.sh @@ -13,7 +13,8 @@ cals_per_elf() { ((tmp+=i)) done cals+=("$tmp") - utils.qsort "${cals[@]}" + utils.insertion_sort cals + echo "${cals[@]}" } p1() { diff --git a/src/day_2.jl b/src/day_2.jl new file mode 100644 index 0000000..5f8aa26 --- /dev/null +++ b/src/day_2.jl @@ -0,0 +1,43 @@ +include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl")) +import .Aoc: @aoc + +win_conditions = Dict( + "A X" => 3, + "A Y" => 6, + "A Z" => 0, + "B X" => 0, + "B Y" => 3, + "B Z" => 6, + "C X" => 6, + "C Y" => 0, + "C Z" => 3, +) +should_play = Dict( + "A X" => 'Z', + "A Y" => 'X', + "A Z" => 'Y', + "B X" => 'X', + "B Y" => 'Y', + "B Z" => 'Z', + "C X" => 'Y', + "C Y" => 'Z', + "C Z" => 'X', +) +score_table = Dict('X' => 1, 'Y' => 2, 'Z' => 3) + +function p1(input::Vector{String}) + sum([ win_conditions[i] + score_table[i[3]] for i in input ]) +end + +function transform_input(x) + arr = collect(x) + arr[3] = should_play[x] + join(arr) +end + +function p2(input::Vector{String}) + input = map(transform_input, input) + sum([ win_conditions[i] + score_table[i[3]] for i in input ]) +end + +@aoc(2022, 2) diff --git a/utils.sh b/utils.sh index 9ec44d0..e6e3750 100644 --- a/utils.sh +++ b/utils.sh @@ -52,20 +52,34 @@ _int.merge() { ((j+=1)) done } +_int.min_run() { + local len="$1" r=0 + + while (( len >= 32 )); do + r=$((r | (len & 1))) + len=$((len >> 1)) + done + echo $((len + r)) +} utils.timsort() { local -n _utils_timsort_arr="$1" local len="${#_utils_timsort_arr[@]}" + local min_run="$(_int.min_run "$len")" + echo >&2 $len - for (( i=0; i < len; i+=32 )); do - _int.insertion_sort _utils_timsort_arr "$i" "$(utils.min2 "$((i+32-1))" "$((len-1))")" + for (( i=0; i < len; i+=min_run )); do + echo >&2 _int.insertion_sort _utils_timsort_arr "$i" "$(utils.min2 "$((i+min_run-1))" "$((len-1))")" + _int.insertion_sort _utils_timsort_arr "$i" "$(utils.min2 "$((i+min_run-1))" "$((len-1))")" done - for (( size=32; size < len; size=2*size )); do + for (( size=min_run; size < len; size=2*size )); do for (( left=0; left < len; left+=2*size )); do - local mid="$((left+size-1))" - local right="$(utils.min2 "$((left+2*size-1))" "$((len-1))")" - (( mid < right )) && _int.merge _utils_timsort_arr "$left" "$mid" "$right" + local mid=$((left+size-1)) + local right=$(utils.min2 "$((left+2*size-1))" "$((len-1))") + if (( mid < right )); then + _int.merge _utils_timsort_arr "$left" "$mid" "$right" + fi done done }