Mercurial > lbo > hg > aoc22
changeset 23:3c02202f3b8e
Day 14 part 1
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Fri, 16 Dec 2022 18:29:37 +0100 |
parents | 1ed3228c05ed |
children | e7ce9cd36033 |
files | 14/14.jl 14/input.txt 14/test_input.txt |
diffstat | 3 files changed, 275 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/14/14.jl Fri Dec 16 18:29:37 2022 +0100 @@ -0,0 +1,122 @@ + +mutable struct PS + s::String + pos::Int +end + +function initialize(s::String)::PS + PS(s, 1) +end + +function parse_coord(ps::PS)::Tuple{Int,Int} + e = findfirst((==)(','), ps.s[ps.pos:end]) + x = parse(Int, ps.s[ps.pos:ps.pos+e-2]); + ps.pos = ps.pos + e; + e = something(findfirst((==)(' '), ps.s[ps.pos:end]), length(ps.s)-ps.pos+2); + y = parse(Int, ps.s[ps.pos:ps.pos+e-2]); + ps.pos = ps.pos + e - 1; + (x, y) +end + +function parse_sep(ps::PS)::Bool + if ps.pos >= length(ps.s) + false + else + @assert ps.s[ps.pos:ps.pos+3] == " -> " + ps.pos += 4; + true + end +end + +function parse_coords(ps::PS)::Vector{Tuple{Int,Int}} + poss = Vector{Tuple{Int,Int}}(); + while true + push!(poss, parse_coord(ps)); + if !parse_sep(ps) + break + end + end + poss +end + +function parse_all_coords(fh::IOStream)::Vector{Vector{Tuple{Int,Int}}} + vs = Vector{Vector{Tuple{Int,Int}}}(); + for l in eachline(fh) + push!(vs, parse_coords(initialize(l))); + end + vs +end + +const EMPTY = 0; +const ROCK = 1; +const SAND = 2; + +function run_matrix(v::Vector{Vector{Tuple{Int,Int}}}) + # Not very efficient... + SAND_POINT = (500,0) + minx = min(SAND_POINT[1], minimum(minimum(t[1] for t in vv) for vv in v)); + maxx = max(SAND_POINT[1], maximum(maximum(t[1] for t in vv) for vv in v)); + miny = min(SAND_POINT[2], minimum(minimum(t[2] for t in vv) for vv in v)); + maxy = max(SAND_POINT[2], maximum(maximum(t[2] for t in vv) for vv in v)); + + m = zeros(Int8, maxx-minx+1, maxy-miny+1); + + for line in v + last = line[1]; + for p in @view line[2:end] + a, b = CartesianIndex(last .- (minx-1, miny-1)), CartesianIndex(p .- (minx-1, miny-1)); + @assert abs(last[1]-p[1]) == 0 || abs(last[2]-p[2]) == 0 + if a > b + a, b = b, a; + end + m[a:b] .= ROCK; + last = p; + end + end + + down, left, right = (0,1), (-1,1), (1,1); + X, Y = size(m); + isvalid(pos) = 0 < pos[1] && pos[1] <= X && 0 < pos[2] && pos[2] <= Y + + count = 0; + pos0 = SAND_POINT .- (minx-1, miny-1); + pos = pos0; + while true + if !isvalid(pos .+ down) + break; + elseif m[CartesianIndex(pos .+ down)] == EMPTY + pos = pos .+ down; + continue; + elseif !isvalid(pos .+ left) + break; + elseif m[CartesianIndex(pos .+ left)] == EMPTY + pos = pos .+ left; + continue + elseif !isvalid(pos .+ right) + break; + elseif m[CartesianIndex(pos .+ right)] == EMPTY + pos = pos .+ right; + continue; + else + count += 1; + m[CartesianIndex(pos)] = SAND; + println(" ==== $count ==== "); + pos = pos0; + continue; + end + end + show_cave(m); + @show count; + +end + +function show_cave(m::Matrix{Int8}) + for r in eachrow(m') + println(r); + end +end + +open("14/input.txt"; read=true) do fh + ac = (parse_all_coords(fh)); + m = run_matrix(ac); +end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/14/input.txt Fri Dec 16 18:29:37 2022 +0100 @@ -0,0 +1,151 @@ +506,104 -> 511,104 +504,96 -> 509,96 +487,80 -> 487,75 -> 487,80 -> 489,80 -> 489,72 -> 489,80 -> 491,80 -> 491,76 -> 491,80 -> 493,80 -> 493,71 -> 493,80 -> 495,80 -> 495,76 -> 495,80 -> 497,80 -> 497,75 -> 497,80 -> 499,80 -> 499,70 -> 499,80 -> 501,80 -> 501,78 -> 501,80 -> 503,80 -> 503,70 -> 503,80 +500,93 -> 500,83 -> 500,93 -> 502,93 -> 502,90 -> 502,93 -> 504,93 -> 504,85 -> 504,93 -> 506,93 -> 506,83 -> 506,93 +499,35 -> 504,35 +511,23 -> 516,23 +498,168 -> 498,158 -> 498,168 -> 500,168 -> 500,162 -> 500,168 -> 502,168 -> 502,163 -> 502,168 -> 504,168 -> 504,160 -> 504,168 -> 506,168 -> 506,159 -> 506,168 -> 508,168 -> 508,163 -> 508,168 -> 510,168 -> 510,163 -> 510,168 -> 512,168 -> 512,167 -> 512,168 -> 514,168 -> 514,161 -> 514,168 -> 516,168 -> 516,167 -> 516,168 +498,168 -> 498,158 -> 498,168 -> 500,168 -> 500,162 -> 500,168 -> 502,168 -> 502,163 -> 502,168 -> 504,168 -> 504,160 -> 504,168 -> 506,168 -> 506,159 -> 506,168 -> 508,168 -> 508,163 -> 508,168 -> 510,168 -> 510,163 -> 510,168 -> 512,168 -> 512,167 -> 512,168 -> 514,168 -> 514,161 -> 514,168 -> 516,168 -> 516,167 -> 516,168 +503,38 -> 508,38 +520,104 -> 525,104 +487,80 -> 487,75 -> 487,80 -> 489,80 -> 489,72 -> 489,80 -> 491,80 -> 491,76 -> 491,80 -> 493,80 -> 493,71 -> 493,80 -> 495,80 -> 495,76 -> 495,80 -> 497,80 -> 497,75 -> 497,80 -> 499,80 -> 499,70 -> 499,80 -> 501,80 -> 501,78 -> 501,80 -> 503,80 -> 503,70 -> 503,80 +499,28 -> 499,29 -> 513,29 -> 513,28 +504,23 -> 509,23 +487,80 -> 487,75 -> 487,80 -> 489,80 -> 489,72 -> 489,80 -> 491,80 -> 491,76 -> 491,80 -> 493,80 -> 493,71 -> 493,80 -> 495,80 -> 495,76 -> 495,80 -> 497,80 -> 497,75 -> 497,80 -> 499,80 -> 499,70 -> 499,80 -> 501,80 -> 501,78 -> 501,80 -> 503,80 -> 503,70 -> 503,80 +498,168 -> 498,158 -> 498,168 -> 500,168 -> 500,162 -> 500,168 -> 502,168 -> 502,163 -> 502,168 -> 504,168 -> 504,160 -> 504,168 -> 506,168 -> 506,159 -> 506,168 -> 508,168 -> 508,163 -> 508,168 -> 510,168 -> 510,163 -> 510,168 -> 512,168 -> 512,167 -> 512,168 -> 514,168 -> 514,161 -> 514,168 -> 516,168 -> 516,167 -> 516,168 +485,45 -> 485,47 -> 483,47 -> 483,54 -> 492,54 -> 492,47 -> 489,47 -> 489,45 +500,93 -> 500,83 -> 500,93 -> 502,93 -> 502,90 -> 502,93 -> 504,93 -> 504,85 -> 504,93 -> 506,93 -> 506,83 -> 506,93 +487,80 -> 487,75 -> 487,80 -> 489,80 -> 489,72 -> 489,80 -> 491,80 -> 491,76 -> 491,80 -> 493,80 -> 493,71 -> 493,80 -> 495,80 -> 495,76 -> 495,80 -> 497,80 -> 497,75 -> 497,80 -> 499,80 -> 499,70 -> 499,80 -> 501,80 -> 501,78 -> 501,80 -> 503,80 -> 503,70 -> 503,80 +499,28 -> 499,29 -> 513,29 -> 513,28 +487,80 -> 487,75 -> 487,80 -> 489,80 -> 489,72 -> 489,80 -> 491,80 -> 491,76 -> 491,80 -> 493,80 -> 493,71 -> 493,80 -> 495,80 -> 495,76 -> 495,80 -> 497,80 -> 497,75 -> 497,80 -> 499,80 -> 499,70 -> 499,80 -> 501,80 -> 501,78 -> 501,80 -> 503,80 -> 503,70 -> 503,80 +487,80 -> 487,75 -> 487,80 -> 489,80 -> 489,72 -> 489,80 -> 491,80 -> 491,76 -> 491,80 -> 493,80 -> 493,71 -> 493,80 -> 495,80 -> 495,76 -> 495,80 -> 497,80 -> 497,75 -> 497,80 -> 499,80 -> 499,70 -> 499,80 -> 501,80 -> 501,78 -> 501,80 -> 503,80 -> 503,70 -> 503,80 +508,98 -> 513,98 +500,93 -> 500,83 -> 500,93 -> 502,93 -> 502,90 -> 502,93 -> 504,93 -> 504,85 -> 504,93 -> 506,93 -> 506,83 -> 506,93 +524,107 -> 524,111 -> 522,111 -> 522,118 -> 534,118 -> 534,111 -> 528,111 -> 528,107 +507,20 -> 512,20 +489,67 -> 489,58 -> 489,67 -> 491,67 -> 491,61 -> 491,67 -> 493,67 -> 493,59 -> 493,67 -> 495,67 -> 495,64 -> 495,67 +506,130 -> 506,132 -> 502,132 -> 502,137 -> 516,137 -> 516,132 -> 511,132 -> 511,130 +498,168 -> 498,158 -> 498,168 -> 500,168 -> 500,162 -> 500,168 -> 502,168 -> 502,163 -> 502,168 -> 504,168 -> 504,160 -> 504,168 -> 506,168 -> 506,159 -> 506,168 -> 508,168 -> 508,163 -> 508,168 -> 510,168 -> 510,163 -> 510,168 -> 512,168 -> 512,167 -> 512,168 -> 514,168 -> 514,161 -> 514,168 -> 516,168 -> 516,167 -> 516,168 +510,127 -> 514,127 +524,107 -> 524,111 -> 522,111 -> 522,118 -> 534,118 -> 534,111 -> 528,111 -> 528,107 +498,168 -> 498,158 -> 498,168 -> 500,168 -> 500,162 -> 500,168 -> 502,168 -> 502,163 -> 502,168 -> 504,168 -> 504,160 -> 504,168 -> 506,168 -> 506,159 -> 506,168 -> 508,168 -> 508,163 -> 508,168 -> 510,168 -> 510,163 -> 510,168 -> 512,168 -> 512,167 -> 512,168 -> 514,168 -> 514,161 -> 514,168 -> 516,168 -> 516,167 -> 516,168 +492,104 -> 497,104 +492,35 -> 497,35 +498,168 -> 498,158 -> 498,168 -> 500,168 -> 500,162 -> 500,168 -> 502,168 -> 502,163 -> 502,168 -> 504,168 -> 504,160 -> 504,168 -> 506,168 -> 506,159 -> 506,168 -> 508,168 -> 508,163 -> 508,168 -> 510,168 -> 510,163 -> 510,168 -> 512,168 -> 512,167 -> 512,168 -> 514,168 -> 514,161 -> 514,168 -> 516,168 -> 516,167 -> 516,168 +528,127 -> 532,127 +498,140 -> 498,142 -> 493,142 -> 493,150 -> 504,150 -> 504,142 -> 503,142 -> 503,140 +498,168 -> 498,158 -> 498,168 -> 500,168 -> 500,162 -> 500,168 -> 502,168 -> 502,163 -> 502,168 -> 504,168 -> 504,160 -> 504,168 -> 506,168 -> 506,159 -> 506,168 -> 508,168 -> 508,163 -> 508,168 -> 510,168 -> 510,163 -> 510,168 -> 512,168 -> 512,167 -> 512,168 -> 514,168 -> 514,161 -> 514,168 -> 516,168 -> 516,167 -> 516,168 +500,93 -> 500,83 -> 500,93 -> 502,93 -> 502,90 -> 502,93 -> 504,93 -> 504,85 -> 504,93 -> 506,93 -> 506,83 -> 506,93 +485,45 -> 485,47 -> 483,47 -> 483,54 -> 492,54 -> 492,47 -> 489,47 -> 489,45 +498,168 -> 498,158 -> 498,168 -> 500,168 -> 500,162 -> 500,168 -> 502,168 -> 502,163 -> 502,168 -> 504,168 -> 504,160 -> 504,168 -> 506,168 -> 506,159 -> 506,168 -> 508,168 -> 508,163 -> 508,168 -> 510,168 -> 510,163 -> 510,168 -> 512,168 -> 512,167 -> 512,168 -> 514,168 -> 514,161 -> 514,168 -> 516,168 -> 516,167 -> 516,168 +516,127 -> 520,127 +506,130 -> 506,132 -> 502,132 -> 502,137 -> 516,137 -> 516,132 -> 511,132 -> 511,130 +495,32 -> 500,32 +493,14 -> 505,14 -> 505,13 +522,127 -> 526,127 +498,168 -> 498,158 -> 498,168 -> 500,168 -> 500,162 -> 500,168 -> 502,168 -> 502,163 -> 502,168 -> 504,168 -> 504,160 -> 504,168 -> 506,168 -> 506,159 -> 506,168 -> 508,168 -> 508,163 -> 508,168 -> 510,168 -> 510,163 -> 510,168 -> 512,168 -> 512,167 -> 512,168 -> 514,168 -> 514,161 -> 514,168 -> 516,168 -> 516,167 -> 516,168 +498,168 -> 498,158 -> 498,168 -> 500,168 -> 500,162 -> 500,168 -> 502,168 -> 502,163 -> 502,168 -> 504,168 -> 504,160 -> 504,168 -> 506,168 -> 506,159 -> 506,168 -> 508,168 -> 508,163 -> 508,168 -> 510,168 -> 510,163 -> 510,168 -> 512,168 -> 512,167 -> 512,168 -> 514,168 -> 514,161 -> 514,168 -> 516,168 -> 516,167 -> 516,168 +487,80 -> 487,75 -> 487,80 -> 489,80 -> 489,72 -> 489,80 -> 491,80 -> 491,76 -> 491,80 -> 493,80 -> 493,71 -> 493,80 -> 495,80 -> 495,76 -> 495,80 -> 497,80 -> 497,75 -> 497,80 -> 499,80 -> 499,70 -> 499,80 -> 501,80 -> 501,78 -> 501,80 -> 503,80 -> 503,70 -> 503,80 +493,14 -> 505,14 -> 505,13 +489,67 -> 489,58 -> 489,67 -> 491,67 -> 491,61 -> 491,67 -> 493,67 -> 493,59 -> 493,67 -> 495,67 -> 495,64 -> 495,67 +487,80 -> 487,75 -> 487,80 -> 489,80 -> 489,72 -> 489,80 -> 491,80 -> 491,76 -> 491,80 -> 493,80 -> 493,71 -> 493,80 -> 495,80 -> 495,76 -> 495,80 -> 497,80 -> 497,75 -> 497,80 -> 499,80 -> 499,70 -> 499,80 -> 501,80 -> 501,78 -> 501,80 -> 503,80 -> 503,70 -> 503,80 +498,168 -> 498,158 -> 498,168 -> 500,168 -> 500,162 -> 500,168 -> 502,168 -> 502,163 -> 502,168 -> 504,168 -> 504,160 -> 504,168 -> 506,168 -> 506,159 -> 506,168 -> 508,168 -> 508,163 -> 508,168 -> 510,168 -> 510,163 -> 510,168 -> 512,168 -> 512,167 -> 512,168 -> 514,168 -> 514,161 -> 514,168 -> 516,168 -> 516,167 -> 516,168 +498,168 -> 498,158 -> 498,168 -> 500,168 -> 500,162 -> 500,168 -> 502,168 -> 502,163 -> 502,168 -> 504,168 -> 504,160 -> 504,168 -> 506,168 -> 506,159 -> 506,168 -> 508,168 -> 508,163 -> 508,168 -> 510,168 -> 510,163 -> 510,168 -> 512,168 -> 512,167 -> 512,168 -> 514,168 -> 514,161 -> 514,168 -> 516,168 -> 516,167 -> 516,168 +500,93 -> 500,83 -> 500,93 -> 502,93 -> 502,90 -> 502,93 -> 504,93 -> 504,85 -> 504,93 -> 506,93 -> 506,83 -> 506,93 +525,125 -> 529,125 +487,80 -> 487,75 -> 487,80 -> 489,80 -> 489,72 -> 489,80 -> 491,80 -> 491,76 -> 491,80 -> 493,80 -> 493,71 -> 493,80 -> 495,80 -> 495,76 -> 495,80 -> 497,80 -> 497,75 -> 497,80 -> 499,80 -> 499,70 -> 499,80 -> 501,80 -> 501,78 -> 501,80 -> 503,80 -> 503,70 -> 503,80 +489,67 -> 489,58 -> 489,67 -> 491,67 -> 491,61 -> 491,67 -> 493,67 -> 493,59 -> 493,67 -> 495,67 -> 495,64 -> 495,67 +500,93 -> 500,83 -> 500,93 -> 502,93 -> 502,90 -> 502,93 -> 504,93 -> 504,85 -> 504,93 -> 506,93 -> 506,83 -> 506,93 +498,168 -> 498,158 -> 498,168 -> 500,168 -> 500,162 -> 500,168 -> 502,168 -> 502,163 -> 502,168 -> 504,168 -> 504,160 -> 504,168 -> 506,168 -> 506,159 -> 506,168 -> 508,168 -> 508,163 -> 508,168 -> 510,168 -> 510,163 -> 510,168 -> 512,168 -> 512,167 -> 512,168 -> 514,168 -> 514,161 -> 514,168 -> 516,168 -> 516,167 -> 516,168 +498,168 -> 498,158 -> 498,168 -> 500,168 -> 500,162 -> 500,168 -> 502,168 -> 502,163 -> 502,168 -> 504,168 -> 504,160 -> 504,168 -> 506,168 -> 506,159 -> 506,168 -> 508,168 -> 508,163 -> 508,168 -> 510,168 -> 510,163 -> 510,168 -> 512,168 -> 512,167 -> 512,168 -> 514,168 -> 514,161 -> 514,168 -> 516,168 -> 516,167 -> 516,168 +506,130 -> 506,132 -> 502,132 -> 502,137 -> 516,137 -> 516,132 -> 511,132 -> 511,130 +489,67 -> 489,58 -> 489,67 -> 491,67 -> 491,61 -> 491,67 -> 493,67 -> 493,59 -> 493,67 -> 495,67 -> 495,64 -> 495,67 +498,168 -> 498,158 -> 498,168 -> 500,168 -> 500,162 -> 500,168 -> 502,168 -> 502,163 -> 502,168 -> 504,168 -> 504,160 -> 504,168 -> 506,168 -> 506,159 -> 506,168 -> 508,168 -> 508,163 -> 508,168 -> 510,168 -> 510,163 -> 510,168 -> 512,168 -> 512,167 -> 512,168 -> 514,168 -> 514,161 -> 514,168 -> 516,168 -> 516,167 -> 516,168 +500,93 -> 500,83 -> 500,93 -> 502,93 -> 502,90 -> 502,93 -> 504,93 -> 504,85 -> 504,93 -> 506,93 -> 506,83 -> 506,93 +513,104 -> 518,104 +506,130 -> 506,132 -> 502,132 -> 502,137 -> 516,137 -> 516,132 -> 511,132 -> 511,130 +485,45 -> 485,47 -> 483,47 -> 483,54 -> 492,54 -> 492,47 -> 489,47 -> 489,45 +519,121 -> 523,121 +498,140 -> 498,142 -> 493,142 -> 493,150 -> 504,150 -> 504,142 -> 503,142 -> 503,140 +495,102 -> 500,102 +500,20 -> 505,20 +490,42 -> 504,42 -> 504,41 +500,93 -> 500,83 -> 500,93 -> 502,93 -> 502,90 -> 502,93 -> 504,93 -> 504,85 -> 504,93 -> 506,93 -> 506,83 -> 506,93 +498,168 -> 498,158 -> 498,168 -> 500,168 -> 500,162 -> 500,168 -> 502,168 -> 502,163 -> 502,168 -> 504,168 -> 504,160 -> 504,168 -> 506,168 -> 506,159 -> 506,168 -> 508,168 -> 508,163 -> 508,168 -> 510,168 -> 510,163 -> 510,168 -> 512,168 -> 512,167 -> 512,168 -> 514,168 -> 514,161 -> 514,168 -> 516,168 -> 516,167 -> 516,168 +487,80 -> 487,75 -> 487,80 -> 489,80 -> 489,72 -> 489,80 -> 491,80 -> 491,76 -> 491,80 -> 493,80 -> 493,71 -> 493,80 -> 495,80 -> 495,76 -> 495,80 -> 497,80 -> 497,75 -> 497,80 -> 499,80 -> 499,70 -> 499,80 -> 501,80 -> 501,78 -> 501,80 -> 503,80 -> 503,70 -> 503,80 +500,93 -> 500,83 -> 500,93 -> 502,93 -> 502,90 -> 502,93 -> 504,93 -> 504,85 -> 504,93 -> 506,93 -> 506,83 -> 506,93 +498,140 -> 498,142 -> 493,142 -> 493,150 -> 504,150 -> 504,142 -> 503,142 -> 503,140 +487,80 -> 487,75 -> 487,80 -> 489,80 -> 489,72 -> 489,80 -> 491,80 -> 491,76 -> 491,80 -> 493,80 -> 493,71 -> 493,80 -> 495,80 -> 495,76 -> 495,80 -> 497,80 -> 497,75 -> 497,80 -> 499,80 -> 499,70 -> 499,80 -> 501,80 -> 501,78 -> 501,80 -> 503,80 -> 503,70 -> 503,80 +498,168 -> 498,158 -> 498,168 -> 500,168 -> 500,162 -> 500,168 -> 502,168 -> 502,163 -> 502,168 -> 504,168 -> 504,160 -> 504,168 -> 506,168 -> 506,159 -> 506,168 -> 508,168 -> 508,163 -> 508,168 -> 510,168 -> 510,163 -> 510,168 -> 512,168 -> 512,167 -> 512,168 -> 514,168 -> 514,161 -> 514,168 -> 516,168 -> 516,167 -> 516,168 +498,168 -> 498,158 -> 498,168 -> 500,168 -> 500,162 -> 500,168 -> 502,168 -> 502,163 -> 502,168 -> 504,168 -> 504,160 -> 504,168 -> 506,168 -> 506,159 -> 506,168 -> 508,168 -> 508,163 -> 508,168 -> 510,168 -> 510,163 -> 510,168 -> 512,168 -> 512,167 -> 512,168 -> 514,168 -> 514,161 -> 514,168 -> 516,168 -> 516,167 -> 516,168 +487,80 -> 487,75 -> 487,80 -> 489,80 -> 489,72 -> 489,80 -> 491,80 -> 491,76 -> 491,80 -> 493,80 -> 493,71 -> 493,80 -> 495,80 -> 495,76 -> 495,80 -> 497,80 -> 497,75 -> 497,80 -> 499,80 -> 499,70 -> 499,80 -> 501,80 -> 501,78 -> 501,80 -> 503,80 -> 503,70 -> 503,80 +524,107 -> 524,111 -> 522,111 -> 522,118 -> 534,118 -> 534,111 -> 528,111 -> 528,107 +485,45 -> 485,47 -> 483,47 -> 483,54 -> 492,54 -> 492,47 -> 489,47 -> 489,45 +498,168 -> 498,158 -> 498,168 -> 500,168 -> 500,162 -> 500,168 -> 502,168 -> 502,163 -> 502,168 -> 504,168 -> 504,160 -> 504,168 -> 506,168 -> 506,159 -> 506,168 -> 508,168 -> 508,163 -> 508,168 -> 510,168 -> 510,163 -> 510,168 -> 512,168 -> 512,167 -> 512,168 -> 514,168 -> 514,161 -> 514,168 -> 516,168 -> 516,167 -> 516,168 +489,67 -> 489,58 -> 489,67 -> 491,67 -> 491,61 -> 491,67 -> 493,67 -> 493,59 -> 493,67 -> 495,67 -> 495,64 -> 495,67 +509,102 -> 514,102 +513,125 -> 517,125 +487,80 -> 487,75 -> 487,80 -> 489,80 -> 489,72 -> 489,80 -> 491,80 -> 491,76 -> 491,80 -> 493,80 -> 493,71 -> 493,80 -> 495,80 -> 495,76 -> 495,80 -> 497,80 -> 497,75 -> 497,80 -> 499,80 -> 499,70 -> 499,80 -> 501,80 -> 501,78 -> 501,80 -> 503,80 -> 503,70 -> 503,80 +487,80 -> 487,75 -> 487,80 -> 489,80 -> 489,72 -> 489,80 -> 491,80 -> 491,76 -> 491,80 -> 493,80 -> 493,71 -> 493,80 -> 495,80 -> 495,76 -> 495,80 -> 497,80 -> 497,75 -> 497,80 -> 499,80 -> 499,70 -> 499,80 -> 501,80 -> 501,78 -> 501,80 -> 503,80 -> 503,70 -> 503,80 +490,42 -> 504,42 -> 504,41 +498,100 -> 503,100 +500,93 -> 500,83 -> 500,93 -> 502,93 -> 502,90 -> 502,93 -> 504,93 -> 504,85 -> 504,93 -> 506,93 -> 506,83 -> 506,93 +489,67 -> 489,58 -> 489,67 -> 491,67 -> 491,61 -> 491,67 -> 493,67 -> 493,59 -> 493,67 -> 495,67 -> 495,64 -> 495,67 +498,140 -> 498,142 -> 493,142 -> 493,150 -> 504,150 -> 504,142 -> 503,142 -> 503,140 +489,38 -> 494,38 +487,80 -> 487,75 -> 487,80 -> 489,80 -> 489,72 -> 489,80 -> 491,80 -> 491,76 -> 491,80 -> 493,80 -> 493,71 -> 493,80 -> 495,80 -> 495,76 -> 495,80 -> 497,80 -> 497,75 -> 497,80 -> 499,80 -> 499,70 -> 499,80 -> 501,80 -> 501,78 -> 501,80 -> 503,80 -> 503,70 -> 503,80 +498,168 -> 498,158 -> 498,168 -> 500,168 -> 500,162 -> 500,168 -> 502,168 -> 502,163 -> 502,168 -> 504,168 -> 504,160 -> 504,168 -> 506,168 -> 506,159 -> 506,168 -> 508,168 -> 508,163 -> 508,168 -> 510,168 -> 510,163 -> 510,168 -> 512,168 -> 512,167 -> 512,168 -> 514,168 -> 514,161 -> 514,168 -> 516,168 -> 516,167 -> 516,168 +485,45 -> 485,47 -> 483,47 -> 483,54 -> 492,54 -> 492,47 -> 489,47 -> 489,45 +506,130 -> 506,132 -> 502,132 -> 502,137 -> 516,137 -> 516,132 -> 511,132 -> 511,130 +498,168 -> 498,158 -> 498,168 -> 500,168 -> 500,162 -> 500,168 -> 502,168 -> 502,163 -> 502,168 -> 504,168 -> 504,160 -> 504,168 -> 506,168 -> 506,159 -> 506,168 -> 508,168 -> 508,163 -> 508,168 -> 510,168 -> 510,163 -> 510,168 -> 512,168 -> 512,167 -> 512,168 -> 514,168 -> 514,161 -> 514,168 -> 516,168 -> 516,167 -> 516,168 +524,107 -> 524,111 -> 522,111 -> 522,118 -> 534,118 -> 534,111 -> 528,111 -> 528,107 +498,140 -> 498,142 -> 493,142 -> 493,150 -> 504,150 -> 504,142 -> 503,142 -> 503,140 +506,130 -> 506,132 -> 502,132 -> 502,137 -> 516,137 -> 516,132 -> 511,132 -> 511,130 +496,38 -> 501,38 +487,80 -> 487,75 -> 487,80 -> 489,80 -> 489,72 -> 489,80 -> 491,80 -> 491,76 -> 491,80 -> 493,80 -> 493,71 -> 493,80 -> 495,80 -> 495,76 -> 495,80 -> 497,80 -> 497,75 -> 497,80 -> 499,80 -> 499,70 -> 499,80 -> 501,80 -> 501,78 -> 501,80 -> 503,80 -> 503,70 -> 503,80 +498,140 -> 498,142 -> 493,142 -> 493,150 -> 504,150 -> 504,142 -> 503,142 -> 503,140 +519,125 -> 523,125 +501,154 -> 501,155 -> 507,155 +498,168 -> 498,158 -> 498,168 -> 500,168 -> 500,162 -> 500,168 -> 502,168 -> 502,163 -> 502,168 -> 504,168 -> 504,160 -> 504,168 -> 506,168 -> 506,159 -> 506,168 -> 508,168 -> 508,163 -> 508,168 -> 510,168 -> 510,163 -> 510,168 -> 512,168 -> 512,167 -> 512,168 -> 514,168 -> 514,161 -> 514,168 -> 516,168 -> 516,167 -> 516,168 +498,168 -> 498,158 -> 498,168 -> 500,168 -> 500,162 -> 500,168 -> 502,168 -> 502,163 -> 502,168 -> 504,168 -> 504,160 -> 504,168 -> 506,168 -> 506,159 -> 506,168 -> 508,168 -> 508,163 -> 508,168 -> 510,168 -> 510,163 -> 510,168 -> 512,168 -> 512,167 -> 512,168 -> 514,168 -> 514,161 -> 514,168 -> 516,168 -> 516,167 -> 516,168 +499,104 -> 504,104 +489,67 -> 489,58 -> 489,67 -> 491,67 -> 491,61 -> 491,67 -> 493,67 -> 493,59 -> 493,67 -> 495,67 -> 495,64 -> 495,67 +501,154 -> 501,155 -> 507,155 +503,17 -> 508,17 +516,123 -> 520,123 +487,80 -> 487,75 -> 487,80 -> 489,80 -> 489,72 -> 489,80 -> 491,80 -> 491,76 -> 491,80 -> 493,80 -> 493,71 -> 493,80 -> 495,80 -> 495,76 -> 495,80 -> 497,80 -> 497,75 -> 497,80 -> 499,80 -> 499,70 -> 499,80 -> 501,80 -> 501,78 -> 501,80 -> 503,80 -> 503,70 -> 503,80 +487,80 -> 487,75 -> 487,80 -> 489,80 -> 489,72 -> 489,80 -> 491,80 -> 491,76 -> 491,80 -> 493,80 -> 493,71 -> 493,80 -> 495,80 -> 495,76 -> 495,80 -> 497,80 -> 497,75 -> 497,80 -> 499,80 -> 499,70 -> 499,80 -> 501,80 -> 501,78 -> 501,80 -> 503,80 -> 503,70 -> 503,80 +505,100 -> 510,100 +489,67 -> 489,58 -> 489,67 -> 491,67 -> 491,61 -> 491,67 -> 493,67 -> 493,59 -> 493,67 -> 495,67 -> 495,64 -> 495,67 +498,168 -> 498,158 -> 498,168 -> 500,168 -> 500,162 -> 500,168 -> 502,168 -> 502,163 -> 502,168 -> 504,168 -> 504,160 -> 504,168 -> 506,168 -> 506,159 -> 506,168 -> 508,168 -> 508,163 -> 508,168 -> 510,168 -> 510,163 -> 510,168 -> 512,168 -> 512,167 -> 512,168 -> 514,168 -> 514,161 -> 514,168 -> 516,168 -> 516,167 -> 516,168 +524,107 -> 524,111 -> 522,111 -> 522,118 -> 534,118 -> 534,111 -> 528,111 -> 528,107 +500,93 -> 500,83 -> 500,93 -> 502,93 -> 502,90 -> 502,93 -> 504,93 -> 504,85 -> 504,93 -> 506,93 -> 506,83 -> 506,93 +489,67 -> 489,58 -> 489,67 -> 491,67 -> 491,61 -> 491,67 -> 493,67 -> 493,59 -> 493,67 -> 495,67 -> 495,64 -> 495,67 +487,80 -> 487,75 -> 487,80 -> 489,80 -> 489,72 -> 489,80 -> 491,80 -> 491,76 -> 491,80 -> 493,80 -> 493,71 -> 493,80 -> 495,80 -> 495,76 -> 495,80 -> 497,80 -> 497,75 -> 497,80 -> 499,80 -> 499,70 -> 499,80 -> 501,80 -> 501,78 -> 501,80 -> 503,80 -> 503,70 -> 503,80 +498,140 -> 498,142 -> 493,142 -> 493,150 -> 504,150 -> 504,142 -> 503,142 -> 503,140 +506,130 -> 506,132 -> 502,132 -> 502,137 -> 516,137 -> 516,132 -> 511,132 -> 511,130 +516,102 -> 521,102 +487,80 -> 487,75 -> 487,80 -> 489,80 -> 489,72 -> 489,80 -> 491,80 -> 491,76 -> 491,80 -> 493,80 -> 493,71 -> 493,80 -> 495,80 -> 495,76 -> 495,80 -> 497,80 -> 497,75 -> 497,80 -> 499,80 -> 499,70 -> 499,80 -> 501,80 -> 501,78 -> 501,80 -> 503,80 -> 503,70 -> 503,80 +485,45 -> 485,47 -> 483,47 -> 483,54 -> 492,54 -> 492,47 -> 489,47 -> 489,45 +522,123 -> 526,123 +485,45 -> 485,47 -> 483,47 -> 483,54 -> 492,54 -> 492,47 -> 489,47 -> 489,45 +498,168 -> 498,158 -> 498,168 -> 500,168 -> 500,162 -> 500,168 -> 502,168 -> 502,163 -> 502,168 -> 504,168 -> 504,160 -> 504,168 -> 506,168 -> 506,159 -> 506,168 -> 508,168 -> 508,163 -> 508,168 -> 510,168 -> 510,163 -> 510,168 -> 512,168 -> 512,167 -> 512,168 -> 514,168 -> 514,161 -> 514,168 -> 516,168 -> 516,167 -> 516,168 +499,28 -> 499,29 -> 513,29 -> 513,28 +498,168 -> 498,158 -> 498,168 -> 500,168 -> 500,162 -> 500,168 -> 502,168 -> 502,163 -> 502,168 -> 504,168 -> 504,160 -> 504,168 -> 506,168 -> 506,159 -> 506,168 -> 508,168 -> 508,163 -> 508,168 -> 510,168 -> 510,163 -> 510,168 -> 512,168 -> 512,167 -> 512,168 -> 514,168 -> 514,161 -> 514,168 -> 516,168 -> 516,167 -> 516,168 +487,80 -> 487,75 -> 487,80 -> 489,80 -> 489,72 -> 489,80 -> 491,80 -> 491,76 -> 491,80 -> 493,80 -> 493,71 -> 493,80 -> 495,80 -> 495,76 -> 495,80 -> 497,80 -> 497,75 -> 497,80 -> 499,80 -> 499,70 -> 499,80 -> 501,80 -> 501,78 -> 501,80 -> 503,80 -> 503,70 -> 503,80 +512,100 -> 517,100 +524,107 -> 524,111 -> 522,111 -> 522,118 -> 534,118 -> 534,111 -> 528,111 -> 528,107 +489,67 -> 489,58 -> 489,67 -> 491,67 -> 491,61 -> 491,67 -> 493,67 -> 493,59 -> 493,67 -> 495,67 -> 495,64 -> 495,67 +497,23 -> 502,23 +524,107 -> 524,111 -> 522,111 -> 522,118 -> 534,118 -> 534,111 -> 528,111 -> 528,107 +489,67 -> 489,58 -> 489,67 -> 491,67 -> 491,61 -> 491,67 -> 493,67 -> 493,59 -> 493,67 -> 495,67 -> 495,64 -> 495,67 +487,80 -> 487,75 -> 487,80 -> 489,80 -> 489,72 -> 489,80 -> 491,80 -> 491,76 -> 491,80 -> 493,80 -> 493,71 -> 493,80 -> 495,80 -> 495,76 -> 495,80 -> 497,80 -> 497,75 -> 497,80 -> 499,80 -> 499,70 -> 499,80 -> 501,80 -> 501,78 -> 501,80 -> 503,80 -> 503,70 -> 503,80 +498,168 -> 498,158 -> 498,168 -> 500,168 -> 500,162 -> 500,168 -> 502,168 -> 502,163 -> 502,168 -> 504,168 -> 504,160 -> 504,168 -> 506,168 -> 506,159 -> 506,168 -> 508,168 -> 508,163 -> 508,168 -> 510,168 -> 510,163 -> 510,168 -> 512,168 -> 512,167 -> 512,168 -> 514,168 -> 514,161 -> 514,168 -> 516,168 -> 516,167 -> 516,168 +498,168 -> 498,158 -> 498,168 -> 500,168 -> 500,162 -> 500,168 -> 502,168 -> 502,163 -> 502,168 -> 504,168 -> 504,160 -> 504,168 -> 506,168 -> 506,159 -> 506,168 -> 508,168 -> 508,163 -> 508,168 -> 510,168 -> 510,163 -> 510,168 -> 512,168 -> 512,167 -> 512,168 -> 514,168 -> 514,161 -> 514,168 -> 516,168 -> 516,167 -> 516,168 +501,98 -> 506,98 +487,80 -> 487,75 -> 487,80 -> 489,80 -> 489,72 -> 489,80 -> 491,80 -> 491,76 -> 491,80 -> 493,80 -> 493,71 -> 493,80 -> 495,80 -> 495,76 -> 495,80 -> 497,80 -> 497,75 -> 497,80 -> 499,80 -> 499,70 -> 499,80 -> 501,80 -> 501,78 -> 501,80 -> 503,80 -> 503,70 -> 503,80 +487,80 -> 487,75 -> 487,80 -> 489,80 -> 489,72 -> 489,80 -> 491,80 -> 491,76 -> 491,80 -> 493,80 -> 493,71 -> 493,80 -> 495,80 -> 495,76 -> 495,80 -> 497,80 -> 497,75 -> 497,80 -> 499,80 -> 499,70 -> 499,80 -> 501,80 -> 501,78 -> 501,80 -> 503,80 -> 503,70 -> 503,80 +498,168 -> 498,158 -> 498,168 -> 500,168 -> 500,162 -> 500,168 -> 502,168 -> 502,163 -> 502,168 -> 504,168 -> 504,160 -> 504,168 -> 506,168 -> 506,159 -> 506,168 -> 508,168 -> 508,163 -> 508,168 -> 510,168 -> 510,163 -> 510,168 -> 512,168 -> 512,167 -> 512,168 -> 514,168 -> 514,161 -> 514,168 -> 516,168 -> 516,167 -> 516,168 +502,102 -> 507,102 +487,80 -> 487,75 -> 487,80 -> 489,80 -> 489,72 -> 489,80 -> 491,80 -> 491,76 -> 491,80 -> 493,80 -> 493,71 -> 493,80 -> 495,80 -> 495,76 -> 495,80 -> 497,80 -> 497,75 -> 497,80 -> 499,80 -> 499,70 -> 499,80 -> 501,80 -> 501,78 -> 501,80 -> 503,80 -> 503,70 -> 503,80 +487,80 -> 487,75 -> 487,80 -> 489,80 -> 489,72 -> 489,80 -> 491,80 -> 491,76 -> 491,80 -> 493,80 -> 493,71 -> 493,80 -> 495,80 -> 495,76 -> 495,80 -> 497,80 -> 497,75 -> 497,80 -> 499,80 -> 499,70 -> 499,80 -> 501,80 -> 501,78 -> 501,80 -> 503,80 -> 503,70 -> 503,80