Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Hex coords solution in Clear category for Find Enemy by tom-tom
def find_enemy(you, abs_dir, enemy):
def hex_coords(pos):
j = ord(pos[0]) - ord('A')
i = int(pos[1]) - j // 2 - 1
return i, j
i1, j1 = hex_coords(you)
i2, j2 = hex_coords(enemy)
x, y = i2 - i1, j2 - j1
distance = max(abs(x), abs(y), abs(x + y))
x, y = {'N': (-x, -y), 'NE': (y, -x - y), 'SE': (x + y, -x),
'S': (x, y), 'SW': (-y, x + y), 'NW': (-x - y, x)}[abs_dir]
if y > 0 and -y <= x <= 0:
rel_dir = 'L'
elif y < 0 and 0 <= x <= - y:
rel_dir = 'R'
elif x > 0:
rel_dir = 'F'
else:
rel_dir = 'B'
return [rel_dir, distance]
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!")
Feb. 25, 2017
Comments: