changeset 13:dfed6e6ea69b

Day 09 part 1
author Lewin Bormann <lbo@spheniscida.de>
date Sun, 11 Dec 2022 10:48:43 +0100
parents ecf80e49d919
children 4bad3ee77ef2
files 09/09.jl 09/input.txt
diffstat 2 files changed, 2108 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/09/09.jl	Sun Dec 11 10:48:43 2022 +0100
@@ -0,0 +1,108 @@
+
+const test_input::String = "R 4
+U 4
+L 3
+D 1
+R 4
+D 1
+L 5
+R 2";
+
+@enum Direction begin
+    U
+    D
+    L
+    R
+end
+
+function to_direction(c::Char)::Direction
+    if c == 'U'
+        U
+    elseif c == 'D'
+        D
+    elseif c == 'L'
+        L
+    elseif c == 'R'
+        R
+    end
+end
+
+struct Step
+    direction::Direction
+    n::Int
+end
+
+function parse_input(lines::Iter)::Vector{Step} where {Iter}
+    v = Vector{Step}();
+    for l in lines
+        a, b = split(l, ' ');
+        push!(v, Step(to_direction(a[1]), parse(Int, b)));
+    end
+    v
+end
+
+function wheretogo(H::Tuple{Int,Int}, T::Tuple{Int,Int})::Vector{Direction}
+    if H == T
+        []
+    elseif H[1]==T[1]
+        if abs(H[2]-T[2]) < 2
+            []
+        else
+            (H[2] > T[2] ? [U] : [D])
+        end
+    elseif H[2]==T[2]
+        if abs(H[1]-T[1]) < 2
+            []
+        else
+            (H[1] < T[1] ? [L] : [R])
+        end
+    elseif abs(H[1]-T[1]) + abs(H[2]-T[2]) == 3  # diagonal
+        if abs(H[1]-T[1]) > abs(H[2]-T[2])
+            snd = (H[2]-T[2]) > 0 ? U : D;
+            (H[1]-T[1]) > 0 ? ([R, snd]) : ([L, snd])
+        else
+            snd = (H[1]-T[1]) > 0 ? R : L;
+            (H[2]-T[2]) > 0 ? ([U, snd]) : ([D, snd])
+        end
+    else
+        []
+    end
+end
+
+function apply(p::Tuple{Int,Int}, dir::Direction)::Tuple{Int,Int}
+    if dir == U
+        p .+ (0,1)
+    elseif dir == D
+        p .+ (0,-1)
+    elseif dir == L
+        p .+ (-1,0)
+    else
+        p .+ (1,0)
+    end
+end
+
+function process1(v::Vector{Step})::Int
+    H = (0, 0);
+    T = (0, 0);
+    visited = Set{Tuple{Int,Int}}([T])
+
+    for step in v
+        for i = 1:step.n
+            H = apply(H, step.direction);
+            wtg = wheretogo(H, T);
+            for w in wtg::Vector{Direction}
+                T = apply(T, w);
+            end
+            @show T
+            push!(visited, T);
+        end
+    end
+    length(visited)
+end
+
+println("test input (should be 13):");
+println(process1(parse_input(split(test_input, '\n'))));
+println("part 1:");
+open("09/input.txt"; read=true) do fh
+    println(process1(parse_input(eachline(fh))));
+end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/09/input.txt	Sun Dec 11 10:48:43 2022 +0100
@@ -0,0 +1,2000 @@
+R 1
+D 1
+L 1
+D 1
+L 2
+U 2
+D 2
+R 1
+D 1
+L 2
+R 1
+L 2
+R 2
+L 1
+R 2
+D 1
+R 1
+D 2
+U 1
+R 1
+D 2
+R 2
+L 1
+D 1
+R 2
+D 2
+R 1
+L 2
+D 1
+L 2
+D 2
+R 2
+D 2
+L 1
+D 1
+L 1
+D 1
+R 2
+L 2
+R 2
+D 2
+R 2
+D 2
+R 2
+L 2
+R 2
+U 1
+R 1
+D 2
+R 1
+L 1
+U 1
+L 2
+U 1
+D 1
+R 1
+U 1
+R 2
+D 2
+U 2
+D 2
+R 1
+L 1
+U 2
+L 2
+D 2
+L 1
+R 2
+D 1
+R 1
+L 2
+U 2
+R 1
+D 1
+U 2
+L 1
+U 2
+L 1
+R 2
+D 2
+R 1
+D 2
+R 1
+D 1
+R 1
+D 1
+L 2
+D 2
+R 2
+D 2
+R 1
+D 1
+R 2
+L 1
+U 2
+R 2
+D 1
+L 2
+U 1
+D 2
+L 2
+D 2
+L 2
+D 1
+R 1
+L 1
+U 2
+L 2
+D 1
+L 2
+U 1
+L 3
+D 1
+R 1
+U 3
+L 2
+U 1
+D 3
+L 1
+D 2
+R 1
+L 3
+D 2
+L 2
+D 1
+L 1
+R 2
+L 3
+D 2
+L 1
+U 3
+L 1
+R 3
+U 1
+R 3
+U 3
+D 1
+L 2
+U 2
+D 2
+U 3
+D 3
+L 1
+U 3
+D 3
+L 3
+R 1
+D 1
+U 2
+R 1
+U 3
+L 3
+D 2
+L 3
+D 1
+R 2
+U 1
+D 2
+L 3
+D 2
+U 2
+R 1
+L 3
+R 2
+L 2
+U 2
+R 2
+L 1
+D 1
+U 3
+D 1
+R 2
+L 1
+U 1
+R 1
+L 1
+D 2
+L 1
+D 1
+L 1
+D 3
+U 3
+D 3
+R 3
+D 2
+L 1
+R 1
+L 1
+D 3
+L 2
+D 1
+R 1
+D 3
+U 3
+L 2
+D 1
+U 1
+D 1
+U 3
+R 2
+L 1
+D 3
+U 3
+D 3
+U 2
+L 1
+R 1
+U 1
+D 3
+R 2
+U 1
+L 2
+U 1
+L 2
+U 2
+D 1
+L 3
+U 1
+R 1
+L 2
+U 1
+D 2
+L 1
+D 4
+L 3
+D 4
+R 2
+D 2
+L 3
+U 2
+L 3
+D 1
+L 4
+R 2
+D 1
+U 4
+L 3
+D 1
+R 1
+D 4
+R 4
+U 3
+D 3
+L 3
+D 3
+U 1
+R 4
+L 2
+D 1
+R 3
+L 4
+D 1
+R 2
+L 4
+U 3
+L 4
+R 1
+L 3
+D 1
+U 4
+L 4
+R 3
+U 4
+D 3
+U 2
+R 3
+D 1
+R 3
+L 3
+D 2
+U 4
+R 3
+U 4
+L 4
+R 4
+L 2
+R 2
+D 3
+L 2
+U 1
+L 4
+U 3
+R 3
+L 4
+U 1
+L 1
+U 1
+D 2
+R 1
+U 1
+L 3
+R 4
+L 2
+D 4
+R 3
+L 2
+R 1
+L 4
+R 1
+D 2
+R 4
+L 3
+U 3
+L 3
+D 1
+R 2
+L 4
+D 2
+R 3
+U 2
+D 3
+R 2
+U 4
+L 1
+U 2
+D 2
+L 1
+D 4
+R 3
+L 3
+R 4
+D 1
+U 2
+R 2
+D 1
+L 3
+U 2
+L 3
+R 1
+D 1
+R 4
+L 4
+R 1
+U 3
+R 4
+L 3
+D 3
+L 4
+R 4
+D 5
+R 2
+U 5
+L 1
+D 5
+L 5
+R 1
+L 5
+U 5
+L 3
+D 3
+L 2
+D 1
+L 1
+U 1
+L 1
+D 2
+L 3
+U 2
+D 3
+L 4
+R 5
+U 2
+L 3
+D 3
+R 4
+U 3
+D 5
+U 1
+R 3
+L 3
+D 1
+U 2
+L 3
+R 5
+D 2
+R 2
+U 4
+L 2
+R 4
+D 5
+R 2
+U 2
+D 5
+L 3
+R 2
+D 2
+L 1
+U 2
+R 1
+D 2
+U 1
+L 2
+U 5
+R 1
+U 4
+D 1
+R 4
+U 4
+R 3
+D 1
+U 2
+L 5
+U 1
+L 3
+D 1
+U 5
+D 5
+U 1
+L 3
+D 1
+R 2
+L 4
+R 4
+L 2
+U 2
+R 5
+U 1
+R 5
+L 1
+D 1
+R 3
+D 2
+R 4
+L 5
+D 3
+L 3
+U 5
+R 2
+D 5
+L 1
+U 2
+D 2
+U 4
+R 4
+L 4
+U 1
+D 1
+U 4
+R 4
+D 3
+L 4
+R 2
+D 3
+R 5
+U 4
+L 4
+R 4
+L 2
+U 4
+R 4
+D 1
+R 3
+D 6
+U 6
+D 5
+L 4
+R 2
+D 5
+R 5
+D 3
+R 3
+U 3
+D 3
+U 2
+L 2
+R 6
+L 6
+D 1
+L 4
+R 6
+D 5
+L 2
+R 4
+U 2
+L 5
+R 6
+U 6
+D 1
+U 3
+D 3
+R 1
+L 4
+D 2
+U 1
+L 2
+R 1
+D 3
+U 5
+R 1
+D 2
+U 5
+D 5
+R 3
+U 2
+D 4
+U 2
+R 5
+U 4
+R 2
+L 4
+U 5
+L 3
+D 1
+R 3
+U 3
+L 1
+U 1
+L 2
+R 5
+U 2
+D 4
+R 1
+D 5
+L 6
+R 6
+U 2
+D 4
+R 4
+D 4
+L 6
+D 3
+U 1
+L 4
+U 5
+R 3
+D 3
+R 6
+D 3
+R 6
+D 1
+L 3
+R 4
+D 5
+R 4
+D 6
+R 3
+U 6
+R 4
+U 1
+D 4
+L 2
+D 4
+L 2
+U 2
+R 4
+D 4
+L 1
+D 4
+U 4
+D 6
+U 3
+D 1
+L 2
+D 5
+R 2
+D 2
+L 5
+R 4
+L 5
+R 5
+U 6
+L 1
+R 3
+U 5
+D 1
+U 2
+R 2
+D 4
+R 4
+D 6
+R 4
+L 4
+D 2
+R 6
+L 1
+D 1
+U 3
+R 1
+D 4
+L 1
+D 3
+U 5
+R 2
+U 2
+D 6
+L 5
+U 4
+L 5
+R 3
+U 7
+R 2
+D 1
+R 6
+D 6
+U 6
+R 5
+D 5
+R 6
+D 6
+R 6
+D 5
+U 5
+D 7
+L 4
+U 3
+D 3
+U 2
+L 2
+U 4
+D 1
+R 7
+U 4
+L 1
+D 4
+L 3
+R 6
+L 1
+R 2
+L 4
+R 5
+U 6
+D 6
+U 2
+R 5
+U 4
+L 5
+U 3
+D 1
+L 6
+R 2
+D 2
+L 3
+U 5
+R 6
+U 7
+R 1
+L 7
+D 5
+U 5
+D 2
+R 4
+U 2
+L 7
+R 4
+D 7
+U 4
+D 3
+R 2
+D 3
+L 3
+U 6
+R 2
+L 6
+D 2
+R 6
+L 3
+R 4
+U 1
+D 3
+U 2
+L 4
+D 6
+U 7
+D 4
+L 3
+R 1
+U 6
+L 3
+R 3
+U 7
+R 7
+U 6
+L 1
+U 8
+L 1
+D 8
+L 6
+R 3
+L 7
+D 5
+U 8
+R 5
+L 4
+U 8
+L 3
+D 2
+U 1
+R 8
+D 8
+R 7
+U 1
+D 2
+R 6
+L 8
+D 5
+L 6
+U 1
+R 2
+U 6
+L 3
+D 6
+U 2
+R 2
+D 1
+U 4
+L 8
+D 8
+R 1
+L 2
+R 2
+D 7
+U 5
+D 8
+L 1
+R 7
+L 8
+D 2
+R 8
+D 7
+U 3
+R 3
+U 3
+D 1
+L 2
+U 6
+D 7
+U 8
+R 6
+D 6
+R 5
+U 7
+R 8
+L 1
+U 7
+D 2
+R 6
+U 7
+R 3
+D 3
+R 3
+U 4
+D 8
+L 7
+R 5
+U 1
+L 6
+R 8
+D 6
+R 4
+L 4
+D 1
+U 5
+L 6
+U 1
+D 8
+U 2
+R 4
+L 2
+R 8
+D 1
+R 1
+L 4
+R 7
+U 7
+D 8
+R 8
+L 6
+U 7
+L 4
+D 2
+R 2
+U 5
+D 1
+R 5
+L 6
+U 8
+L 1
+R 7
+D 8
+L 3
+D 2
+U 3
+D 3
+L 1
+R 3
+L 7
+D 6
+R 4
+D 1
+U 8
+L 3
+D 6
+L 7
+U 5
+R 6
+D 2
+L 4
+R 9
+D 2
+R 4
+D 6
+R 5
+L 7
+R 5
+U 7
+R 1
+L 5
+U 6
+R 4
+D 8
+U 5
+L 4
+U 1
+D 8
+U 9
+D 4
+U 7
+L 4
+R 8
+D 4
+R 4
+D 8
+R 1
+D 3
+R 5
+D 7
+U 8
+D 2
+R 2
+U 1
+L 1
+U 2
+L 9
+R 9
+D 1
+U 1
+D 8
+R 3
+L 8
+D 7
+U 9
+R 6
+L 4
+U 8
+D 4
+U 2
+L 3
+D 8
+L 2
+R 5
+U 4
+D 6
+U 6
+L 8
+R 7
+D 2
+R 3
+L 8
+U 9
+R 2
+U 4
+L 9
+R 5
+D 5
+R 4
+D 6
+R 3
+D 3
+R 8
+D 3
+R 4
+D 1
+U 2
+D 6
+R 4
+D 7
+U 5
+D 2
+R 6
+D 3
+U 3
+R 4
+U 5
+L 3
+U 5
+L 8
+D 3
+L 8
+D 5
+R 4
+L 8
+R 5
+U 8
+R 10
+D 2
+U 10
+R 1
+D 1
+L 4
+D 9
+L 6
+U 2
+R 3
+D 2
+L 6
+R 2
+L 10
+D 2
+L 10
+U 3
+L 2
+D 8
+U 10
+R 5
+L 1
+U 8
+R 9
+D 8
+U 2
+R 4
+U 3
+D 2
+U 4
+D 2
+R 3
+L 2
+U 4
+D 1
+U 9
+R 2
+U 1
+R 3
+D 3
+L 3
+R 2
+D 1
+U 8
+D 1
+L 5
+R 4
+L 8
+D 3
+L 1
+U 10
+R 9
+D 9
+U 9
+D 1
+R 6
+L 6
+U 6
+L 1
+D 5
+L 4
+U 8
+L 10
+U 9
+R 9
+D 5
+U 4
+D 7
+R 5
+U 10
+D 5
+U 1
+R 5
+L 7
+D 9
+R 5
+L 3
+U 2
+D 6
+R 4
+D 7
+U 4
+R 8
+L 5
+R 8
+L 9
+R 8
+D 1
+R 1
+L 9
+D 7
+L 10
+D 6
+R 8
+U 4
+D 4
+R 7
+L 9
+D 9
+R 9
+L 1
+R 6
+L 7
+R 10
+L 1
+U 9
+D 11
+R 4
+D 4
+U 5
+R 8
+U 9
+L 8
+D 8
+L 10
+U 10
+L 4
+D 1
+L 3
+U 7
+D 11
+U 4
+L 7
+R 2
+U 9
+D 4
+R 4
+U 1
+L 5
+U 10
+R 4
+D 3
+L 9
+R 2
+L 3
+U 5
+D 6
+U 2
+R 7
+D 7
+R 4
+L 8
+U 5
+R 1
+U 4
+D 3
+U 5
+R 9
+D 2
+R 4
+D 8
+U 9
+R 7
+U 5
+D 3
+R 6
+L 7
+U 7
+R 10
+L 3
+U 10
+L 8
+R 11
+L 3
+U 10
+R 5
+D 1
+U 7
+R 6
+U 9
+L 3
+R 9
+L 4
+R 9
+L 5
+R 9
+D 5
+U 8
+R 7
+L 7
+R 4
+L 9
+R 9
+D 7
+R 2
+L 3
+U 1
+L 1
+D 11
+U 3
+D 5
+R 3
+U 11
+L 1
+U 7
+R 8
+D 8
+U 7
+D 7
+R 6
+D 3
+R 8
+L 9
+U 10
+D 10
+L 1
+D 9
+L 1
+R 5
+D 6
+U 5
+L 1
+R 10
+L 1
+U 7
+D 11
+R 8
+U 11
+L 6
+R 4
+U 7
+R 3
+L 8
+D 8
+L 12
+U 3
+D 12
+L 6
+R 1
+U 8
+R 3
+U 4
+L 3
+D 10
+L 9
+D 6
+L 12
+R 11
+D 4
+U 4
+L 12
+R 1
+U 1
+D 10
+L 11
+R 3
+D 4
+R 4
+U 4
+D 3
+U 10
+R 9
+U 9
+L 1
+U 10
+D 11
+U 4
+D 3
+L 10
+R 5
+D 8
+R 5
+U 6
+R 12
+L 10
+U 10
+D 2
+L 6
+U 5
+D 3
+R 2
+D 3
+U 7
+D 1
+L 5
+U 9
+D 3
+U 10
+L 10
+U 4
+L 12
+R 11
+D 2
+L 10
+U 6
+L 4
+D 5
+R 3
+L 4
+D 8
+U 7
+R 12
+D 1
+U 5
+L 2
+D 7
+R 3
+U 1
+L 10
+R 9
+L 7
+R 8
+U 9
+R 9
+U 1
+L 7
+D 6
+L 1
+R 11
+L 9
+U 12
+R 8
+U 3
+R 5
+U 5
+L 12
+R 7
+L 8
+R 11
+L 4
+R 10
+D 2
+L 4
+U 12
+R 5
+D 1
+L 12
+D 1
+L 5
+D 3
+U 8
+L 5
+U 5
+R 7
+D 1
+L 3
+D 9
+L 12
+R 5
+D 12
+U 6
+L 7
+D 6
+L 5
+U 6
+R 7
+U 5
+D 8
+R 11
+D 12
+R 10
+L 11
+R 6
+L 13
+D 3
+L 2
+U 4
+D 12
+U 8
+D 6
+R 2
+D 2
+R 13
+U 1
+D 6
+R 8
+D 12
+L 8
+R 4
+L 7
+R 8
+D 9
+U 3
+L 1
+U 3
+L 10
+R 12
+U 13
+R 7
+U 1
+D 13
+U 6
+L 13
+D 11
+U 8
+L 10
+D 13
+R 11
+L 8
+D 5
+U 11
+R 1
+D 9
+L 4
+D 12
+R 13
+L 11
+D 7
+L 9
+U 8
+L 13
+D 11
+L 10
+R 4
+U 4
+D 4
+L 5
+D 7
+L 12
+U 10
+R 3
+L 10
+U 2
+L 2
+R 8
+L 6
+U 11
+L 4
+D 4
+U 9
+L 1
+R 12
+D 12
+R 13
+D 8
+R 8
+L 12
+U 5
+D 8
+L 7
+D 13
+U 12
+D 12
+R 10
+U 10
+R 13
+D 9
+R 3
+U 13
+L 12
+R 6
+U 14
+D 11
+R 14
+L 2
+R 5
+U 6
+R 10
+U 6
+L 3
+R 8
+U 7
+L 3
+D 4
+R 13
+L 10
+D 5
+U 10
+R 13
+L 6
+R 6
+L 1
+D 4
+U 10
+R 14
+U 7
+L 11
+R 14
+D 11
+R 8
+D 2
+U 13
+L 5
+R 10
+D 6
+U 7
+D 7
+L 6
+U 11
+L 4
+D 11
+L 9
+R 6
+L 5
+U 14
+R 2
+D 1
+U 12
+L 3
+U 3
+D 2
+U 3
+L 7
+U 10
+D 2
+R 9
+L 8
+U 10
+D 4
+R 7
+U 4
+L 8
+R 3
+L 6
+D 2
+R 11
+L 2
+D 12
+U 14
+L 1
+R 1
+U 12
+R 3
+L 14
+U 9
+D 7
+L 3
+U 8
+R 9
+L 4
+U 7
+D 4
+R 5
+D 7
+R 11
+L 13
+R 3
+D 10
+R 11
+U 6
+L 4
+D 9
+R 4
+U 5
+D 9
+R 13
+D 6
+R 11
+L 1
+D 1
+R 13
+U 4
+L 9
+U 14
+L 9
+R 2
+D 2
+L 7
+D 13
+L 11
+D 8
+R 4
+L 7
+R 4
+U 12
+D 5
+R 13
+D 14
+R 7
+U 6
+R 2
+U 13
+L 7
+U 14
+R 11
+U 15
+R 8
+U 7
+D 7
+L 5
+U 2
+D 13
+U 11
+L 12
+R 6
+D 13
+L 6
+U 8
+L 3
+R 15
+L 13
+D 1
+U 2
+L 14
+D 8
+L 4
+U 6
+R 11
+D 11
+R 2
+U 13
+L 13
+R 2
+U 15
+R 3
+D 4
+L 7
+R 7
+D 7
+R 7
+L 13
+R 10
+U 8
+R 13
+L 2
+U 13
+D 8
+U 15
+L 4
+D 13
+R 13
+U 8
+R 3
+L 11
+R 12
+U 2
+L 13
+U 1
+L 9
+U 11
+D 14
+R 12
+D 6
+U 6
+D 12
+U 8
+R 3
+U 4
+R 8
+U 2
+D 5
+L 12
+U 14
+D 4
+R 1
+U 10
+L 10
+R 6
+D 13
+U 11
+D 11
+U 11
+R 14
+D 15
+L 11
+U 14
+D 7
+L 12
+D 3
+L 14
+U 7
+R 1
+U 5
+L 1
+R 15
+U 13
+D 7
+R 9
+L 15
+U 15
+L 15
+D 7
+R 15
+D 3
+U 5
+L 8
+R 13
+L 15
+D 8
+L 15
+D 12
+L 5
+D 14
+U 16
+R 11
+L 14
+R 6
+L 10
+U 11
+R 8
+U 16
+L 6
+U 9
+L 13
+D 14
+R 7
+D 10
+L 15
+D 1
+L 10
+D 1
+R 2
+U 15
+L 9
+U 6
+D 3
+L 8
+D 13
+U 16
+D 12
+R 2
+L 1
+D 8
+L 15
+R 14
+D 8
+L 9
+U 12
+R 3
+U 15
+D 10
+U 13
+R 8
+L 15
+D 9
+R 8
+L 9
+U 2
+R 7
+L 11
+R 3
+D 13
+U 16
+L 9
+U 6
+L 7
+U 4
+L 16
+U 16
+L 12
+U 9
+R 8
+D 13
+L 2
+R 15
+D 7
+U 15
+D 16
+R 12
+L 12
+U 8
+L 8
+D 3
+R 16
+L 3
+U 13
+R 1
+L 5
+R 10
+U 13
+D 7
+R 3
+D 10
+L 2
+R 1
+U 4
+L 13
+U 15
+R 4
+D 1
+R 2
+L 5
+D 3
+L 1
+R 4
+L 1
+U 1
+D 7
+R 9
+L 12
+R 13
+D 5
+R 5
+D 9
+L 15
+R 17
+D 4
+R 2
+U 1
+D 1
+R 3
+L 15
+D 10
+L 8
+U 16
+L 14
+U 12
+R 5
+L 13
+D 10
+L 15
+D 12
+U 4
+D 8
+R 9
+L 17
+D 17
+U 3
+D 2
+L 14
+D 12
+L 5
+D 9
+L 3
+R 10
+U 1
+R 9
+U 16
+L 14
+R 13
+L 11
+R 4
+U 2
+L 10
+D 6
+R 5
+D 17
+L 15
+R 12
+U 15
+L 9
+U 9
+D 3
+R 8
+U 6
+R 8
+U 9
+D 14
+R 7
+U 1
+L 3
+R 3
+D 2
+U 4
+R 5
+L 17
+D 16
+U 13
+D 5
+U 6
+R 2
+U 5
+D 7
+U 11
+R 6
+L 17
+R 4
+L 14
+D 3
+U 15
+L 5
+R 4
+U 1
+D 16
+L 16
+U 10
+L 10
+D 17
+R 6
+D 2
+U 10
+L 10
+D 12
+R 15
+L 4
+R 11
+L 17
+U 15
+L 8
+U 8
+L 16
+D 6
+L 7
+U 17
+L 14
+D 6
+L 5
+R 14
+U 5
+D 1
+U 2
+D 17
+R 14
+L 1
+R 4
+D 7
+L 8
+U 7
+D 6
+L 16
+U 5
+D 7
+R 7
+D 17
+L 16
+R 1
+D 5
+U 17
+L 2
+U 7
+L 16
+U 15
+L 17
+D 3
+L 2
+R 7
+L 11
+R 1
+L 16
+U 2
+L 1
+R 18
+U 5
+L 9
+U 4
+D 8
+U 4
+L 18
+D 17
+L 14
+D 2
+R 1
+U 13
+L 9
+R 14
+D 14
+U 12
+D 14
+L 2
+U 10
+D 11
+R 10
+L 9
+U 7
+D 12
+L 4
+D 2
+R 17
+D 1
+U 15
+R 14
+D 16
+L 1
+R 11
+U 9
+R 8
+U 6
+D 7
+U 7
+L 2
+D 10
+U 9
+D 9
+L 11
+D 11
+L 14
+U 16
+D 11
+L 17
+R 5
+L 13
+U 16
+R 16
+U 18
+D 1
+R 1
+U 13
+R 6
+L 7
+U 11
+D 12
+L 8
+U 17
+D 11
+U 8
+L 14
+U 17
+L 4
+U 18
+D 18
+R 8
+D 13
+L 10
+U 3
+R 9
+L 14
+R 7
+U 14
+R 14
+L 9
+U 5
+R 4
+D 13
+U 10
+D 1
+R 10
+D 4
+R 3
+U 14
+D 10
+U 12
+L 11
+U 9
+L 16
+R 5
+L 14
+D 4
+U 11
+L 2
+R 10
+U 8
+D 9
+L 2
+R 16
+L 1
+R 12
+U 7
+D 11
+U 18
+D 4
+R 8
+U 18
+D 5
+R 15
+U 16
+L 2
+D 15
+U 5
+D 10
+U 18
+L 7
+U 4
+R 2
+U 17
+L 2
+R 3
+D 2
+L 2
+U 3
+R 10
+L 8
+U 4
+L 18
+U 6
+D 11
+R 13
+D 9
+U 10
+L 16
+R 15
+L 4
+D 1
+L 5
+D 7
+U 18
+L 5
+R 7
+L 15
+U 4
+L 6
+U 19
+D 19
+L 2
+R 2
+L 19
+D 9
+L 14
+U 18
+D 12
+R 19
+U 15
+L 16
+U 9
+L 11
+R 5
+L 14
+R 16
+U 19
+D 7
+U 8
+R 6
+U 14
+R 17
+D 9
+L 5
+U 3
+D 9
+U 8
+L 4
+U 12
+D 12
+R 13
+U 3
+R 18
+U 5
+L 12
+U 4
+L 1
+D 14
+R 5
+L 19
+U 17
+R 18
+D 11
+L 4
+U 18
+L 9