jasonharper
Developer
I've been thinking about the most efficient way to get the 91 discoveries and resulting trophy from the Sauceror Nenesis quest, and wrote a little script to simulate various strategies. The best I've found requires 91 each of the basic red/blue/yellow vials, and 238 cooks in 91 separate requests. A better solution has been claimed, but I really don't see where this could be improved - and the symmetry of the problem argues against a non-symmetrical solution.
You can try different solutions by rearranging the mix() calls, and possibly changing their quantities, or the initial inventory amounts set at the top of the script. When run, the script will either abort if a quantity ever goes negative, or print a summary of the vials left at the end. 35 brown vials are the minimum you can hope for; anything else left over indicates that you cooked or started with too many of some kind.
This could easily be turned into an actual solver for the trophy, by replacing the mix() function with one that actually does the mixing (via visit_url()), rather than just simulating it. I'm going to let someone else do that, since I'm currently a TT and couldn't actually test it.
EDIT: latest version of the script, which will actually cook the vials, is in message #23.
Code:
int[item] inv;
inv[$item[red slime]] = 91;
inv[$item[yellow slime]] = 91;
inv[$item[blue slime]] = 91;
int cooks = 0;
void mix(int qty, item res, item a, item b)
{
inv[a] = inv[a] - qty;
if (inv[a] < 0) abort(inv[a] + " " + a);
inv[b] = inv[b] - qty;
if (inv[b] < 0) abort(inv[b] + " " + b);
inv[res] = inv[res] + qty;
cooks = cooks + qty;
}
mix(1, $item[red slime], $item[red slime], $item[red slime]);
mix(1, $item[yellow slime], $item[yellow slime], $item[yellow slime]);
mix(1, $item[blue slime], $item[blue slime], $item[blue slime]);
mix(30, $item[orange slime], $item[red slime], $item[yellow slime]);
mix(30, $item[v green slime], $item[yellow slime], $item[blue slime]);
mix(30, $item[violet slime], $item[red slime], $item[blue slime]);
mix(1, $item[orange slime], $item[orange slime], $item[orange slime]);
mix(1, $item[v green slime], $item[v green slime], $item[v green slime]);
mix(1, $item[violet slime], $item[violet slime], $item[violet slime]);
mix(11, $item[vermilion slime], $item[red slime], $item[orange slime]);
mix(11, $item[amber slime], $item[yellow slime], $item[orange slime]);
mix(11, $item[chartreuse slime], $item[yellow slime], $item[v green slime]);
mix(11, $item[teal slime], $item[blue slime], $item[v green slime]);
mix(11, $item[purple slime], $item[red slime], $item[violet slime]);
mix(11, $item[indigo slime], $item[blue slime], $item[violet slime]);
mix(1, $item[vermilion slime], $item[vermilion slime], $item[vermilion slime]);
mix(1, $item[amber slime], $item[amber slime], $item[amber slime]);
mix(1, $item[chartreuse slime], $item[chartreuse slime], $item[chartreuse slime]);
mix(1, $item[teal slime], $item[teal slime], $item[teal slime]);
mix(1, $item[purple slime], $item[purple slime], $item[purple slime]);
mix(1, $item[indigo slime], $item[indigo slime], $item[indigo slime]);
mix(1, $item[orange slime], $item[red slime], $item[amber slime]);
mix(1, $item[orange slime], $item[yellow slime], $item[vermilion slime]);
mix(1, $item[orange slime], $item[vermilion slime], $item[amber slime]);
mix(1, $item[v green slime], $item[blue slime], $item[chartreuse slime]);
mix(1, $item[v green slime], $item[yellow slime], $item[teal slime]);
mix(1, $item[v green slime], $item[chartreuse slime], $item[teal slime]);
mix(1, $item[violet slime], $item[blue slime], $item[purple slime]);
mix(1, $item[violet slime], $item[red slime], $item[indigo slime]);
mix(1, $item[violet slime], $item[indigo slime], $item[purple slime]);
mix(1, $item[vermilion slime], $item[orange slime], $item[vermilion slime]);
mix(1, $item[vermilion slime], $item[red slime], $item[vermilion slime]);
mix(1, $item[amber slime], $item[orange slime], $item[amber slime]);
mix(1, $item[amber slime], $item[yellow slime], $item[amber slime]);
mix(1, $item[chartreuse slime], $item[v green slime], $item[chartreuse slime]);
mix(1, $item[chartreuse slime], $item[yellow slime], $item[chartreuse slime]);
mix(1, $item[teal slime], $item[blue slime], $item[teal slime]);
mix(1, $item[teal slime], $item[v green slime], $item[teal slime]);
mix(1, $item[purple slime], $item[red slime], $item[purple slime]);
mix(1, $item[purple slime], $item[violet slime], $item[purple slime]);
mix(1, $item[indigo slime], $item[blue slime], $item[indigo slime]);
mix(1, $item[indigo slime], $item[violet slime], $item[indigo slime]);
mix(1, $item[brown slime], $item[amber slime], $item[chartreuse slime]);
mix(1, $item[brown slime], $item[amber slime], $item[brown slime]);
mix(1, $item[brown slime], $item[amber slime], $item[indigo slime]);
mix(1, $item[brown slime], $item[amber slime], $item[purple slime]);
mix(1, $item[brown slime], $item[amber slime], $item[teal slime]);
mix(1, $item[brown slime], $item[blue slime], $item[amber slime]);
mix(1, $item[brown slime], $item[blue slime], $item[brown slime]);
mix(1, $item[brown slime], $item[blue slime], $item[orange slime]);
mix(1, $item[brown slime], $item[blue slime], $item[vermilion slime]);
mix(1, $item[brown slime], $item[chartreuse slime], $item[brown slime]);
mix(1, $item[brown slime], $item[chartreuse slime], $item[indigo slime]);
mix(1, $item[brown slime], $item[chartreuse slime], $item[purple slime]);
mix(1, $item[brown slime], $item[v green slime], $item[amber slime]);
mix(1, $item[brown slime], $item[v green slime], $item[brown slime]);
mix(1, $item[brown slime], $item[v green slime], $item[indigo slime]);
mix(1, $item[brown slime], $item[v green slime], $item[purple slime]);
mix(1, $item[brown slime], $item[v green slime], $item[vermilion slime]);
mix(1, $item[brown slime], $item[v green slime], $item[violet slime]);
mix(1, $item[brown slime], $item[indigo slime], $item[brown slime]);
mix(1, $item[brown slime], $item[orange slime], $item[brown slime]);
mix(1, $item[brown slime], $item[orange slime], $item[chartreuse slime]);
mix(1, $item[brown slime], $item[orange slime], $item[v green slime]);
mix(1, $item[brown slime], $item[orange slime], $item[indigo slime]);
mix(1, $item[brown slime], $item[orange slime], $item[purple slime]);
mix(1, $item[brown slime], $item[orange slime], $item[teal slime]);
mix(1, $item[brown slime], $item[orange slime], $item[violet slime]);
mix(1, $item[brown slime], $item[purple slime], $item[brown slime]);
mix(1, $item[brown slime], $item[red slime], $item[brown slime]);
mix(1, $item[brown slime], $item[red slime], $item[chartreuse slime]);
mix(1, $item[brown slime], $item[red slime], $item[v green slime]);
mix(1, $item[brown slime], $item[red slime], $item[teal slime]);
mix(1, $item[brown slime], $item[teal slime], $item[brown slime]);
mix(1, $item[brown slime], $item[teal slime], $item[indigo slime]);
mix(1, $item[brown slime], $item[teal slime], $item[purple slime]);
mix(1, $item[brown slime], $item[vermilion slime], $item[brown slime]);
mix(1, $item[brown slime], $item[vermilion slime], $item[chartreuse slime]);
mix(1, $item[brown slime], $item[vermilion slime], $item[indigo slime]);
mix(1, $item[brown slime], $item[vermilion slime], $item[purple slime]);
mix(1, $item[brown slime], $item[vermilion slime], $item[teal slime]);
mix(1, $item[brown slime], $item[violet slime], $item[amber slime]);
mix(1, $item[brown slime], $item[violet slime], $item[brown slime]);
mix(1, $item[brown slime], $item[violet slime], $item[chartreuse slime]);
mix(1, $item[brown slime], $item[violet slime], $item[teal slime]);
mix(1, $item[brown slime], $item[violet slime], $item[vermilion slime]);
mix(1, $item[brown slime], $item[yellow slime], $item[brown slime]);
mix(1, $item[brown slime], $item[yellow slime], $item[indigo slime]);
mix(1, $item[brown slime], $item[yellow slime], $item[purple slime]);
mix(1, $item[brown slime], $item[yellow slime], $item[violet slime]);
mix(1, $item[brown slime], $item[brown slime], $item[brown slime]);
foreach it, qty in inv {
print(qty + " " + it);
}
print(cooks + " cooks");
This could easily be turned into an actual solver for the trophy, by replacing the mix() function with one that actually does the mixing (via visit_url()), rather than just simulating it. I'm going to let someone else do that, since I'm currently a TT and couldn't actually test it.
EDIT: latest version of the script, which will actually cook the vials, is in message #23.
Last edited: