Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Find Enemy by tokiojapan55
def move(c, r, direction):
diff_c = [0, 1, 1, 0, -1, -1]
diff_r = [-1, (c % 2) - 1, (c % 2), 1, (c % 2), (c % 2) - 1]
return c + diff_c[direction], r + diff_r[direction]
def axis(pos, distance, direction, position):
c = ord(pos[0]) - ord('A')
r = int(pos[1])
for d in range(distance - 1):
c, r = move(c, r, direction)
for p in range(position - 1):
c, r = move(c, r, (direction + 2) % 6)
return chr(ord('A') + c) + str(r)
def find_enemy(you, dir, enemy):
for distance in range(1, 100):
for direction in range(6):
for position in range(distance - 1):
if axis(you, distance, direction, position) == enemy:
direction = (direction - ['N', 'NE', 'SE', 'S', 'SW', 'NW'].index(dir) + 6) % 6
if direction == 1 or (direction == 2 and position == 0):
return ['R', distance - 1]
if direction == 4 or (direction == 5 and position == 0):
return ['L', distance - 1]
if direction == 0 or direction == 5:
return ['F', distance - 1]
if direction == 2 or direction == 3:
return ['B', distance - 1]
return []
June 23, 2020