diff --git a/src/day_3.jl b/src/day_3.jl index 0e16021..21c0e81 100644 --- a/src/day_3.jl +++ b/src/day_3.jl @@ -18,23 +18,23 @@ end function p2(input::Vector{String}) i1 = copy(input) i2 = copy(input) - ox = "" - co = "" + o₂ = "" + co₂ = "" for i in 1:length(input[1]) - oxbits = map(x -> parse(Int, x[i]), i1) - cobits = map(x -> parse(Int, x[i]), i2) + o₂bits = map(x -> parse(Int, x[i]), i1) + co₂bits = map(x -> parse(Int, x[i]), i2) - oxmc = sum(oxbits) >= length(oxbits) / 2 ? '1' : '0' - comc = sum(cobits) >= length(cobits) / 2 ? '0' : '1' + o₂mc = sum(o₂bits) >= length(o₂bits) / 2 ? '1' : '0' + co₂mc = sum(co₂bits) >= length(co₂bits) / 2 ? '0' : '1' - filter!(x -> x[i] == oxmc, i1) - filter!(x -> x[i] == comc, i2) + filter!(x -> x[i] == o₂mc, i1) + filter!(x -> x[i] == co₂mc, i2) - length(i1) == 1 && ox == "" ? (ox = i1[1]) : nothing - length(i2) == 1 && co == "" ? (co = i2[1]) : nothing - ox != "" && co != "" ? break : continue + length(i1) == 1 && o₂ == "" ? (o₂ = i1[1]) : nothing + length(i2) == 1 && co₂ == "" ? (co₂ = i2[1]) : nothing + o₂ != "" && co₂ != "" ? break : continue end - parse(Int, ox; base=2) * parse(Int, co; base=2) + parse(Int, o₂; base=2) * parse(Int, co₂; base=2) end @aoc(2021, 3)