diff options
Diffstat (limited to 'manhattan.py')
-rw-r--r-- | manhattan.py | 61 |
1 files changed, 0 insertions, 61 deletions
diff --git a/manhattan.py b/manhattan.py deleted file mode 100644 index f64b1e2..0000000 --- a/manhattan.py +++ /dev/null @@ -1,61 +0,0 @@ -import random - -def distance(x1, y1, x2, y2): - ''' - >>> distance(0, 0, 3, 0) - 3 - >>> distance(1, 1, 3, 3) - 4 - ''' - return abs(x1 - x2) + abs(y1 - y2) - -def direction_to(rx, ry, fx, fy): - ''' - >>> direction_to(0, 0, 3, 0) - 'R' - >>> direction_to(0, 0, 0, 3) - 'D' - >>> direction_to(6, 0, 3, 0) - 'L' - >>> direction_to(0, 6, 0, 3) - 'U' - ''' - moves = [] - if fx < rx: - moves.append('L') - elif fx > rx: - moves.append('R') - if fy < ry: - moves.append('U') - elif fy > ry: - moves.append('D') - return random.choice(moves) - -def closest_factory(whoami, state, rx, ry): - closest_factory = None - closest_distance = 9999999 - - for fx, fy in state.factories: - if state.allegiances.get((fx, fy)) != whoami: - d = distance(rx, ry, fx, fy) - if d < closest_distance: - closest_factory = (fx, fy) - closest_distance = d - - return closest_distance, closest_factory - -def manhattan(whoami, state): - orders = [] - - for rx, ry, energy in state.robots_by_player[whoami]: - distance, factory = closest_factory(whoami, state, rx, ry) - - if factory is None or random.random() < 0.1: - orders.append(random.choice('UDLRP')) - elif distance == 0: - orders.append('P') - else: - fx, fy = factory - orders.append(direction_to(rx, ry, fx, fy)) - - return orders |