"""Calculate cost to reach total buidings level""" from rival_regions_calc import ConstructionCosts, Building PRICES = { 'cash': 0.7, 'gold': 0.35, 'oil': 250, 'ore': 220, 'diamond': 1700000, 'uranium': 2100 } BUILDING_TYPES = { 'hospital': Building('hospital'), 'military base': Building('military base'), 'school': Building('school'), 'missile system': Building('missile system'), 'power plant': Building('power plant'), 'spaceport': Building('spaceport'), 'airport': Building('airport') } def main(): """Main method""" buildings = { # palmer # 'hospital': 2516, # 'military base': 1800, # 'school': 2000, # 'missile system': 7745, # 'power plant': 2275, # 'spaceport': 1800, # 'airport': 7961 # oost-nl # 'hospital': 2475, # 'military base': 1646, # 'school': 1565, # 'missile system': 4550, # 'power plant': 1461, # 'spaceport': 201, # 'airport': 3750, # oost-nl 'hospital': 2546, 'military base': 1692, 'school': 1605, 'missile system': 4550, 'power plant': 1461, 'spaceport': 201, 'airport': 3750, # noord-nl # 'hospital': 2474, # 'military base': 1645, # 'school': 1564, # 'missile system': 1200, # 'power plant': 2570, # 'spaceport': 4, # 'airport': 2305 } build_buildings = { 'hospital': 0, 'military base': 0, 'school': 0, 'missile system': 0, 'power plant': 0, 'spaceport': 0, 'airport': 0 } total_buildings = sum(item for item in buildings.values()) # building_goal = 37520 #5 building_goal = 60500 #1 total_price = 0 required_buildings = building_goal - total_buildings power_surplus = 6198 power_consumption = (total_buildings - buildings['power plant']) * 2 power_production = buildings['power plant'] * 10 for i in range(1, required_buildings + 1): lowest_building_name = None lowest_building_price = 1000000000000000 if power_consumption > power_production + power_surplus - 2: lowest_building_name = 'power plant' cc = ConstructionCosts( BUILDING_TYPES['power plant'], buildings['power plant'] + build_buildings['power plant'] ) cc.calculate(1) lowest_building_price = sum_building_cost(cc) else: for building_name in BUILDING_TYPES: cc = ConstructionCosts( BUILDING_TYPES[building_name], buildings[building_name] + build_buildings[building_name] ) cc.calculate(1) price = sum_building_cost(cc) if price <= lowest_building_price: lowest_building_price = price lowest_building_name = building_name if lowest_building_name == 'power plant': power_production += 10 else: power_consumption += 2 build_buildings[lowest_building_name] += 1 total_price += lowest_building_price total_build = sum(item for item in build_buildings.values()) total_resources = { 'cash': 0, 'gold': 0, 'oil': 0, 'ore': 0, 'diamond': 0, 'uranium': 0 } print('—'*53) for resource_name, price in PRICES.items(): print('{:8}: {:12,.2f}'.format(resource_name, price)) for building_name, build in build_buildings.items(): if build == 0: continue print('—'*53) print('{}: +{}'.format(building_name, build)) cc = ConstructionCosts( BUILDING_TYPES[building_name], buildings[building_name] ) cc.calculate(build) total_resources['cash'] += cc.cash total_resources['gold'] += cc.gold total_resources['oil'] += cc.oil total_resources['ore'] += cc.ore total_resources['uranium'] += cc.uranium total_resources['diamond'] += cc.diamond print('{:8} {:20,} {:20,} $'.format( 'cash', cc.cash, round(cc.cash * PRICES['cash']) )) print('{:8} {:20,} {:20,} $'.format( 'gold', cc.gold, round(cc.gold * PRICES['gold']) )) print('{:8} {:20,} {:20,} $'.format( 'oil', cc.oil, round(cc.oil * PRICES['oil']) )) print('{:8} {:20,} {:20,} $'.format( 'ore', cc.ore, round(cc.ore * PRICES['ore']) )) print('{:8} {:20,} {:20,} $'.format( 'uranium', cc.uranium, round(cc.uranium * PRICES['uranium']) )) print('{:8} {:20,} {:20,} $'.format( 'diamond', cc.diamond, round(cc.diamond * PRICES['diamond']) )) print('total {:23} {:20,} $'.format( building_name, round(sum_building_cost(cc)))) print('—'*53) print('total') print('{:8} {:20,} {:20,} $'.format( 'cash', total_resources['cash'], round(total_resources['cash'] * PRICES['cash']) )) print('{:8} {:20,} {:20,} $'.format( 'gold', total_resources['gold'], round(total_resources['gold'] * PRICES['gold']) )) print('{:8} {:20,} {:20,} $'.format( 'oil', total_resources['oil'], round(total_resources['oil'] * PRICES['oil']) )) print('{:8} {:20,} {:20,} $'.format( 'ore', total_resources['ore'], round(total_resources['ore'] * PRICES['ore']) )) print('{:8} {:20,} {:20,} $'.format( 'uranium', total_resources['uranium'], round(total_resources['uranium'] * PRICES['uranium']) )) print('{:8} {:20,} {:20,} $'.format( 'diamond', total_resources['diamond'], round(total_resources['diamond'] * PRICES['diamond']) )) print('total {:44,} $'.format(round(total_price))) print('—'*53) print('buildings') print('orginal : {:,}'.format(total_buildings)) print('build : {:,}'.format(total_build)) print('total : {:,}'.format(building_goal)) print('—'*53) power_difference = power_production - power_consumption + power_surplus print('power') print('orignal production : {:6}'.format(buildings['power plant'] * 10)) print('extra production : {:6}'.format(build_buildings['power plant'] * 10)) print('total production : {:6}'.format(power_production)) print('consumption : {:6}'.format(power_consumption)) print('surplus : {:6}'.format(power_surplus)) print('difference : {:6}'.format(power_difference)) def sum_building_cost(cc): """Sum building costs""" return cc.cash * PRICES['cash'] + \ cc.gold * PRICES['gold'] + \ cc.oil * PRICES['oil'] + \ cc.ore * PRICES['ore'] + \ cc.diamond * PRICES['diamond'] + \ cc.uranium * PRICES['uranium'] if __name__ == "__main__": main()