Spaceplan 10 years ago
You can actually improve this a little with a better scoring function. Suppose we currently produce p, and A costs cA, for a power gain of pA. Likewise for B. Under the assumption that we will buy at least one more of A and B, we can look at whether A then B or B then A is faster, which is:
cA/p + cB/(p+pA) < cB/p + cA/(p+pA)
Solving this, we get cA * (p+pA)/pA < cB * (p+pB)/pB Since the left side is all in A, if we pick the item minimizing that quantity, it is faster to buy it before any other item. So changing res.score to be res.cost * (cur_power + res.powerGain)/res.powerGain is going to be a bit faster