Advertisement
Guest User

AventOfCode Day1

a guest
Dec 9th, 2016
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.85 KB | None | 0 0
  1. def fill(s, l):
  2.     for i in range(min([s, l], key=lambda x: x[0])[0], max([s, l], key=lambda x: x[0])[0] + 1):
  3.         for j in range(min([s, l], key=lambda x: x[1])[1], max([s, l], key=lambda x: x[1])[1] + 1):
  4.             v[i, j] = 1 if (i, j) in v and (i != l[0] or j != l[1]) else 0
  5.             if v[i, j] == 1:
  6.                 return i, j
  7.     return -1, -1
  8.  
  9. s = [0, 0]; d = 0; v = {}; f = []
  10. move = map(lambda x: x if x[0] != " " else x[1:], open("input1").readline().split(","))
  11. for m in move:
  12.     l = s[:];
  13.     d = (d + (1 if m[0] == "R" else -1)) % 4
  14.     s[d % 2] += (1 if d < 2 else -1) * int(m[1:])
  15.     f.append(list(map(lambda x: reduce(lambda a, c: abs(a) + abs(c), x) if tuple(x) != (-1, -1) else -1, [fill(s, l)]))[0])
  16. print(str(reduce(lambda a, c: c if c != -1 else a, list(reversed(f)))) + " " + str(reduce(lambda a, c: abs(a) + abs(c), s)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement