Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Cube coordinates solution in Clear category for Find Enemy by r_tchaik
# good theory on hexagons is here: https://www.redblobgames.com/grids/hexagons/
def find_enemy(you, dir, enemy):
x = ord(enemy[0]) - ord(you[0])
adj = x & 1
z = (int(enemy[1]) - int(you[1])) - (x + adj if ord(you[0]) & 1 else -adj) // 2
y = -x - z
for _ in range(('N', 'NE', 'SE', 'S', 'SW', 'NW').index(dir)):
x, y, z = -y, -z, -x
dist = max(map(abs, (x, y, z)))
if y >= 0 and z >= 0:
return ['L', dist]
elif y <= 0 and z <= 0:
return ['R', dist]
elif z < 0:
return ['F', dist]
else:
return ['B', dist]
if __name__ == '__main__':
assert find_enemy('G5', 'N', 'G4') == ['F', 1], "N-1"
assert find_enemy('G5', 'N', 'I4') == ['R', 2], "NE-2"
assert find_enemy('G5', 'N', 'J6') == ['R', 3], "SE-3"
assert find_enemy('G5', 'N', 'G9') == ['B', 4], "S-4"
assert find_enemy('G5', 'N', 'B7') == ['L', 5], "SW-5"
assert find_enemy('G5', 'N', 'A2') == ['L', 6], "NW-6"
assert find_enemy('G3', 'NE', 'C5') == ['B', 4], "[watch your six!]"
assert find_enemy('H3', 'SW', 'E2') == ['R', 3], "right"
assert find_enemy('A4', 'S', 'M4') == ['L', 12], "true left"
print("You are good to go!")
July 13, 2020
Comments: