diff options
author | Oscar Najera <hi@oscarnajera.com> | 2023-12-18 05:23:56 +0100 |
---|---|---|
committer | Oscar Najera <hi@oscarnajera.com> | 2023-12-18 05:23:56 +0100 |
commit | 36b850a0a28a7e57799d5d201d9043432d1815ac (patch) | |
tree | faffe9e3b029f9515fa982e8cb8b06b5a737d784 | |
parent | 9bccc0697cedbed1b0c888e26ba23daf53c29b56 (diff) | |
download | scratch-36b850a0a28a7e57799d5d201d9043432d1815ac.tar.gz scratch-36b850a0a28a7e57799d5d201d9043432d1815ac.tar.bz2 scratch-36b850a0a28a7e57799d5d201d9043432d1815ac.zip |
day01 julia
-rw-r--r-- | AoC2023/day01/solver.jl | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/AoC2023/day01/solver.jl b/AoC2023/day01/solver.jl new file mode 100644 index 0000000..faedc7b --- /dev/null +++ b/AoC2023/day01/solver.jl @@ -0,0 +1,25 @@ +using Test + +function captures(pat, str) + [m[1] for m in eachmatch(pat, str)] +end + +function f(x) + if x in n + string(findfirst(isequal(x), n)) + else + x + end +end + +join_first_last(digits)=parse(Int, digits[1] * digits[end]) + +n = split("one two three four five six seven eight nine") +p = Regex("(?=(" * join(n, "|") * "|\\d))") + +solve(pat, file) = map(x-> f.(captures(pat, x)) |> join_first_last, eachline(file)) |> sum + +@testset "solutions" begin + @test solve(r"(\d)","input") == 55172 + @test solve(p, "input") == 54925 +end |