master
1
2def loc (d) :
3 return (d[0]-d[2]), (d[1]-d[3])
4
5EBHQ_dir = "L5, R1, R3, L4, R3, R1, L3, L2, R3, L5, L1, L2, R5, L1, R5, R1, L4, R1, R3, L4, L1, R2, R5, R3, R1, R1, L1, R1, L1, L2, L1, R2, L5, L188, L4, R1, R4, L3, R47, R1, L1, R77, R5, L2, R1, L2, R4, L5, L1, R3, R187, L4, L3, L3, R2, L3, L5, L4, L4, R1, R5, L4, L3, L3, L3, L2, L5, R1, L2, R5, L3, L4, R4, L5, R3, R4, L2, L1, L4, R1, L3, R1, R3, L2, R1, R4, R5, L3, R5, R3, L3, R4, L2, L5, L1, L1, R3, R1, L4, R3, R3, L2, R5, R4, R1, R3, L4, R3, R3, L2, L4, L5, R1, L4, L5, R4, L2, L1, L3, L3, L5, R3, L4, L3, R5, R4, R2, L4, R2, R3, L3, R4, L1, L3, R2, R1, R5, L4, L5, L5, R4, L5, L2, L4, R4, R4, R1, L3, L2, L4, R3"
6facing = 0
7distance = [0,0,0,0]
8lines = []
9for inst in EBHQ_dir.split(", "):
10 s = loc(distance)
11 r = inst[0]
12 d = int(inst[1:])
13 if r == "L":
14 facing = (facing -1) % 4
15 distance[facing] += d
16 elif r == "R":
17 facing = (facing +1) % 4
18 distance[facing] += d
19 e = loc(distance)
20 (bs_x, bs_y, be_x, be_y) = (s[0], s[1], e[0], e[1])
21 for l in lines:
22 (as_x, as_y, ae_x, ae_y) = (l[0][0], l[0][1], l[1][0], l[1][1])
23 if (bs_x in range (as_x, ae_x, (-1 if as_x>ae_x else 1)) and
24 be_x in range (as_x, ae_x, (-1 if as_x>ae_x else 1)) and
25 as_y in range (bs_y, be_y, (-1 if bs_y>be_y else 1)) and
26 ae_y in range (bs_y, be_y, (-1 if bs_y>be_y else 1)) ):
27 print "intersection", s,e,l
28 lines.append((s,e))
29 print inst,s,e
30
31print abs(distance[0]-distance[2]) + abs(distance[1]-distance[3])