summaryrefslogtreecommitdiff
path: root/09
diff options
context:
space:
mode:
authorAlex Pickering <alex@cogarr.net>2025-02-07 12:49:48 -0600
committerAlex Pickering <alex@cogarr.net>2025-02-07 12:49:48 -0600
commit3555be54c2abb8d5ece008a60dbdfbde0ffbddd7 (patch)
tree278876284d07118ecdea5c48cb6453f3122887f0 /09
downloadadvent_of_code_2022-master.tar.gz
advent_of_code_2022-master.tar.bz2
advent_of_code_2022-master.zip
inital commitHEADmaster
Diffstat (limited to '09')
-rw-r--r--09/1.lua48
-rwxr-xr-x09/ext.lua62
-rw-r--r--09/input.txt2000
-rw-r--r--09/sample.txt8
-rw-r--r--09/sample2.txt8
5 files changed, 2126 insertions, 0 deletions
diff --git a/09/1.lua b/09/1.lua
new file mode 100644
index 0000000..8757767
--- /dev/null
+++ b/09/1.lua
@@ -0,0 +1,48 @@
+local knots, tail_moved = {}, {}
+for i = 1,10 do table.insert(knots,{1,1}) end
+local directions = {
+ R = {1,0},
+ U = {0,1},
+ L = {-1,0},
+ D = {0,-1},
+}
+local sfmt = "%d - %d"
+local motion = {}
+for i = -2,2 do
+ for j = -2, 2 do
+ if math.abs(i)^2 + math.abs(j)^2 > 2 then
+ motion[sfmt:format(i,j)] = {
+ i == 0 and 0 or math.abs(i)/i,
+ j == 0 and 0 or math.abs(j)/j
+ }
+ else
+ motion[sfmt:format(i,j)] = {0,0}
+ end
+ end
+end
+local function insert_tail_pos()
+ local tail = knots[#knots]
+ tail_moved[string.format(sfmt,tail[1],tail[2])] = true
+end
+local function move_knot(knot,twords)
+ local x,y = twords[1] - knot[1], twords[2] - knot[2]
+ local direction = motion[string.format("%d - %d",x,y)]
+ knot[1],knot[2] = knot[1] + direction[1], knot[2] + direction[2]
+end
+insert_tail_pos()
+for line in io.lines() do
+ local direction, steps = line:match("([RULD]) (%d+)")
+ direction = directions[direction]
+ for i = 1,steps do
+ knots[1][1], knots[1][2] = knots[1][1] + direction[1], knots[1][2] + direction[2]
+ for j = 2,#knots do
+ move_knot(knots[j],knots[j-1])
+ insert_tail_pos()
+ end
+ end
+end
+local tmr = {}
+for p,_ in pairs(tail_moved) do
+ table.insert(tmr,p)
+end
+print(#tmr)
diff --git a/09/ext.lua b/09/ext.lua
new file mode 100755
index 0000000..c1eb1cc
--- /dev/null
+++ b/09/ext.lua
@@ -0,0 +1,62 @@
+-- Override tostring to display more info about the table
+local old_tostring = tostring
+local numtabs = 0
+local printed_tables = {}
+
+local function tostring_helper(el)
+ assert(type(el) == "table", "Tried to call helper with something that was not a table, it was a " .. type(el))
+ local mt = getmetatable(el)
+ if mt and mt.__tostring then
+ return mt.__tostring(el)
+ elseif printed_tables[el] == true then
+ return old_tostring(el)
+ else
+ printed_tables[el] = true
+ numtabs = numtabs + 1
+ local strbuilder = setmetatable({"{"},{__index = table})
+ for k,v in pairs(el) do
+ local key,value
+ if type(k) == "table" then
+ key = tostring_helper(k)
+ else
+ key = old_tostring(k)
+ end
+ if type(v) == "table" then
+ value = tostring_helper(v)
+ else
+ value = old_tostring(v)
+ end
+ strbuilder:insert(string.format("%s%s : %s", string.rep("\t",numtabs), key, value))
+ end
+ strbuilder:insert(string.rep("\t",numtabs - 1) .. "}")
+ numtabs = numtabs - 1
+ return strbuilder:concat("\n")
+ end
+
+end
+function tostring(el)
+ printed_tables = {}
+ if type(el) == "table" then
+ return tostring_helper(el)
+ end
+ return old_tostring(el)
+end
+
+-- Functions to save my hands
+function printf(fmt, ...)
+ print(string.format(fmt,...))
+end
+function errorf(fmt, ...)
+ --Our error isn't actually in this function, it's 1 above us (1) = 2
+ error(string.format(fmt,...),2)
+end
+function assertf(bool, fmt, ...)
+ assert(type(fmt) == "string", "Assertf arg #2 was \"" .. type(fmt) .. "\", expected string")
+ if not bool then
+ args = {fmt}
+ for k,v in ipairs({...}) do
+ table.insert(args,tostring(v))
+ end
+ error(string.format(unpack(args)),2)
+ end
+end
diff --git a/09/input.txt b/09/input.txt
new file mode 100644
index 0000000..fc0dcd9
--- /dev/null
+++ b/09/input.txt
@@ -0,0 +1,2000 @@
+L 1
+U 2
+L 1
+U 2
+L 2
+R 1
+L 1
+U 2
+D 1
+R 1
+D 2
+L 2
+D 2
+L 2
+R 1
+U 2
+L 2
+R 1
+D 1
+R 2
+D 1
+R 1
+L 2
+U 1
+D 1
+U 2
+R 1
+L 1
+U 1
+L 1
+D 2
+L 2
+U 1
+L 1
+U 1
+D 1
+L 2
+D 2
+U 1
+R 1
+L 1
+U 2
+D 1
+U 1
+L 2
+U 2
+L 2
+R 2
+U 2
+L 1
+U 2
+R 1
+D 1
+R 2
+D 1
+R 2
+L 2
+D 1
+R 1
+D 1
+R 2
+L 2
+U 1
+D 1
+L 2
+U 2
+D 1
+L 1
+U 2
+R 1
+D 2
+R 1
+U 2
+L 1
+U 1
+L 2
+U 1
+R 1
+D 2
+L 2
+R 2
+D 2
+U 1
+L 2
+D 2
+L 2
+D 2
+L 2
+D 2
+L 1
+U 1
+L 2
+U 2
+L 2
+D 1
+U 2
+R 1
+U 2
+L 1
+U 2
+R 1
+D 2
+U 2
+D 1
+U 1
+D 1
+R 1
+U 2
+L 2
+U 1
+R 2
+U 1
+R 1
+L 1
+R 3
+L 2
+R 1
+L 3
+R 2
+D 1
+U 3
+L 2
+U 3
+R 3
+D 2
+U 2
+D 2
+L 1
+D 2
+U 1
+L 3
+U 1
+R 2
+L 2
+R 3
+D 2
+L 1
+D 2
+U 1
+L 2
+U 1
+R 2
+L 1
+U 1
+D 2
+R 2
+U 2
+D 1
+L 2
+D 2
+U 3
+L 3
+D 3
+U 3
+L 3
+R 1
+L 1
+U 1
+L 3
+D 1
+R 3
+D 1
+R 2
+L 1
+R 3
+D 3
+U 1
+R 2
+D 3
+L 1
+U 1
+D 3
+L 2
+U 2
+R 1
+U 3
+D 2
+L 2
+U 1
+L 2
+R 3
+L 1
+R 1
+U 2
+R 3
+U 2
+L 1
+U 3
+L 2
+R 3
+D 1
+L 3
+R 3
+D 3
+U 2
+R 2
+L 1
+R 2
+U 3
+D 2
+U 2
+R 3
+D 3
+R 2
+U 2
+D 2
+U 1
+L 1
+U 2
+L 3
+D 2
+L 3
+U 2
+R 3
+L 3
+D 2
+R 1
+L 2
+R 2
+U 3
+R 1
+U 2
+R 1
+L 4
+U 4
+L 4
+D 2
+U 1
+L 2
+R 4
+U 4
+D 2
+L 1
+D 1
+R 2
+D 2
+R 4
+L 1
+U 2
+D 2
+U 1
+D 2
+L 2
+U 2
+R 4
+D 3
+U 4
+D 1
+U 4
+R 4
+L 1
+U 2
+L 4
+U 2
+R 2
+D 2
+L 1
+U 1
+R 3
+L 4
+D 2
+R 4
+U 1
+R 4
+U 2
+D 2
+U 3
+R 3
+L 1
+U 2
+L 2
+R 4
+L 2
+R 4
+D 2
+U 4
+D 2
+U 1
+R 4
+D 4
+U 4
+L 2
+D 2
+R 4
+L 2
+D 1
+L 4
+D 2
+L 3
+U 3
+L 1
+D 2
+R 1
+D 4
+R 3
+D 4
+L 1
+U 4
+D 2
+U 3
+D 1
+R 2
+L 1
+D 4
+R 3
+U 1
+L 1
+U 1
+D 3
+R 1
+L 3
+R 1
+U 2
+R 4
+U 2
+R 3
+D 4
+R 2
+U 3
+D 3
+L 1
+U 4
+D 3
+R 2
+D 3
+U 2
+L 1
+U 1
+R 3
+D 3
+L 1
+D 1
+L 4
+U 2
+R 3
+L 4
+R 5
+D 1
+L 3
+R 1
+D 4
+L 3
+D 3
+R 1
+U 3
+L 4
+U 2
+R 1
+D 3
+L 1
+D 5
+R 4
+D 1
+U 1
+D 5
+R 1
+U 5
+D 1
+L 4
+D 1
+R 2
+U 4
+L 5
+D 4
+R 1
+L 1
+R 2
+D 3
+L 2
+R 2
+D 4
+U 1
+R 4
+U 4
+L 2
+D 1
+L 4
+U 3
+L 4
+U 3
+L 1
+R 2
+L 3
+R 1
+L 1
+D 3
+R 2
+U 5
+L 2
+D 3
+R 3
+D 5
+L 3
+R 3
+U 5
+R 1
+L 3
+D 4
+R 4
+D 5
+R 1
+U 3
+D 5
+U 2
+R 3
+U 4
+R 2
+L 2
+D 3
+L 4
+R 3
+D 3
+U 2
+D 4
+U 1
+L 1
+R 4
+D 5
+U 5
+R 2
+D 1
+R 1
+D 2
+R 5
+U 4
+R 3
+D 3
+L 4
+D 1
+L 4
+R 3
+D 4
+U 2
+D 4
+U 5
+L 3
+D 4
+U 2
+R 4
+L 2
+D 1
+R 4
+U 2
+R 2
+D 4
+L 1
+R 3
+D 2
+U 2
+L 6
+D 4
+U 2
+L 2
+D 5
+R 3
+L 6
+U 3
+L 6
+U 3
+R 2
+U 3
+L 1
+U 2
+R 6
+U 2
+R 6
+L 5
+U 2
+R 5
+U 5
+L 4
+U 1
+R 2
+D 2
+U 5
+R 3
+L 1
+D 1
+R 6
+L 1
+U 3
+L 6
+U 5
+R 3
+L 3
+U 1
+R 1
+U 1
+R 4
+U 5
+R 1
+D 1
+R 5
+L 5
+D 4
+R 4
+L 1
+D 6
+L 1
+D 2
+U 6
+L 3
+U 1
+R 3
+U 1
+R 2
+U 3
+L 6
+R 6
+U 2
+R 3
+U 6
+L 1
+D 2
+U 2
+L 5
+R 1
+L 5
+D 5
+R 3
+D 2
+L 5
+R 6
+D 2
+U 1
+L 4
+D 2
+L 4
+U 5
+L 1
+R 2
+L 1
+R 3
+L 6
+R 3
+D 3
+R 6
+D 1
+U 2
+R 2
+L 4
+U 6
+D 1
+R 6
+L 2
+D 6
+U 3
+R 1
+U 1
+D 6
+U 2
+L 4
+D 6
+L 6
+U 3
+R 5
+U 2
+L 1
+U 4
+R 6
+U 4
+D 5
+L 1
+D 3
+L 2
+D 6
+L 1
+D 7
+U 4
+D 2
+L 6
+U 3
+D 6
+R 6
+D 3
+R 4
+U 2
+R 6
+D 7
+L 2
+D 4
+L 3
+D 4
+U 1
+R 4
+L 2
+R 4
+L 1
+R 4
+L 4
+U 7
+L 5
+U 1
+D 1
+L 6
+D 4
+R 6
+D 6
+U 2
+D 5
+L 7
+D 5
+L 1
+U 7
+L 2
+R 6
+D 6
+U 2
+R 6
+D 5
+R 7
+L 3
+R 3
+D 1
+U 1
+L 2
+D 5
+R 1
+U 6
+R 1
+D 1
+U 5
+D 4
+U 7
+D 4
+U 2
+D 1
+U 4
+D 3
+R 1
+U 6
+D 3
+U 5
+L 3
+D 7
+R 3
+D 2
+R 4
+D 2
+R 6
+L 5
+D 6
+L 3
+U 5
+L 1
+R 2
+U 2
+R 6
+U 3
+R 7
+L 7
+R 5
+L 6
+D 4
+R 3
+D 7
+U 5
+L 1
+R 1
+U 4
+L 7
+R 1
+D 4
+U 2
+L 3
+D 2
+L 8
+R 6
+L 4
+U 4
+L 5
+R 4
+L 6
+D 1
+U 1
+L 4
+U 2
+R 1
+U 6
+R 6
+U 5
+R 2
+L 1
+D 3
+R 3
+D 8
+U 5
+R 1
+L 1
+U 3
+R 1
+D 4
+L 6
+D 8
+R 7
+U 2
+R 1
+L 6
+U 7
+R 1
+D 6
+U 1
+R 3
+L 5
+U 1
+R 6
+L 8
+U 6
+D 5
+L 8
+U 5
+R 8
+U 3
+L 2
+D 8
+U 5
+D 4
+L 1
+R 8
+U 2
+D 6
+R 1
+D 4
+R 8
+U 8
+L 1
+U 4
+R 2
+L 2
+D 3
+U 1
+R 4
+U 6
+D 6
+L 3
+R 4
+D 7
+R 5
+D 8
+R 6
+U 4
+L 7
+D 5
+U 5
+L 5
+D 4
+U 4
+D 7
+R 8
+L 2
+R 1
+D 8
+R 4
+U 4
+R 6
+D 7
+U 6
+D 5
+R 6
+L 6
+U 6
+R 7
+D 3
+L 4
+R 5
+D 4
+L 3
+D 3
+U 3
+D 6
+U 7
+D 1
+L 1
+U 6
+D 7
+R 8
+U 2
+D 1
+R 6
+D 6
+L 6
+U 1
+D 9
+U 3
+R 1
+D 9
+R 4
+D 2
+R 4
+D 1
+U 9
+D 4
+R 5
+U 5
+L 2
+U 7
+L 8
+U 7
+L 5
+U 6
+R 5
+U 5
+D 9
+R 3
+D 2
+U 6
+L 3
+U 9
+R 9
+L 4
+U 9
+L 7
+D 2
+L 6
+D 8
+L 1
+R 5
+U 8
+D 1
+R 4
+L 3
+U 7
+D 4
+U 2
+L 4
+R 4
+L 1
+R 5
+L 6
+R 9
+D 1
+U 4
+D 9
+R 4
+L 6
+D 7
+L 7
+D 8
+R 4
+D 7
+R 6
+U 2
+R 1
+D 3
+U 8
+R 4
+L 7
+U 9
+R 9
+U 1
+D 4
+L 2
+R 4
+L 1
+D 3
+R 8
+U 5
+L 6
+R 8
+U 6
+R 4
+U 7
+R 7
+L 6
+D 3
+U 1
+D 8
+L 9
+U 3
+D 1
+L 8
+D 3
+U 1
+D 2
+R 3
+D 6
+R 4
+U 2
+L 4
+D 7
+R 1
+D 1
+R 3
+D 5
+U 3
+R 4
+L 2
+D 6
+U 1
+R 5
+U 5
+D 1
+R 10
+U 10
+L 3
+R 1
+L 2
+U 10
+R 1
+U 7
+R 7
+D 2
+U 8
+L 9
+D 4
+U 7
+L 8
+D 2
+L 5
+U 9
+R 9
+U 6
+L 7
+R 1
+D 8
+L 2
+U 1
+L 2
+R 6
+D 5
+U 10
+R 10
+L 2
+R 1
+L 1
+D 2
+U 7
+D 10
+R 2
+D 1
+R 5
+U 4
+D 8
+R 9
+U 10
+L 6
+R 4
+L 10
+R 8
+L 9
+D 5
+R 6
+U 9
+L 6
+D 2
+U 9
+D 1
+U 7
+L 2
+U 1
+D 8
+R 2
+U 3
+L 5
+R 1
+D 8
+R 1
+D 7
+R 6
+U 2
+L 4
+D 8
+R 4
+U 3
+D 10
+L 6
+D 5
+L 1
+U 8
+D 4
+R 8
+D 10
+R 7
+U 5
+R 5
+L 10
+D 1
+R 8
+U 1
+L 8
+U 10
+R 3
+U 6
+L 1
+R 3
+L 6
+D 8
+L 4
+R 6
+L 1
+D 10
+R 1
+D 5
+R 5
+D 8
+U 2
+R 2
+U 1
+D 1
+L 10
+R 10
+D 1
+U 10
+L 11
+R 2
+L 1
+D 5
+L 5
+R 7
+U 10
+D 8
+L 1
+R 9
+D 11
+R 7
+L 1
+R 4
+D 2
+L 9
+U 2
+R 11
+L 2
+R 11
+U 7
+R 4
+U 5
+L 7
+D 10
+L 3
+D 6
+L 3
+D 1
+L 7
+R 10
+D 4
+U 8
+D 11
+L 4
+U 3
+R 11
+U 9
+L 4
+U 11
+R 9
+U 6
+L 1
+D 11
+R 6
+L 10
+R 5
+D 7
+R 5
+L 1
+R 4
+D 6
+L 3
+U 6
+D 8
+R 6
+L 4
+R 2
+L 9
+R 5
+D 3
+R 6
+D 7
+L 1
+U 4
+D 11
+U 10
+R 1
+U 6
+R 1
+D 4
+U 7
+R 9
+U 6
+R 10
+L 2
+D 8
+U 8
+D 2
+U 6
+L 3
+R 10
+U 11
+R 2
+D 6
+L 10
+U 11
+R 11
+D 11
+U 11
+R 5
+D 9
+R 8
+U 4
+L 3
+D 4
+L 2
+R 11
+U 9
+D 1
+U 8
+R 9
+L 6
+U 8
+D 10
+U 7
+L 7
+R 1
+D 10
+U 2
+R 2
+L 10
+U 4
+R 1
+L 3
+D 3
+R 11
+L 4
+R 6
+L 6
+D 5
+R 10
+U 1
+D 5
+U 7
+D 10
+R 9
+L 1
+U 9
+R 10
+D 9
+U 2
+R 7
+D 5
+R 7
+U 2
+D 1
+R 3
+L 12
+R 6
+U 8
+L 7
+R 7
+D 11
+L 8
+U 2
+L 1
+U 9
+L 5
+R 3
+L 10
+U 6
+L 10
+D 2
+R 5
+D 7
+L 11
+R 12
+D 11
+U 2
+R 11
+D 9
+R 2
+U 9
+D 10
+U 4
+R 7
+L 12
+D 7
+R 3
+L 6
+D 3
+R 7
+D 8
+R 5
+U 7
+R 8
+D 3
+R 5
+D 4
+U 4
+L 3
+D 2
+L 5
+D 4
+L 8
+U 1
+R 4
+L 6
+D 1
+U 11
+R 5
+L 6
+R 2
+L 6
+D 1
+R 10
+U 9
+L 7
+U 6
+D 3
+L 10
+D 11
+L 1
+U 9
+L 11
+R 2
+D 2
+R 5
+L 5
+U 7
+R 5
+U 12
+D 10
+R 5
+L 12
+R 10
+U 2
+R 7
+U 7
+D 6
+U 6
+L 13
+R 12
+L 9
+R 6
+L 5
+R 11
+U 10
+R 13
+L 7
+D 10
+U 11
+R 7
+U 5
+L 5
+D 1
+L 2
+D 7
+U 10
+R 4
+L 4
+R 9
+U 7
+L 13
+U 8
+L 1
+D 2
+R 5
+L 4
+D 9
+U 9
+L 13
+D 3
+L 5
+U 9
+L 1
+R 11
+L 6
+D 8
+R 10
+D 13
+U 10
+L 8
+D 7
+R 13
+L 6
+U 7
+L 2
+D 13
+U 4
+L 10
+U 10
+R 13
+L 10
+U 5
+R 1
+L 1
+R 1
+D 9
+R 8
+D 9
+R 5
+D 1
+R 5
+U 4
+R 9
+D 12
+R 4
+U 2
+R 2
+U 5
+D 1
+R 10
+L 7
+D 8
+R 3
+L 5
+D 7
+L 4
+D 6
+U 11
+D 8
+U 13
+R 8
+U 1
+D 11
+R 8
+D 1
+U 13
+L 10
+R 11
+D 3
+L 11
+U 4
+D 13
+R 9
+L 1
+D 1
+U 3
+L 8
+U 11
+R 1
+L 6
+U 7
+R 9
+U 8
+D 6
+L 10
+U 11
+L 9
+D 7
+U 7
+R 5
+L 3
+R 8
+U 1
+L 13
+R 5
+L 11
+U 5
+R 9
+L 14
+R 1
+L 12
+R 11
+D 4
+R 11
+U 5
+R 10
+D 10
+U 7
+R 2
+L 5
+R 4
+L 2
+R 1
+D 6
+R 7
+L 4
+U 6
+D 12
+L 12
+D 6
+U 9
+D 12
+L 9
+R 1
+L 11
+U 5
+D 12
+U 6
+D 1
+U 7
+D 7
+U 7
+D 1
+R 14
+D 1
+R 5
+U 12
+D 1
+R 2
+U 12
+R 6
+U 6
+L 3
+U 8
+R 5
+U 4
+R 14
+D 1
+U 12
+R 10
+D 12
+R 11
+L 8
+D 2
+R 5
+U 12
+R 11
+L 5
+R 7
+L 6
+U 3
+L 3
+R 5
+D 12
+L 9
+U 13
+L 3
+D 3
+U 10
+R 6
+U 11
+L 12
+R 11
+U 2
+D 9
+U 11
+L 5
+U 14
+R 3
+U 13
+D 7
+L 2
+D 9
+R 3
+D 1
+U 14
+D 3
+U 14
+D 14
+L 10
+U 4
+D 2
+R 4
+U 14
+L 8
+U 6
+D 6
+L 4
+D 9
+R 4
+U 13
+D 8
+U 4
+R 13
+U 3
+R 3
+D 5
+R 1
+U 13
+L 4
+U 4
+D 6
+U 3
+R 6
+U 14
+R 7
+U 9
+L 8
+R 8
+L 4
+R 9
+U 8
+R 10
+D 12
+U 1
+D 1
+U 7
+L 15
+R 7
+U 8
+D 14
+L 10
+R 5
+U 4
+L 14
+U 7
+D 7
+L 13
+R 11
+L 11
+U 4
+D 11
+L 2
+U 15
+L 2
+U 10
+D 12
+L 4
+R 7
+L 3
+U 13
+R 3
+U 6
+D 7
+U 9
+R 5
+D 9
+U 4
+L 10
+D 7
+R 12
+U 11
+L 9
+D 3
+U 6
+R 11
+D 4
+L 4
+R 12
+D 3
+R 12
+D 10
+R 13
+U 1
+D 15
+L 8
+U 14
+L 8
+R 2
+L 8
+D 7
+R 11
+U 8
+R 13
+L 7
+U 5
+R 6
+U 1
+R 6
+D 3
+R 10
+D 11
+U 9
+R 7
+L 3
+R 1
+U 2
+R 15
+L 15
+R 3
+L 8
+D 15
+R 8
+L 1
+R 12
+L 5
+U 15
+D 11
+R 3
+L 12
+D 15
+R 10
+D 11
+R 11
+L 7
+D 12
+L 8
+D 11
+L 11
+D 12
+L 5
+D 8
+R 11
+U 5
+L 7
+R 7
+U 13
+D 2
+U 2
+L 16
+R 15
+L 13
+R 5
+U 8
+L 8
+R 16
+D 12
+R 12
+L 11
+D 8
+L 2
+D 9
+R 13
+L 3
+U 5
+R 11
+U 16
+L 1
+U 14
+L 3
+D 3
+U 1
+D 5
+R 11
+D 4
+L 9
+U 1
+L 9
+R 1
+D 13
+L 9
+U 13
+L 3
+U 9
+D 9
+R 1
+U 13
+D 4
+U 16
+R 15
+L 10
+D 15
+U 6
+D 1
+R 15
+D 8
+R 10
+D 5
+U 7
+R 7
+L 14
+U 1
+D 3
+R 8
+D 7
+L 3
+U 13
+D 14
+R 4
+L 9
+R 13
+D 15
+R 9
+D 14
+R 10
+U 5
+L 5
+U 10
+D 14
+U 8
+D 8
+L 6
+U 1
+R 15
+D 2
+R 6
+L 9
+D 2
+R 11
+U 2
+L 5
+D 9
+R 4
+L 14
+D 9
+R 5
+D 8
+L 9
+R 15
+L 5
+D 1
+L 8
+U 12
+R 14
+L 7
+U 12
+R 3
+D 15
+R 6
+U 9
+L 13
+U 11
+R 9
+U 7
+D 16
+R 14
+L 1
+D 8
+U 8
+R 1
+D 2
+L 4
+U 8
+L 9
+U 17
+L 17
+D 16
+R 1
+U 7
+R 5
+D 1
+R 9
+U 1
+D 6
+L 8
+U 8
+D 14
+L 4
+U 10
+L 17
+R 15
+L 8
+D 3
+U 16
+R 8
+L 11
+R 17
+L 12
+D 11
+L 16
+U 4
+D 13
+U 13
+L 17
+R 12
+U 16
+R 14
+D 10
+U 14
+D 1
+L 9
+U 4
+D 14
+U 7
+L 3
+R 11
+D 17
+L 2
+R 12
+L 4
+U 5
+R 1
+D 2
+R 8
+D 7
+R 10
+D 16
+R 8
+L 2
+D 12
+U 5
+R 4
+D 6
+U 17
+L 11
+D 13
+L 6
+R 17
+U 5
+D 5
+L 6
+R 4
+U 4
+L 6
+U 8
+L 4
+U 17
+R 1
+L 17
+R 17
+L 10
+D 17
+L 11
+U 17
+L 13
+R 15
+L 9
+U 3
+R 15
+L 12
+R 7
+D 13
+U 7
+L 3
+R 2
+U 15
+R 16
+U 2
+D 6
+U 15
+D 3
+R 4
+L 18
+D 6
+L 9
+U 15
+D 12
+R 5
+U 11
+L 5
+D 9
+R 4
+L 11
+R 8
+L 18
+D 2
+L 9
+U 11
+R 4
+U 10
+R 12
+L 7
+U 10
+D 16
+U 1
+L 17
+R 10
+U 3
+R 7
+U 11
+R 8
+D 10
+R 9
+L 10
+D 10
+R 17
+D 13
+U 5
+R 3
+D 4
+R 16
+L 14
+U 14
+R 5
+U 15
+L 16
+U 13
+L 18
+U 2
+L 3
+D 10
+L 15
+D 6
+U 18
+L 16
+D 3
+R 10
+L 14
+D 18
+L 10
+D 14
+U 11
+L 1
+U 17
+R 3
+L 17
+U 6
+D 18
+R 16
+D 14
+L 12
+R 9
+U 2
+R 8
+D 1
+U 3
+D 16
+R 18
+D 6
+R 1
+L 6
+D 14
+U 5
+D 18
+L 3
+U 7
+L 2
+D 12
+L 7
+U 8
+L 11
+R 1
+U 8
+L 10
+D 9
+U 13
+R 1
+L 8
+D 12
+U 8
+R 4
+U 7
+R 11
+L 17
+U 9
+D 13
+R 18
+U 10
+L 19
+D 18
+U 13
+D 16
+U 5
+L 1
+D 6
+R 16
+U 7
+D 14
+R 13
+U 12
+L 18
+R 6
+U 12
+L 18
+R 9
+L 18
+R 18
+D 1
+L 17
+D 9
+U 6
+R 18
+D 15
+R 1
+D 7
+R 9
+D 1
+L 9
+R 4
+D 1
+L 18
+D 1
+U 19
+L 7
+R 11
+U 3
+R 2
+L 10
+U 6
+D 9
+R 14
+D 16
+L 8
+D 12
+R 2
+D 1
+U 19
+L 18
+D 13
+L 18
+R 14
+L 11
+U 17
+D 6
+L 9
+R 3
+U 15
+L 6
+U 12
+R 8
+U 4
+R 3
+U 15
+L 12
+U 10
+L 17
+R 10
+L 4
+R 13
+D 13
+U 18
+D 3
+L 4
+R 1
+D 17
+R 1
+U 19
+L 17
+D 15
+R 17
+U 10
+D 8
+U 11
+L 14
+R 9
+L 1
+R 8
+L 7
+U 8
+R 4
+D 6
+R 5
+U 17
+D 6
+U 6
+L 8
+D 5
+L 19
+D 19
+R 12
+D 3
+U 6
+D 17
diff --git a/09/sample.txt b/09/sample.txt
new file mode 100644
index 0000000..9874df2
--- /dev/null
+++ b/09/sample.txt
@@ -0,0 +1,8 @@
+R 4
+U 4
+L 3
+D 1
+R 4
+D 1
+L 5
+R 2
diff --git a/09/sample2.txt b/09/sample2.txt
new file mode 100644
index 0000000..60bd43b
--- /dev/null
+++ b/09/sample2.txt
@@ -0,0 +1,8 @@
+R 5
+U 8
+L 8
+D 3
+R 17
+D 10
+L 25
+U 20