diff --git a/data/day_2.txt b/data/day_2.txt new file mode 100644 index 0000000..3feb052 --- /dev/null +++ b/data/day_2.txt @@ -0,0 +1,1000 @@ +forward 2 +forward 3 +forward 5 +forward 6 +down 7 +forward 8 +forward 4 +forward 7 +forward 5 +forward 5 +down 4 +down 9 +forward 8 +forward 5 +up 5 +down 5 +forward 3 +down 4 +down 8 +forward 9 +down 1 +up 9 +down 7 +up 7 +up 1 +forward 1 +down 1 +down 4 +down 4 +down 8 +down 4 +up 3 +down 1 +down 3 +forward 7 +down 6 +forward 3 +forward 5 +forward 2 +up 9 +forward 7 +up 5 +down 3 +forward 1 +forward 2 +down 3 +down 8 +down 3 +forward 8 +up 5 +down 5 +forward 3 +down 5 +forward 9 +down 3 +down 4 +down 9 +down 7 +up 3 +down 9 +up 9 +up 1 +forward 3 +up 4 +down 3 +forward 7 +forward 7 +up 7 +forward 6 +down 7 +down 6 +forward 2 +forward 9 +down 5 +forward 4 +up 6 +down 1 +down 9 +down 9 +forward 4 +down 1 +forward 6 +down 1 +down 5 +down 4 +down 4 +forward 4 +forward 9 +up 1 +down 2 +down 8 +down 5 +down 8 +down 8 +up 2 +forward 8 +up 1 +forward 4 +down 5 +down 1 +up 2 +forward 6 +forward 9 +forward 2 +forward 6 +forward 9 +up 6 +forward 9 +up 4 +down 7 +up 6 +forward 2 +down 1 +up 3 +forward 1 +forward 8 +down 6 +down 8 +down 8 +forward 8 +forward 2 +forward 2 +down 2 +up 1 +down 9 +up 9 +down 9 +up 3 +forward 9 +up 4 +up 7 +up 6 +down 9 +forward 1 +down 3 +down 4 +forward 8 +down 3 +down 9 +up 3 +forward 2 +up 5 +down 3 +forward 8 +up 3 +down 3 +forward 2 +forward 9 +down 1 +down 9 +down 4 +up 7 +down 4 +up 6 +forward 5 +down 6 +forward 3 +down 2 +forward 1 +forward 8 +down 4 +forward 1 +up 7 +forward 6 +up 9 +forward 6 +down 3 +forward 2 +down 4 +forward 6 +down 3 +down 6 +down 1 +down 1 +down 5 +forward 3 +forward 9 +forward 8 +down 3 +forward 7 +up 9 +forward 9 +up 2 +forward 4 +up 3 +forward 1 +up 6 +up 8 +down 5 +down 6 +up 9 +down 6 +down 9 +up 9 +down 4 +forward 5 +up 2 +down 3 +up 3 +down 1 +forward 3 +down 5 +forward 7 +down 6 +down 7 +down 5 +forward 2 +up 6 +down 9 +down 4 +down 3 +forward 9 +up 8 +forward 2 +down 2 +forward 4 +up 6 +down 4 +up 8 +down 7 +down 2 +up 6 +up 4 +down 2 +forward 5 +up 4 +down 8 +forward 3 +forward 1 +down 7 +forward 8 +forward 7 +down 7 +up 4 +forward 8 +down 5 +up 9 +forward 1 +forward 4 +forward 9 +forward 7 +down 9 +up 9 +down 1 +down 7 +forward 7 +down 7 +down 7 +down 3 +down 5 +forward 3 +down 2 +forward 6 +down 9 +up 5 +up 3 +forward 5 +down 6 +down 1 +forward 4 +down 3 +forward 8 +down 7 +forward 7 +forward 7 +up 7 +up 2 +up 3 +forward 9 +down 5 +up 2 +forward 5 +up 5 +forward 2 +forward 2 +down 8 +forward 2 +up 4 +forward 1 +forward 3 +up 8 +up 9 +forward 5 +down 1 +up 8 +down 4 +down 8 +up 4 +forward 9 +down 6 +down 8 +up 2 +up 3 +down 7 +down 4 +forward 5 +down 6 +forward 3 +forward 3 +forward 8 +down 1 +down 7 +down 9 +down 2 +down 7 +forward 7 +down 7 +down 6 +up 6 +forward 8 +forward 5 +up 5 +down 2 +up 8 +up 4 +down 9 +up 2 +forward 5 +up 2 +down 4 +up 4 +forward 2 +forward 4 +forward 9 +forward 9 +up 4 +up 5 +down 1 +down 6 +down 1 +down 4 +down 5 +down 3 +forward 3 +down 9 +forward 6 +down 3 +down 9 +down 2 +up 2 +down 2 +down 7 +forward 9 +down 3 +down 3 +down 2 +down 3 +forward 2 +down 9 +down 9 +up 5 +up 3 +forward 4 +up 7 +forward 8 +up 6 +forward 7 +down 7 +down 1 +forward 5 +down 2 +up 1 +down 8 +up 3 +forward 2 +up 9 +down 1 +down 3 +down 6 +down 2 +down 7 +up 2 +forward 5 +forward 7 +down 2 +forward 5 +forward 4 +forward 5 +down 3 +forward 7 +down 7 +forward 8 +down 3 +down 2 +up 1 +forward 6 +down 4 +down 2 +forward 7 +up 3 +down 4 +forward 2 +up 6 +down 3 +up 6 +up 8 +down 9 +up 6 +forward 8 +forward 9 +forward 4 +forward 7 +down 2 +forward 9 +down 7 +up 9 +down 5 +down 6 +up 5 +down 4 +forward 8 +forward 4 +forward 4 +down 6 +forward 3 +forward 6 +down 9 +down 9 +up 2 +forward 7 +down 8 +down 9 +down 9 +forward 7 +forward 3 +down 7 +down 8 +forward 8 +down 6 +down 5 +down 9 +down 3 +forward 1 +down 5 +forward 2 +forward 8 +down 2 +forward 6 +forward 3 +down 7 +down 4 +forward 8 +forward 1 +down 6 +forward 9 +forward 6 +up 1 +up 3 +down 8 +forward 1 +up 5 +down 4 +forward 7 +up 3 +down 2 +forward 1 +forward 9 +down 9 +down 7 +forward 8 +down 4 +up 3 +down 4 +forward 2 +forward 6 +down 7 +forward 6 +down 6 +down 4 +down 1 +up 9 +down 4 +down 7 +up 4 +down 9 +forward 6 +down 3 +forward 2 +down 4 +forward 3 +down 5 +up 9 +forward 8 +up 7 +up 6 +up 4 +forward 1 +down 1 +forward 4 +up 6 +forward 5 +forward 4 +forward 5 +up 6 +down 1 +forward 3 +up 7 +down 9 +up 9 +down 5 +forward 6 +forward 4 +up 1 +down 4 +up 1 +forward 3 +forward 1 +down 3 +forward 7 +down 2 +forward 3 +up 2 +forward 8 +down 3 +up 9 +down 5 +forward 6 +down 1 +down 8 +down 5 +forward 1 +down 6 +up 2 +forward 6 +down 2 +down 1 +up 6 +up 7 +down 5 +forward 7 +forward 6 +forward 6 +down 7 +forward 4 +down 5 +up 5 +down 1 +up 8 +down 8 +down 2 +down 2 +down 9 +up 9 +forward 2 +forward 7 +down 7 +down 4 +down 4 +down 8 +forward 5 +forward 2 +up 9 +down 9 +forward 7 +up 9 +down 2 +down 7 +up 2 +up 8 +forward 8 +down 4 +forward 3 +forward 4 +forward 6 +forward 2 +down 1 +down 2 +forward 2 +up 1 +down 1 +forward 5 +up 3 +up 3 +down 3 +down 1 +down 4 +up 5 +up 6 +forward 5 +up 7 +forward 6 +down 4 +down 7 +up 8 +forward 1 +down 5 +up 4 +up 3 +up 5 +down 1 +up 5 +forward 3 +up 5 +forward 2 +forward 2 +forward 5 +forward 2 +up 9 +forward 4 +down 1 +down 3 +down 5 +up 2 +down 8 +forward 8 +forward 9 +down 1 +down 3 +forward 8 +forward 2 +down 2 +down 1 +up 7 +forward 2 +forward 8 +down 9 +forward 1 +forward 4 +down 7 +down 4 +up 7 +down 3 +down 1 +down 4 +up 7 +down 6 +forward 7 +down 8 +up 2 +up 4 +up 6 +down 9 +down 9 +down 8 +forward 6 +up 3 +up 1 +forward 9 +forward 6 +up 4 +up 2 +up 7 +forward 5 +up 9 +up 9 +forward 9 +up 6 +down 1 +down 3 +forward 3 +down 2 +down 2 +down 6 +down 9 +forward 3 +forward 7 +up 3 +forward 3 +down 5 +forward 9 +up 6 +down 2 +forward 8 +down 3 +up 5 +down 6 +forward 9 +down 5 +down 2 +down 6 +forward 8 +forward 6 +down 1 +forward 6 +up 1 +up 7 +down 4 +down 7 +forward 4 +forward 7 +down 4 +forward 8 +down 8 +down 7 +forward 9 +down 1 +down 3 +down 6 +forward 7 +forward 6 +forward 3 +forward 8 +down 5 +down 3 +up 1 +down 9 +down 8 +forward 3 +down 6 +down 1 +forward 5 +forward 5 +forward 9 +up 5 +down 6 +up 9 +down 7 +down 6 +up 1 +forward 5 +forward 7 +forward 8 +forward 7 +forward 6 +forward 3 +forward 1 +forward 2 +up 4 +forward 3 +forward 4 +forward 5 +up 2 +up 3 +forward 4 +down 9 +up 4 +forward 7 +down 6 +down 6 +down 1 +forward 2 +down 2 +forward 2 +down 3 +forward 7 +forward 8 +down 4 +up 7 +forward 7 +down 7 +forward 7 +forward 9 +down 7 +up 2 +down 3 +forward 7 +down 1 +forward 8 +forward 2 +up 9 +down 3 +forward 2 +up 4 +forward 9 +down 4 +down 4 +forward 4 +down 2 +down 9 +forward 4 +down 2 +down 6 +forward 9 +forward 2 +up 1 +forward 2 +forward 3 +down 5 +up 8 +down 4 +down 4 +forward 7 +down 2 +up 6 +down 9 +forward 9 +up 1 +forward 3 +down 5 +forward 3 +down 3 +forward 4 +up 3 +down 6 +down 7 +down 4 +down 8 +down 4 +down 5 +up 9 +up 1 +down 7 +up 3 +up 3 +down 3 +up 4 +up 6 +forward 8 +down 1 +forward 7 +forward 4 +down 9 +down 1 +forward 7 +forward 9 +forward 1 +down 3 +down 2 +forward 3 +forward 2 +down 7 +forward 9 +forward 6 +up 9 +down 2 +forward 9 +up 6 +forward 8 +up 1 +down 5 +down 8 +forward 1 +down 1 +forward 9 +up 1 +forward 9 +forward 1 +forward 1 +down 7 +forward 3 +forward 6 +down 5 +forward 7 +forward 1 +down 7 +down 6 +down 6 +forward 5 +up 6 +down 6 +forward 8 +up 2 +down 8 +down 3 +up 5 +up 8 +down 6 +forward 4 +forward 2 +up 3 +forward 5 +forward 3 +up 8 +forward 6 +up 8 +forward 1 +up 8 +up 7 +up 6 +forward 2 +down 9 +down 9 +forward 3 +down 7 +forward 3 +down 6 +forward 9 +up 5 +down 1 +forward 7 +down 1 +down 5 +down 9 +forward 8 +forward 9 +forward 7 +down 9 +up 4 +forward 5 +down 5 +forward 5 +down 9 +forward 9 +forward 3 +up 5 +forward 8 +up 5 +down 1 +forward 8 +down 3 +forward 6 +up 9 +forward 8 +down 4 +forward 3 +down 5 +forward 8 +forward 9 +forward 2 +down 1 +down 6 +down 4 +forward 9 +up 2 +down 3 +down 6 +down 3 +down 9 +down 1 +up 6 +down 2 +down 7 +up 5 +forward 5 +up 1 +down 7 +forward 6 +up 6 +down 2 +down 3 +forward 3 +down 5 +forward 8 +down 9 +down 7 +down 8 +up 7 +down 1 +forward 1 +forward 1 +down 2 +up 4 +forward 2 +down 3 +up 2 +down 3 +down 2 +forward 7 +down 1 +up 7 +down 2 +down 1 +forward 6 +down 9 +up 9 +down 4 +down 6 +up 9 +forward 7 +forward 9 +forward 7 +down 4 +down 1 +forward 7 +down 4 +down 7 +down 3 +down 5 +forward 3 +down 8 +forward 8 +forward 7 +forward 8 +down 4 +down 9 +forward 2 +forward 7 +up 8 +forward 4 +down 6 +up 8 +down 2 +forward 3 +down 6 +down 8 +forward 8 +forward 2 +forward 9 +up 6 +forward 7 +down 3 +down 5 +forward 8 +forward 9 +down 3 +forward 3 +forward 2 +forward 3 +down 8 +up 9 +up 5 +up 2 +up 6 +up 1 +up 1 +up 5 +forward 3 +forward 2 +down 3 +forward 4 diff --git a/src/day_2.jl b/src/day_2.jl new file mode 100644 index 0000000..515b971 --- /dev/null +++ b/src/day_2.jl @@ -0,0 +1,41 @@ +include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl")) +import .Aoc: @aoc + +function sliding(in, w::Int64; step::Int = 1) + ((@view in[i:i+w-1]) for i in 1:step:length(in)-w+1) +end + + +function p1(input::Vector{String}) + d = [0, 0] + for i ∈ input + c = match(r"(\w+)\s(\d+)", i).captures + if c[1] == "forward" + d[1] += parse(Int, c[2]) + elseif c[1] == "down" + d[2] += parse(Int, c[2]) + elseif c[1] == "up" + d[2] -= parse(Int, c[2]) + end + end + prod(d) +end + + +function p2(input::Vector{String}) + d = [0, 0, 0] + for i ∈ input + c = match(r"(\w+)\s(\d+)", i).captures + if c[1] == "forward" + d[1] += parse(Int, c[2]) + d[2] += parse(Int, c[2]) * d[3] + elseif c[1] == "down" + d[3] += parse(Int, c[2]) + elseif c[1] == "up" + d[3] -= parse(Int, c[2]) + end + end + prod(d[1:2]) +end + +@aoc(2021, 2)