34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
|
import sys, json
|
||
|
|
||
|
def move(command):
|
||
|
""" print a command record to stdout """
|
||
|
moves = []
|
||
|
if command is not None:
|
||
|
moves.append(command)
|
||
|
|
||
|
print(json.dumps({ 'moves': moves }))
|
||
|
# flush the buffer, so that the gameserver can receive the json-encoded line.
|
||
|
sys.stdout.flush()
|
||
|
|
||
|
|
||
|
for line in sys.stdin:
|
||
|
state = json.loads(line)
|
||
|
# you are always player 1.
|
||
|
my_planets = [p for p in state['planets'] if p['owner'] == 1]
|
||
|
other_planets = [p for p in state['planets'] if p['owner'] != 1]
|
||
|
|
||
|
if not my_planets or not other_planets:
|
||
|
# we don't own any planets, so we can't make any moves.
|
||
|
move(None)
|
||
|
else:
|
||
|
# find my planet that has the most ships
|
||
|
planet = max(my_planets, key=lambda p: p['ship_count'])
|
||
|
# find enemy planet that has the least ships
|
||
|
destination = min(other_planets, key=lambda p: p['ship_count'])
|
||
|
# attack!
|
||
|
move({
|
||
|
'origin': planet['name'],
|
||
|
'destination': destination['name'],
|
||
|
'ship_count': planet['ship_count'] - 1
|
||
|
})
|