Skip to content

Instantly share code, notes, and snippets.

@randbrown
Created August 27, 2016 19:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save randbrown/93f105dfd3bae61fb17d7e389f6754a2 to your computer and use it in GitHub Desktop.
Save randbrown/93f105dfd3bae61fb17d7e389f6754a2 to your computer and use it in GitHub Desktop.
Pokemon Go Trade/Evolution Calculator
<html>
<head>
</head>
<body>
<h1>
Pokemon Trade/Evolve Calculator
</h1>
<label for="pokemon"># of pokemon</label>
<input type="number" name="pokemon" id="pokemon" value="19">
<br/>
<label for="candy"># of candy</label>
<input type="number" name="candy" id="candy" value="186">
<br/>
<label for="evcost">cost per evolution</label>
<input type="number" name="evcost" id="evcost" value="12">
<br/>
<button type="button" onclick="calc()">Calculate</button>
<div id="log">
</div>
<script type="text/javascript">
function calc() {
var p = document.getElementById('pokemon').value;
var c = document.getElementById('candy').value;
var e = document.getElementById('evcost').value;
var x = 0;
var div = document.getElementById('log');
div.innerHTML = '';
log(`Starting with ${p} pokemon and ${c} candies`);
var curEvolves = 0;
var pStart = p;
var maxLoops = 1000;
var currLoop = 0;
while (p > 0 && currLoop++ < maxLoops) {
// log(`--------------------`)
// log(`Have ${c} candy, ${p} pokemon`);
if (c < e) {
//log(`Num candies ${c} is not enough to evolve, need to trade in some`);
if ((p + c) > e) {
p -= 1;
c += 1;
//log(`traded one pokemon`);
}
else {
//log(`not enough pokemon, ending loop`);
//log(`trading in ${p} left over pokemon`);
c += p;
p = 0;
break;
}
}
curEvolves = Math.min(Math.floor(c / e), p);
x += curEvolves;
c -= (curEvolves * e);
// we get one candy back for evolve!
c += curEvolves;
//log(`evolved ${curEvolves} pokemon, have ${c} candy left`);
// trade in all evolved ones get 2 (1 for evolve + 1 for trade)
c += curEvolves;
p -= curEvolves;
//log(`traded ${curEvolves} pokemon and now have ${c} candy`);
}
var numTrade = pStart - p - x;
log(`---------RESULT------------`);
log(`Trade ${numTrade} in, Evolve ${x} pokemon, trading as you evolve, have ${p} pokemon and ${c} candy remaining`);
}
function log(s) {
console.log(s);
var div = document.getElementById('log');
div.innerHTML = div.innerHTML + '<br/>' + s;
}
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment