isundil 3 years ago
parent
commit
872afd927a
3 changed files with 2140 additions and 0 deletions
  1. 9 0
      d9/ex2
  2. 2001 0
      d9/input
  3. 130 0
      d9/main.js

+ 9 - 0
d9/ex2

@@ -0,0 +1,9 @@
+R 5
+U 8
+L 8
+D 3
+R 17
+D 10
+L 25
+U 20
+

+ 2001 - 0
d9/input

@@ -0,0 +1,2001 @@
+L 2
+D 2
+U 1
+R 1
+U 2
+D 1
+L 1
+D 1
+R 2
+D 2
+U 1
+R 2
+U 2
+R 2
+U 2
+L 2
+U 2
+L 2
+U 1
+D 1
+L 1
+R 1
+U 2
+R 2
+D 1
+U 2
+L 1
+U 2
+L 2
+D 2
+R 1
+U 2
+R 2
+U 1
+D 1
+L 1
+U 2
+L 2
+D 1
+U 1
+R 2
+D 2
+R 1
+D 1
+L 1
+R 2
+U 1
+L 1
+D 2
+U 2
+D 1
+L 1
+R 1
+U 1
+D 1
+R 2
+D 2
+R 1
+D 2
+L 1
+D 2
+L 1
+U 2
+R 1
+L 1
+U 2
+L 2
+D 2
+R 2
+L 1
+U 2
+R 1
+U 2
+R 2
+L 2
+D 2
+R 1
+L 1
+D 1
+L 1
+U 2
+L 2
+D 2
+L 2
+U 1
+R 2
+U 1
+R 2
+D 2
+U 1
+R 1
+U 2
+R 2
+L 1
+U 2
+L 1
+U 2
+L 1
+U 1
+R 2
+U 2
+L 1
+D 2
+U 1
+L 2
+U 2
+D 2
+U 1
+D 1
+R 1
+D 2
+U 2
+R 2
+L 2
+R 2
+U 1
+L 2
+R 3
+D 2
+L 1
+R 1
+D 3
+U 3
+R 2
+L 3
+U 1
+L 3
+U 2
+L 2
+U 3
+D 2
+R 1
+U 1
+R 3
+U 2
+D 2
+U 3
+D 3
+L 2
+U 2
+L 3
+U 1
+R 1
+D 3
+L 1
+R 2
+U 1
+L 2
+D 1
+U 2
+L 2
+U 1
+D 1
+U 1
+R 3
+U 3
+R 2
+U 1
+D 1
+U 2
+D 1
+R 1
+U 3
+R 1
+U 3
+R 1
+U 2
+D 1
+L 1
+D 1
+L 1
+D 1
+U 1
+L 2
+R 2
+U 2
+L 3
+U 1
+D 1
+R 3
+U 1
+L 2
+R 1
+D 1
+R 3
+D 2
+U 2
+D 1
+R 1
+U 1
+D 1
+U 1
+D 3
+U 1
+L 3
+D 1
+R 2
+U 2
+R 2
+U 1
+R 2
+D 2
+L 3
+U 1
+D 1
+L 3
+U 3
+R 1
+U 3
+D 3
+L 3
+D 3
+L 2
+R 2
+U 2
+R 1
+U 2
+D 2
+U 2
+L 2
+R 1
+U 3
+R 4
+L 2
+R 4
+D 2
+R 2
+L 2
+R 2
+D 1
+U 2
+D 3
+R 1
+U 1
+D 4
+R 4
+L 1
+U 1
+D 2
+L 2
+R 3
+U 2
+L 3
+R 4
+U 3
+L 3
+D 4
+R 3
+L 2
+U 3
+D 1
+L 2
+U 3
+L 1
+D 2
+R 1
+D 4
+L 2
+R 4
+U 4
+L 2
+R 2
+D 4
+L 3
+U 3
+L 2
+U 2
+L 4
+D 2
+R 4
+D 1
+L 4
+U 4
+R 1
+U 4
+D 2
+R 2
+U 3
+L 1
+R 4
+U 3
+R 3
+U 4
+L 2
+D 3
+L 4
+R 2
+L 4
+D 4
+U 1
+L 2
+D 4
+R 1
+U 3
+R 1
+U 4
+L 1
+D 4
+U 2
+L 4
+U 1
+R 2
+U 4
+L 2
+D 3
+L 2
+U 4
+D 2
+L 3
+D 1
+U 4
+D 1
+L 4
+U 3
+R 3
+L 2
+R 2
+U 2
+D 2
+L 1
+U 4
+R 2
+L 3
+R 1
+U 4
+L 2
+U 4
+L 2
+U 3
+L 2
+R 3
+U 3
+L 2
+D 4
+R 3
+U 2
+L 3
+D 3
+R 4
+U 1
+R 3
+D 5
+U 1
+L 1
+R 5
+D 2
+L 3
+U 5
+D 3
+L 3
+D 1
+U 3
+R 2
+U 5
+L 2
+D 2
+L 5
+U 2
+D 5
+R 1
+U 1
+R 5
+L 4
+D 4
+R 2
+U 5
+D 5
+L 1
+R 2
+U 4
+L 2
+D 1
+L 5
+D 1
+R 3
+L 2
+R 4
+D 1
+R 4
+U 4
+L 1
+U 2
+D 5
+U 4
+L 3
+D 3
+R 3
+D 5
+L 2
+U 5
+R 3
+L 5
+R 4
+U 4
+R 3
+L 2
+D 4
+L 2
+U 1
+R 3
+L 2
+R 3
+L 5
+U 1
+L 2
+R 1
+D 3
+R 4
+L 2
+D 2
+R 4
+D 3
+L 5
+D 2
+L 4
+R 3
+L 3
+D 2
+R 5
+U 4
+R 4
+U 3
+L 4
+U 1
+R 4
+D 4
+U 1
+L 3
+U 1
+L 1
+R 4
+D 1
+U 3
+D 2
+R 3
+L 3
+U 2
+R 4
+D 4
+L 1
+R 5
+U 1
+L 2
+U 2
+R 4
+U 4
+R 2
+D 2
+U 3
+L 5
+D 4
+L 5
+D 1
+L 2
+D 4
+R 6
+L 3
+D 5
+R 3
+L 5
+R 5
+D 1
+R 3
+L 5
+R 5
+L 6
+R 4
+L 2
+R 5
+D 3
+U 1
+R 4
+D 2
+R 2
+L 6
+U 2
+R 5
+U 5
+L 3
+R 6
+L 6
+D 3
+L 1
+R 1
+L 1
+D 5
+L 4
+U 3
+D 5
+L 1
+U 6
+R 5
+D 6
+U 1
+D 5
+L 3
+D 5
+R 6
+U 2
+D 1
+L 4
+D 5
+R 2
+U 5
+R 4
+L 1
+R 2
+L 1
+R 2
+L 6
+U 2
+D 3
+R 5
+D 3
+L 4
+R 4
+D 1
+R 6
+D 1
+R 4
+L 3
+D 6
+L 5
+D 2
+R 1
+L 3
+R 2
+L 6
+D 4
+U 5
+R 6
+U 3
+D 2
+R 4
+L 6
+U 4
+L 2
+U 2
+L 1
+U 5
+D 1
+L 2
+U 1
+D 2
+L 1
+R 4
+U 4
+L 4
+D 4
+R 3
+D 6
+L 2
+U 4
+R 1
+L 2
+U 3
+L 6
+U 6
+R 3
+D 7
+U 4
+R 6
+L 6
+D 7
+L 5
+U 1
+R 2
+U 7
+D 5
+L 7
+R 2
+U 3
+R 7
+D 5
+L 2
+U 2
+R 3
+U 5
+R 3
+D 4
+R 4
+U 3
+L 6
+R 2
+D 7
+U 6
+D 1
+U 3
+R 3
+D 4
+R 6
+U 4
+L 3
+D 3
+R 4
+L 2
+D 1
+R 3
+U 6
+R 5
+U 3
+L 5
+R 5
+D 4
+U 3
+L 7
+U 7
+D 3
+U 1
+D 1
+U 1
+D 3
+L 5
+R 4
+U 6
+R 7
+D 2
+L 3
+R 2
+U 3
+D 2
+L 5
+D 7
+R 6
+D 1
+U 5
+D 7
+U 6
+D 4
+L 6
+D 4
+L 2
+D 7
+R 6
+L 3
+D 2
+L 3
+D 2
+U 6
+L 1
+R 2
+U 5
+L 5
+R 2
+U 6
+R 3
+L 7
+R 4
+D 7
+L 7
+D 6
+L 4
+D 2
+R 6
+L 1
+D 3
+U 6
+D 7
+U 1
+L 5
+D 7
+U 3
+R 3
+L 7
+D 2
+L 7
+U 5
+D 4
+R 3
+D 8
+R 7
+U 1
+R 8
+U 4
+D 5
+R 6
+L 5
+D 5
+L 7
+R 7
+U 4
+D 2
+L 7
+U 8
+D 6
+L 5
+D 2
+L 6
+U 6
+R 5
+U 5
+L 6
+U 5
+L 3
+U 4
+D 7
+R 3
+L 4
+R 7
+D 1
+R 5
+D 2
+R 8
+L 8
+U 8
+L 6
+U 5
+L 1
+U 6
+R 2
+U 4
+L 5
+R 2
+D 8
+L 1
+U 4
+R 6
+U 1
+L 4
+R 7
+L 8
+R 5
+U 5
+R 3
+L 3
+U 2
+D 8
+L 8
+R 4
+U 3
+D 3
+L 1
+R 8
+U 3
+L 8
+D 8
+U 7
+D 8
+L 3
+U 5
+D 7
+L 7
+U 5
+L 3
+R 6
+D 7
+R 1
+D 7
+L 5
+U 3
+D 5
+U 1
+L 2
+D 4
+U 5
+R 1
+L 6
+U 3
+L 1
+D 6
+R 1
+L 1
+R 3
+L 4
+U 6
+R 3
+U 8
+L 2
+U 3
+R 1
+D 5
+R 2
+U 2
+D 8
+L 3
+D 2
+R 8
+D 1
+L 3
+U 1
+D 8
+U 1
+L 2
+D 4
+R 3
+L 4
+D 3
+L 2
+D 4
+L 6
+U 6
+D 9
+U 5
+R 9
+D 1
+R 8
+L 9
+R 7
+D 5
+U 1
+L 1
+R 8
+U 3
+R 4
+L 2
+R 1
+D 6
+U 5
+D 6
+L 9
+R 2
+D 2
+R 8
+D 2
+R 3
+U 1
+L 1
+U 1
+L 1
+U 3
+D 9
+R 2
+U 1
+D 1
+R 6
+D 7
+L 9
+U 4
+L 7
+U 8
+D 8
+L 3
+D 9
+L 4
+D 8
+U 9
+L 9
+D 7
+U 7
+D 2
+L 4
+D 5
+L 5
+U 6
+D 8
+L 5
+U 9
+L 4
+U 3
+D 4
+R 9
+U 4
+D 7
+L 6
+R 7
+L 5
+U 5
+L 8
+D 3
+L 5
+U 7
+D 6
+U 3
+R 1
+D 8
+U 3
+L 8
+U 9
+R 1
+U 1
+L 3
+R 6
+U 5
+R 7
+U 4
+R 4
+L 8
+U 4
+L 9
+R 7
+D 6
+R 8
+U 9
+D 8
+L 3
+R 7
+U 1
+L 9
+R 2
+L 3
+D 6
+R 9
+D 1
+L 3
+D 4
+U 2
+D 9
+R 9
+U 3
+R 2
+D 3
+U 7
+L 4
+D 6
+R 3
+D 8
+U 4
+R 8
+U 6
+R 5
+L 5
+U 2
+D 1
+R 5
+U 9
+D 3
+L 5
+R 8
+U 2
+D 9
+R 5
+U 4
+L 7
+U 4
+D 6
+U 7
+D 1
+L 6
+U 7
+D 6
+L 3
+D 8
+U 1
+L 1
+U 9
+L 2
+U 4
+D 2
+R 8
+U 3
+R 8
+L 4
+U 3
+L 7
+U 7
+D 7
+R 7
+L 2
+U 6
+R 1
+U 7
+D 6
+L 1
+R 5
+L 7
+R 1
+D 7
+U 9
+D 9
+L 1
+D 10
+U 10
+L 2
+R 9
+L 1
+R 3
+U 8
+L 1
+R 2
+L 2
+U 2
+D 1
+U 5
+R 5
+D 7
+L 6
+D 2
+L 10
+U 10
+D 4
+L 10
+R 10
+U 5
+L 7
+R 10
+D 1
+L 8
+D 3
+U 7
+R 2
+D 7
+U 4
+L 3
+R 4
+L 10
+U 3
+L 5
+R 4
+D 3
+R 9
+L 9
+R 6
+U 5
+L 5
+R 11
+U 6
+L 11
+R 9
+D 5
+U 7
+L 8
+R 5
+U 11
+D 6
+L 9
+D 5
+L 2
+D 2
+R 4
+L 1
+D 10
+L 9
+R 6
+D 2
+L 11
+D 4
+R 5
+D 2
+R 8
+D 3
+L 1
+R 11
+D 1
+L 11
+D 7
+L 5
+U 7
+D 4
+L 7
+U 11
+L 3
+U 7
+L 2
+D 6
+R 1
+D 3
+R 1
+L 1
+D 11
+L 6
+U 1
+R 9
+U 8
+D 8
+L 2
+R 6
+U 10
+R 7
+L 5
+U 1
+R 4
+L 2
+D 11
+L 10
+U 7
+L 10
+D 1
+R 6
+U 2
+D 7
+R 7
+D 2
+R 10
+U 8
+D 5
+U 2
+L 11
+R 9
+D 7
+U 3
+R 6
+U 6
+D 7
+U 6
+L 2
+R 11
+L 10
+D 7
+U 10
+D 3
+R 10
+L 4
+D 8
+R 5
+L 5
+D 9
+U 8
+R 3
+D 10
+R 11
+U 5
+D 11
+L 2
+D 8
+L 7
+U 4
+D 5
+U 9
+D 3
+U 11
+D 4
+L 1
+U 4
+L 3
+R 7
+L 12
+D 10
+U 8
+L 6
+D 11
+U 5
+L 2
+D 6
+L 5
+U 8
+L 4
+U 6
+R 9
+D 2
+L 6
+U 12
+R 2
+L 10
+R 7
+U 7
+L 5
+R 6
+U 5
+R 7
+D 6
+R 4
+U 6
+L 4
+U 4
+L 4
+U 3
+D 3
+L 9
+D 12
+R 10
+U 3
+L 1
+U 4
+L 8
+R 4
+D 6
+L 2
+D 7
+L 9
+U 3
+L 11
+R 9
+D 8
+L 1
+D 11
+R 8
+L 6
+U 7
+R 5
+U 3
+D 4
+R 4
+U 5
+L 6
+U 10
+D 2
+R 8
+U 7
+D 4
+L 11
+R 9
+U 9
+D 12
+U 8
+R 4
+U 5
+D 11
+L 5
+R 5
+D 2
+L 12
+U 4
+L 1
+R 9
+L 5
+D 1
+R 2
+L 2
+D 7
+L 12
+D 2
+R 7
+U 10
+L 1
+U 2
+L 8
+D 5
+L 7
+U 8
+L 8
+U 10
+D 7
+R 8
+D 7
+R 9
+L 7
+D 1
+R 3
+D 4
+R 11
+D 3
+L 5
+D 7
+U 8
+L 2
+D 10
+L 12
+R 7
+U 13
+R 4
+U 10
+L 10
+D 6
+U 7
+D 12
+U 2
+D 8
+L 1
+R 5
+D 9
+L 1
+R 11
+L 2
+D 7
+L 13
+U 1
+L 8
+D 2
+U 12
+L 6
+R 10
+L 10
+R 9
+U 3
+R 1
+L 10
+D 2
+L 4
+D 8
+U 7
+L 11
+D 8
+U 1
+D 1
+L 2
+D 2
+L 5
+U 6
+D 1
+U 6
+R 2
+L 2
+D 5
+U 2
+R 10
+L 4
+D 3
+L 11
+D 11
+U 4
+D 4
+R 12
+D 11
+U 2
+R 11
+U 3
+R 8
+U 8
+L 5
+R 12
+U 1
+L 10
+R 11
+L 3
+U 6
+D 2
+R 7
+D 13
+L 11
+R 8
+L 8
+R 1
+L 5
+D 13
+R 8
+L 12
+D 13
+R 10
+U 5
+D 13
+U 6
+L 2
+D 2
+U 7
+D 4
+L 4
+R 5
+L 12
+U 6
+D 8
+U 7
+D 12
+R 11
+L 11
+D 9
+R 4
+D 3
+L 5
+R 6
+D 9
+R 3
+U 10
+R 10
+U 3
+D 11
+L 3
+D 5
+R 14
+U 7
+R 3
+D 1
+L 4
+U 6
+D 6
+R 10
+L 12
+R 10
+L 4
+U 10
+R 8
+D 14
+L 6
+U 7
+D 4
+L 9
+R 10
+D 10
+L 4
+R 6
+U 8
+D 10
+L 12
+U 11
+L 7
+R 1
+U 1
+R 12
+U 7
+D 3
+U 4
+R 3
+D 6
+U 2
+R 2
+U 14
+D 10
+R 5
+L 12
+U 5
+D 6
+R 7
+L 13
+D 11
+R 6
+D 11
+R 6
+D 6
+U 10
+L 14
+D 4
+R 14
+D 7
+U 12
+L 3
+U 2
+D 3
+R 1
+D 3
+U 2
+D 13
+L 14
+R 13
+U 3
+D 12
+L 14
+U 12
+D 6
+R 2
+U 6
+L 11
+D 3
+L 7
+D 7
+R 11
+D 11
+R 10
+L 2
+U 12
+L 14
+U 11
+R 12
+L 4
+D 2
+R 13
+L 1
+U 7
+L 2
+D 7
+L 14
+R 11
+U 1
+L 7
+U 11
+L 6
+U 1
+D 11
+L 14
+R 4
+L 1
+D 14
+U 7
+L 6
+R 3
+L 2
+U 10
+D 3
+R 4
+U 7
+R 11
+U 7
+R 13
+U 2
+L 12
+R 9
+L 15
+R 4
+U 5
+D 7
+L 10
+R 9
+D 5
+L 14
+U 9
+R 3
+L 15
+R 5
+L 10
+D 5
+U 3
+D 9
+U 13
+D 15
+R 10
+L 9
+R 9
+U 4
+D 2
+L 3
+R 5
+L 11
+R 7
+L 15
+D 12
+L 13
+D 4
+R 2
+U 14
+D 9
+L 1
+D 1
+L 6
+U 9
+D 14
+U 2
+L 1
+R 10
+U 14
+R 4
+D 11
+R 6
+D 11
+U 9
+R 2
+L 6
+R 10
+L 4
+D 7
+R 11
+U 5
+L 2
+D 5
+U 6
+R 8
+U 4
+R 9
+D 15
+R 8
+L 10
+U 5
+L 4
+U 7
+L 3
+U 5
+R 2
+U 13
+L 9
+U 4
+D 13
+R 1
+D 15
+U 4
+L 7
+D 12
+L 8
+U 6
+L 10
+U 13
+R 12
+D 13
+U 6
+D 13
+U 2
+L 13
+U 7
+L 8
+U 6
+D 2
+U 13
+L 2
+D 13
+R 3
+D 2
+L 11
+D 13
+U 1
+D 12
+L 9
+U 2
+R 9
+U 16
+D 6
+L 16
+D 15
+R 7
+U 3
+D 11
+L 8
+U 3
+L 15
+R 7
+D 14
+L 8
+R 7
+U 12
+R 11
+U 2
+R 13
+D 9
+L 4
+U 14
+L 6
+D 7
+L 10
+U 14
+D 8
+L 6
+D 3
+L 6
+D 12
+U 13
+R 9
+L 6
+U 9
+R 9
+D 13
+R 13
+U 13
+L 4
+D 1
+R 8
+L 1
+R 15
+U 15
+R 14
+D 9
+L 5
+D 2
+L 14
+U 14
+L 15
+R 10
+U 11
+L 7
+R 12
+U 7
+L 7
+D 9
+U 1
+L 11
+R 11
+D 13
+U 7
+R 7
+U 7
+R 8
+D 12
+U 11
+D 14
+U 16
+L 5
+R 8
+D 2
+L 10
+D 14
+R 16
+D 13
+U 14
+L 6
+R 11
+D 4
+R 15
+D 2
+R 3
+L 2
+U 8
+L 4
+D 5
+U 3
+L 11
+U 7
+R 14
+U 4
+L 5
+D 10
+U 16
+L 1
+U 5
+R 11
+D 16
+U 5
+D 11
+R 5
+D 9
+R 3
+U 13
+D 6
+L 10
+D 2
+U 4
+D 7
+U 1
+R 10
+D 6
+U 12
+L 2
+D 8
+U 5
+L 5
+U 7
+L 3
+U 16
+D 12
+L 12
+R 16
+L 5
+R 17
+L 7
+U 17
+D 15
+R 14
+L 7
+U 16
+R 7
+D 7
+R 14
+D 6
+L 7
+U 6
+R 5
+D 14
+L 8
+R 3
+L 1
+U 12
+L 8
+D 11
+R 3
+D 11
+L 16
+R 4
+U 2
+R 17
+U 10
+R 3
+U 13
+R 6
+D 16
+U 15
+R 3
+U 7
+D 6
+U 2
+L 12
+D 11
+L 6
+D 9
+R 7
+U 10
+R 14
+D 10
+R 10
+D 17
+R 9
+L 11
+R 7
+D 14
+L 10
+U 17
+R 5
+D 12
+U 11
+D 11
+R 7
+D 12
+U 10
+D 10
+U 8
+D 11
+R 8
+U 9
+L 17
+D 15
+R 2
+D 14
+L 10
+U 2
+L 9
+R 15
+L 8
+D 9
+L 7
+R 10
+D 6
+L 15
+U 1
+L 11
+R 14
+L 7
+R 17
+U 17
+L 8
+U 16
+D 4
+R 9
+L 13
+R 5
+L 1
+D 14
+U 7
+L 8
+R 10
+U 10
+D 16
+U 6
+R 13
+D 12
+U 10
+L 3
+U 2
+R 7
+D 12
+R 16
+D 1
+L 14
+R 9
+D 18
+R 1
+L 17
+R 9
+U 16
+L 5
+U 12
+R 7
+D 6
+L 17
+U 3
+R 5
+U 13
+D 9
+U 12
+L 13
+D 5
+R 1
+U 7
+L 4
+R 13
+D 1
+L 15
+U 11
+L 5
+D 2
+R 12
+D 12
+U 5
+L 1
+R 5
+U 3
+R 5
+L 9
+R 15
+U 3
+D 18
+L 10
+R 2
+D 7
+R 13
+L 8
+R 5
+L 2
+R 15
+D 12
+L 14
+U 15
+L 8
+U 13
+R 13
+L 15
+R 16
+D 10
+L 15
+U 1
+R 1
+D 3
+U 17
+D 2
+L 5
+R 17
+U 6
+R 10
+L 3
+D 11
+R 13
+D 5
+U 3
+D 9
+U 10
+R 12
+D 10
+R 15
+U 11
+L 6
+R 3
+U 4
+D 7
+R 12
+L 5
+R 7
+D 17
+L 14
+U 9
+D 7
+U 2
+R 1
+D 13
+R 3
+D 12
+L 3
+U 17
+D 1
+U 6
+L 8
+U 17
+D 1
+R 6
+L 8
+R 8
+U 5
+L 12
+D 8
+R 5
+L 11
+U 17
+L 3
+U 11
+L 1
+R 15
+D 15
+L 10
+D 10
+L 19
+R 11
+L 4
+D 11
+L 13
+U 4
+D 6
+L 3
+U 11
+R 3
+L 9
+D 4
+U 10
+L 14
+D 10
+R 11
+L 1
+R 1
+D 8
+R 19
+D 6
+L 16
+D 1
+U 13
+R 19
+U 19
+D 3
+R 8
+D 16
+R 2
+D 2
+L 19
+D 7
+R 2
+U 4
+L 5
+R 2
+U 9
+L 5
+D 13
+L 5
+R 14
+L 13
+D 5
+U 10
+R 12
+L 11
+D 18
+U 7
+L 12
+R 11
+D 16
+U 15
+L 12
+R 12
+D 1
+R 2
+D 6
+L 15
+D 8
+R 19
+U 9
+R 12
+L 10
+R 3
+D 19
+R 15
+U 12
+R 6
+L 3
+D 17
+R 2
+U 11
+D 12
+L 15
+D 16
+R 18
+D 16
+U 12
+R 16
+U 17
+R 15
+L 10
+R 4
+D 12
+L 5
+R 11
+L 1
+U 11
+R 3
+D 5
+

+ 130 - 0
d9/main.js

@@ -0,0 +1,130 @@
+
+const fs = require('fs');
+const readline = require('readline');
+
+function Rope(len) {
+    this.tokens = [];
+    this.visited = {'0x0': true};
+    this.visitedCoord = [[0, 0]];
+    this.boundaries = [[0, 0], [0, 0]];
+    this.len = len;
+    for (let i =0; i < len +1; ++i)
+        this.tokens.push([0, 0]);
+}
+
+Rope.prototype.applyMove = function(moveArr) {
+    this.tokens[0][0] += moveArr[0];
+    this.tokens[0][1] += moveArr[1];
+    this.boundaries = [
+        [ Math.min(this.boundaries[0][0], this.tokens[0][0]), Math.max(this.boundaries[0][1], this.tokens[0][0]) ],
+        [ Math.min(this.boundaries[1][0], this.tokens[0][1]), Math.max(this.boundaries[1][1], this.tokens[0][1]) ],
+    ];
+    for (let i =0; i < this.tokens.length -1; ++i)
+        this.checkAndMove(i);
+    this.visited[this.tokens[this.tokens.length -1][0] + 'x' +this.tokens[this.tokens.length -1][1]] = true;
+    this.visitedCoord.push([this.tokens[this.tokens.length -1][0], this.tokens[this.tokens.length -1][1]]);
+}
+
+Rope.prototype.checkAndMove = function(headPos) {
+    if (Math.abs(this.tokens[headPos][0] - this.tokens[headPos +1][0]) <= 1 &&
+        Math.abs(this.tokens[headPos][1] - this.tokens[headPos+1][1]) <= 1)
+        return;
+    if (this.tokens[headPos +1][1] !== this.tokens[headPos][1])
+        this.tokens[headPos +1][1] += (this.tokens[headPos +1][1] < this.tokens[headPos][1]) ? 1 : -1;
+    if (this.tokens[headPos +1][0] !== this.tokens[headPos][0])
+        this.tokens[headPos +1][0] += (this.tokens[headPos +1][0] < this.tokens[headPos][0]) ? 1 : -1;
+}
+
+const COLORS = [ '\033[39m', '\033[31m', '\033[32m', '\033[33m', '\033[34m', '\033[35m', '\033[36m' ]
+
+function showRope(arenaSize, ropeItems) {
+    // clear screen
+    for (let i =0; i < 5; ++i) console.log();
+    // /clear screen
+
+    console.log('\x1Bc');
+    let item = ropeItems.shift();
+    for (let py =0; py < arenaSize[1]; ++py) {
+        let line = '';
+        for (let px =0; px < arenaSize[0]; ++px) {
+            if (item && item.x === px && item.y === py) {
+                line += COLORS[item.color] + item.c + COLORS[0];
+                item = ropeItems.shift();
+            } else {
+                line += '.';
+            }
+        }
+        console.log(line);
+    }
+}
+
+function prepShowRope(arenaSize, arenaShift, replayRope) {
+    showRope(arenaSize, replayRope.tokens
+        .map((i, index) => { return {
+            x: i[0]+arenaShift[0],
+            y: i[1]+arenaShift[1],
+            c: '#',
+            color: index+1 >= COLORS.length ? Math.ceil(Math.random() * (COLORS.length-1)) : (index +1)
+        };}).concat(
+            replayRope.visitedCoord.map(i => { return {
+                x: i[0] + arenaShift[0],
+                y: i[1] + arenaShift[1],
+                c: '"',
+                color: 0
+            };})
+        )
+        .sort((a, b) => {
+            if (a.x === b.x && a.y === b.y)
+                return a.c === '"' ? 1 : -1;
+            if (a.y === b.y)
+                return a.x-b.x;
+            return a.y-b.y;
+        })
+        .filter((value, index, self) => self.findIndex(i => i.x === value.x && i.y === value.y) === index));
+}
+
+function mSleep() {
+    return new Promise(ok => setTimeout(ok, 90));
+}
+
+async function showReplay(rope, actions) {
+    let arenaSize = [ rope.boundaries[0][1] - rope.boundaries[0][0] +1, rope.boundaries[1][1] - rope.boundaries[1][0] +1];
+    let arenaShift = [ -rope.boundaries[0][0], -rope.boundaries[1][0] ];
+    let replayRope = new Rope(rope.len);
+
+    await prepShowRope(arenaSize, arenaShift, replayRope);
+    for (let i of actions) {
+        await mSleep();
+        replayRope.applyMove(i);
+        prepShowRope(arenaSize, arenaShift, replayRope);
+    }
+}
+
+async function main() {
+    const move = {
+        'U': [0, -1],
+        'D': [0, 1],
+        'L': [-1, 0],
+        'R': [1, 0]
+    };
+    let tokens = new Rope(1);
+    let tokensPart2 = new Rope(10);
+    let moveList = [];
+    for await (let line of readline.createInterface({ input: process.stdin })) {
+        if (!line || !line.length)
+            continue;
+        let reg = /([UDLR]) (\d+)/.exec(line);
+        for (let i =0; i < reg[2]; ++i) {
+            moveList.push(move[reg[1]]);
+            tokens.applyMove(move[reg[1]]);
+            tokensPart2.applyMove(move[reg[1]]);
+        }
+    }
+    await showReplay(tokensPart2, moveList);
+
+    console.log("Part 1: ", Object.keys(tokens.visited).length);
+    console.log("Part 2: ", Object.keys(tokensPart2.visited).length);
+};
+
+(main());
+