solve day 12
This commit is contained in:
parent
21ebe11abb
commit
1e43c1d1b2
22
data/day_12.txt
Normal file
22
data/day_12.txt
Normal file
@ -0,0 +1,22 @@
|
||||
ax-end
|
||||
xq-GF
|
||||
end-xq
|
||||
im-wg
|
||||
ax-ie
|
||||
start-ws
|
||||
ie-ws
|
||||
CV-start
|
||||
ng-wg
|
||||
ng-ie
|
||||
GF-ng
|
||||
ng-av
|
||||
CV-end
|
||||
ie-GF
|
||||
CV-ie
|
||||
im-xq
|
||||
start-GF
|
||||
GF-ws
|
||||
wg-LY
|
||||
CV-ws
|
||||
im-CV
|
||||
CV-wg
|
43
src/day_12.jl
Normal file
43
src/day_12.jl
Normal file
@ -0,0 +1,43 @@
|
||||
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
|
||||
import .Aoc: @aoc
|
||||
using Pipe: @pipe
|
||||
|
||||
function visit(map, curr_cave, visited)
|
||||
curr_cave == "end" ? (return 1) : nothing
|
||||
curr_cave[begin] in 'a':'z' && curr_cave ∈ visited ? (return 0) : nothing
|
||||
|
||||
v = copy(visited)
|
||||
push!(v, curr_cave)
|
||||
return sum([ visit(map, e, v) for e in map[curr_cave] ])
|
||||
end
|
||||
|
||||
function visit2(map, curr_cave, visited, d)
|
||||
curr_cave == "end" ? (return 1) : nothing
|
||||
curr_cave == "start" && length(visited) != 0 ? (return 0) : nothing
|
||||
if curr_cave[begin] in 'a':'z' && curr_cave ∈ visited
|
||||
d == nothing ? (d = curr_cave) : (return 0)
|
||||
end
|
||||
v = copy(visited)
|
||||
push!(v, curr_cave)
|
||||
return sum([ visit2(map, e, v, d) for e in map[curr_cave] ])
|
||||
end
|
||||
|
||||
function prepare_input(input)
|
||||
map = Dict()
|
||||
for l in input
|
||||
a, b = split(l, "-")
|
||||
!haskey(map, a) ? (map[a] = [b]) : (push!(map[a], b))
|
||||
!haskey(map, b) ? (map[b] = [a]) : (push!(map[b], a))
|
||||
end
|
||||
return map
|
||||
end
|
||||
|
||||
function p1(input::Vector{String})
|
||||
return visit(prepare_input(input), "start", [])
|
||||
end
|
||||
|
||||
function p2(input::Vector{String})
|
||||
return visit2(prepare_input(input), "start", [], nothing)
|
||||
end
|
||||
|
||||
@aoc(2021, 12)
|
Loading…
x
Reference in New Issue
Block a user