Part 1


In [1]:
function steps_out(maze)
    i = 1
    steps = 0
    while i>0 && i<=length(maze) 
        prev_i = i
        i += maze[i]
        maze[prev_i] += 1
        steps += 1
    end
    steps
end


Out[1]:
steps_out (generic function with 1 method)

In [2]:
steps_out([0 3 0 1 -3])


Out[2]:
5

In [3]:
steps_out(readdlm("inputs/day5.txt", Int16))


Out[3]:
381680

Part 2


In [4]:
function steps_out_part2(maze)
    i = 1
    steps = 0
    while i>0 && i<=length(maze) 
        prev_i = i
        i += maze[i]
        if maze[prev_i] >= 3
            maze[prev_i] -= 1
        else
            maze[prev_i] += 1
        end
        steps += 1
    end
    steps
end


Out[4]:
steps_out_part2 (generic function with 1 method)

In [5]:
steps_out_part2(readdlm("inputs/day5.txt", Int16))


Out[5]:
29717847

In [ ]: