49 lines
1.4 KiB
Python
49 lines
1.4 KiB
Python
from math import sqrt
|
|
|
|
input = "GAADAGDAAGDAAGDGGADGAAGAAAGGDAADAGDGDGADDAGDDAADGAGAGDDAGDGDAAGDDAAGAAGDDDDGADGAAAGAGGDGDGDGDAGAAGGGADAADGADGDGAGAGGAGGGAGDADAADGGGAGADDGDDAAAGGAGADAAAADGAGGGDAAGADADAADAGAAAGADDDDADDDDDAGGAGAAGDGDAGAADDGADGDDAGDDGDDGDGAGDGGDAGAGDGGDGGGDADAGDADGGGADDDGGGAAAGGDDAAGAAGAADGGDAGDGDAGDDGDDADDGGGAGDDAGDGDAGGAAGADADADGDDDDADDAGDGGDADAAADGGGGAGGGGDDGAAAAGDDDGDAGDAAADGAAGGGDGDDDGAAGDGGAGGDDDADGADAGGAAAAGAADGGAAAGGGGDDDDGAAGDDADDAGDADDDAADGDGAGGGGGDGDGAGDAGADDAGGAGDAGAGDAAAGDADGGAAGDGDDDGADGAAAGDGDDADGGGA"
|
|
|
|
actions = ("A", "G", "D")
|
|
|
|
sol = dict()
|
|
|
|
def avance(direction, x, y):
|
|
if direction%4 == 0:
|
|
y += 100
|
|
elif direction%4 == 1:
|
|
x += 100
|
|
elif direction%4 == 2:
|
|
y -= 100
|
|
else:
|
|
x -= 100
|
|
return x, y
|
|
|
|
def action(direction, x, y, c):
|
|
if c == "A":
|
|
x, y = avance(direction, x, y)
|
|
elif c == "G":
|
|
direction -= 1
|
|
else:
|
|
direction += 1
|
|
return direction, x, y
|
|
|
|
def chemin(s):
|
|
direction = 0
|
|
x = 0
|
|
y = 0
|
|
|
|
for c in s:
|
|
direction, x, y = action(direction, x, y, c)
|
|
|
|
d = sqrt(x**2 + y**2)
|
|
return x, y, d
|
|
|
|
for i in range(len(input)):
|
|
for a in actions:
|
|
if a == input[i]:
|
|
continue
|
|
s = input[:i] + a + input[i+1:]
|
|
x, y, d = chemin(s)
|
|
sol[(x, y,)] = d
|
|
|
|
print(len(sol), ",", int(max(sol[k] for k in sol)))
|