Skip to content

Instantly share code, notes, and snippets.

@Itamar651
Last active July 27, 2022 14:08
Show Gist options
  • Save Itamar651/df1b2c07d559bb423beda987e74aa0e5 to your computer and use it in GitHub Desktop.
Save Itamar651/df1b2c07d559bb423beda987e74aa0e5 to your computer and use it in GitHub Desktop.
def spareAmount(pw, my_planet):
my_planet = pw.get_planet(my_planet.planet_id())
amount = my_planet.num_ships()
enemy_fleets = pw.enemy_fleets()
enemy_fleets = filter(lambda fleet: fleet.destination_planet() == my_planet, enemy_fleets)
enemy_fleets = sorted(enemy_fleets, key = lambda fleet: fleet.destination_planet() == my_planet)
for fleet in enemy_fleets:
amount = amount - fleet.num_ships()
return amount
def canWin(pw, my_planet, target,spare):
my_planet = pw.get_planet(my_planet.planet_id())
target = pw.get_planet(target.planet_id())
target_amount = target.num_ships() + target.growth_rate() * pw.distance(my_planet, target) - spare
enemy_fleets = pw.enemy_fleets()
enemy_fleets = filter(lambda fleet: fleet.destination_planet() == target, enemy_fleets)
my_fleets = pw.my_fleets()
my_fleets = filter(lambda fleet: fleet.destination_planet() == target, my_fleets)
for fleet in enemy_fleets:
target_amount += fleet.num_ships()
for fleet in my_fleets:
target_amount -= fleet.num_ships()
return target_amount < 0
def do_turn(pw):
planets = pw.my_planets()
for my_planet in planets:
spare = spareAmount(pw, my_planet)
if spare > 0 :
targets = pw.neutral_planets()
targets.extend(pw.enemy_planets())
targets = sorted(targets, key = lambda planet: planet.growth_rate(), reverse = True)
for target in targets:
if canWin(pw, my_planet, target,spare):
pw.issue_order(my_planet, target, spare)
break
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment