Tosiaki

Seed gains increase per seed spent calculation

Apr 8th, 2020 (edited)
267
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.00 KB | None | 0 0
  1. import math
  2.  
  3. def upgrade_price(base, tier):
  4.     return base*tier*(tier+1)*(2*tier+1)/6
  5.  
  6. def seed_gains(base, tier):
  7.     return pow(tier, 1.5)*base
  8.  
  9. def seed_gains_per_day(base, tier):
  10.     time_left = 24.5
  11.     first_harvest = 1.5
  12.     current_tier = 0
  13.     total_harvest = 0
  14.     while time_left > 0:
  15.         time_to_wake = time_left-24.5+8
  16.         time_passing = time_left
  17.         if time_to_wake > 0:
  18.             time_passing = min(time_passing, time_to_wake)
  19.         time_to_max_tier = tier - current_tier
  20.         if time_to_max_tier > 0:
  21.             time_passing = min(time_passing, time_to_max_tier)
  22.         if current_tier < tier:
  23.             current_tier += min(time_passing, tier-current_tier)
  24.         time_left -= time_passing
  25.         if time_left <= 24.5-8:
  26.             if tier == current_tier or time_left == 0:
  27.                 total_harvest += seed_gains(base, math.floor(current_tier))*first_harvest
  28.                 first_harvest = 1
  29.                 time_left -= 1
  30.                 current_tier=0
  31.  
  32.     return total_harvest
  33.  
  34. def return_on_seed(base_price, base_seed, tier, previous_tier):
  35.     price = 0
  36.     for i in range(previous_tier+1, tier+1):
  37.         price += upgrade_price(base_price, i)
  38.  
  39.     seed_difference = seed_gains_per_day(base_seed, tier)-seed_gains_per_day(base_seed, previous_tier)
  40.     return seed_difference/price
  41.  
  42. gold = { "cost": 1, "seeds": 1, "name": "Fruit of Gold" }
  43. powera = { "cost": 10, "seeds": 1, "name": "Fruit of Power α" }
  44. adventure = { "cost": 25, "seeds": 1, "name": "Fruit of Adventure" }
  45. knowledge = { "cost": 40, "seeds": 1, "name": "Fruit of Knowledge" }
  46. pomegranate = { "cost": 60, "seeds": 10, "name": "Pomegranate" }
  47. luck = { "cost": 100, "seeds": 1, "name": "Fruit of Luck" }
  48. powerb = { "cost": 150, "seeds": 1, "name": "Fruit of Power β" }
  49. arbitrariness = { "cost": 170, "seeds": 3, "name": "Fruit of Arbitrariness" }
  50. numbers = { "cost": 200, "seeds": 3, "name": "Fruit of Numbers" }
  51. rage = { "cost": 2000, "seeds": 5, "name": "Fruit of Rage" }
  52. macguffina = { "cost": 15000, "seeds": 6, "name": "Fruit of MacGuffin α" }
  53. powerd = { "cost": 30000, "seeds": 7, "name": "Fruit of Power δ" }
  54. watermelon = { "cost": 50000, "seeds": 24, "name": "Watermelon" }
  55. macguffinb = { "cost": 100000, "seeds": 8, "name": "Fruit of MacGuffin β" }
  56.  
  57. # fruits = [gold]
  58. fruits = [gold, powera, adventure, knowledge, pomegranate, luck, powerb, arbitrariness, numbers, rage, macguffina, powerd, watermelon, macguffinb]
  59. # fruits = [rage, macguffina, powerd, watermelon, macguffinb]
  60.  
  61. effectivenesses = {}
  62. # tiers = [1, 2, 3, 4, 5, 6, 8, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]
  63. # tiers = list(range(1,25))
  64.  
  65. for fruit in fruits:
  66.     for tier in range(1, 25):
  67.         if tier == 1:
  68.             previous_tier = 0
  69.         else:
  70.             previous_tier = tier-1
  71.  
  72.         effectiveness = return_on_seed(
  73.                 fruit['cost'],
  74.                 fruit['seeds'],
  75.                 tier,
  76.                 previous_tier
  77.                 )
  78.         if tier > 1:
  79.             previous_effectiveness = effectivenesses[(fruit['name'], tier-1)]
  80.             previous_effect_value = previous_effectiveness['effectiveness']
  81.             if effectiveness > previous_effect_value:
  82.                 previous_tier = previous_effectiveness['previous_tier']
  83.                 effectiveness = return_on_seed(
  84.                         fruit['cost'],
  85.                         fruit['seeds'],
  86.                         tier,
  87.                         previous_tier
  88.                     )
  89.                 del effectivenesses[(fruit['name'], tier-1)]
  90.         effectivenesses[(fruit['name'], tier)] = {
  91.                 'upgrade': f"{fruit['name']}, Tier {previous_tier}→{tier}",
  92.                 'effectiveness': effectiveness,
  93.                 'previous_tier': previous_tier
  94.                 }
  95.  
  96. tiers = sorted(
  97.         effectivenesses.values(),
  98.         key=lambda x: x['effectiveness'],
  99.         reverse=True
  100.         )
  101. for tier in tiers:
  102.     print(f"{tier['upgrade']}: {tier['effectiveness']}")
Add Comment
Please, Sign In to add comment