Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import math
- def upgrade_price(base, tier):
- return base*tier*(tier+1)*(2*tier+1)/6
- def seed_gains(base, tier):
- return pow(tier, 1.5)*base
- def seed_gains_per_day(base, tier):
- time_left = 24.5
- first_harvest = 1.5
- current_tier = 0
- total_harvest = 0
- while time_left > 0:
- time_to_wake = time_left-24.5+8
- time_passing = time_left
- if time_to_wake > 0:
- time_passing = min(time_passing, time_to_wake)
- time_to_max_tier = tier - current_tier
- if time_to_max_tier > 0:
- time_passing = min(time_passing, time_to_max_tier)
- if current_tier < tier:
- current_tier += min(time_passing, tier-current_tier)
- time_left -= time_passing
- if time_left <= 24.5-8:
- if tier == current_tier or time_left == 0:
- total_harvest += seed_gains(base, math.floor(current_tier))*first_harvest
- first_harvest = 1
- time_left -= 1
- current_tier=0
- return total_harvest
- def return_on_seed(base_price, base_seed, tier, previous_tier):
- price = 0
- for i in range(previous_tier+1, tier+1):
- price += upgrade_price(base_price, i)
- seed_difference = seed_gains_per_day(base_seed, tier)-seed_gains_per_day(base_seed, previous_tier)
- return seed_difference/price
- gold = { "cost": 1, "seeds": 1, "name": "Fruit of Gold" }
- powera = { "cost": 10, "seeds": 1, "name": "Fruit of Power α" }
- adventure = { "cost": 25, "seeds": 1, "name": "Fruit of Adventure" }
- knowledge = { "cost": 40, "seeds": 1, "name": "Fruit of Knowledge" }
- pomegranate = { "cost": 60, "seeds": 10, "name": "Pomegranate" }
- luck = { "cost": 100, "seeds": 1, "name": "Fruit of Luck" }
- powerb = { "cost": 150, "seeds": 1, "name": "Fruit of Power β" }
- arbitrariness = { "cost": 170, "seeds": 3, "name": "Fruit of Arbitrariness" }
- numbers = { "cost": 200, "seeds": 3, "name": "Fruit of Numbers" }
- rage = { "cost": 2000, "seeds": 5, "name": "Fruit of Rage" }
- macguffina = { "cost": 15000, "seeds": 6, "name": "Fruit of MacGuffin α" }
- powerd = { "cost": 30000, "seeds": 7, "name": "Fruit of Power δ" }
- watermelon = { "cost": 50000, "seeds": 24, "name": "Watermelon" }
- macguffinb = { "cost": 100000, "seeds": 8, "name": "Fruit of MacGuffin β" }
- # fruits = [gold]
- fruits = [gold, powera, adventure, knowledge, pomegranate, luck, powerb, arbitrariness, numbers, rage, macguffina, powerd, watermelon, macguffinb]
- # fruits = [rage, macguffina, powerd, watermelon, macguffinb]
- effectivenesses = {}
- # tiers = [1, 2, 3, 4, 5, 6, 8, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]
- # tiers = list(range(1,25))
- for fruit in fruits:
- for tier in range(1, 25):
- if tier == 1:
- previous_tier = 0
- else:
- previous_tier = tier-1
- effectiveness = return_on_seed(
- fruit['cost'],
- fruit['seeds'],
- tier,
- previous_tier
- )
- if tier > 1:
- previous_effectiveness = effectivenesses[(fruit['name'], tier-1)]
- previous_effect_value = previous_effectiveness['effectiveness']
- if effectiveness > previous_effect_value:
- previous_tier = previous_effectiveness['previous_tier']
- effectiveness = return_on_seed(
- fruit['cost'],
- fruit['seeds'],
- tier,
- previous_tier
- )
- del effectivenesses[(fruit['name'], tier-1)]
- effectivenesses[(fruit['name'], tier)] = {
- 'upgrade': f"{fruit['name']}, Tier {previous_tier}→{tier}",
- 'effectiveness': effectiveness,
- 'previous_tier': previous_tier
- }
- tiers = sorted(
- effectivenesses.values(),
- key=lambda x: x['effectiveness'],
- reverse=True
- )
- for tier in tiers:
- print(f"{tier['upgrade']}: {tier['effectiveness']}")
Add Comment
Please, Sign In to add comment