ONE WORD: THE FORCED INDENTATION OF CODE. EULER OVER. import operator
def sub(lst):
n = {'a': 'aRbFR', 'b': 'LFaLb'}
return reduce(operator.add, [tuple(n.get(e, e)) for e in lst])
def dragon(steps):
D = ('F', 'a')
for i in range(steps):
D = sub(D)
return D
x = y = 0
r = 0
R = {
0: lambda x,y: (x, y + 1),
1: lambda x,y: (x + 1, y),
2: lambda x,y: (x, y - 1),
3: lambda x,y: (x - 1, y),
}
i = 0
z = 10**12
for n in dragon(50):
if n == 'L': r = (r - 1) % 4
elif n == 'R': r = (r + 1) % 4
elif n == 'F':
x, y = R.get(r, lambda x, y: (x, y))(x, y)
i += 1
if i == z:
break