First, I was interested in finding out why DoubleJack was the defacto standard for all jack plays ; I'd done several solitaire games yesterday comparing different methods of early estate trashing + BM strategies, and i found that SingleJack was a much more consistent strategy, although slower by ~.5 turns in the BEST case. My 10 solitaire matches found that SingleJack was 4provinces in 13.6+/-0.9 turns while DoubleJack was 14.14+/-2.95.
Simulations of the two (unoptimized?) strategies against each other find a 48/52 in favor of SingleJack:
Default DoubleJack:
# Buys two Jacks of All Trades and otherwise plays a version of Big Money.
#
# This has no Colony rules, because it would be a terrible strategy in
# Colony games.
{
name: 'DoubleJack'
author: 'rspeer'
requires: ["Jack of All Trades"]
gainPriority: (state, my) -> [
"Province" if my.getTotalMoney() > 15
"Duchy" if state.gainsToEndGame() <= 5
"Estate" if state.gainsToEndGame() <= 2
"Gold"
"Jack of All Trades" if my.countInDeck("Jack of All Trades") < 2
"Silver"
]
}
SingleJack simply changes the < 2 to < 1 for Jack-buying.
However, from the solitaire matches, I'd found that the biggest obstacle to getting fast provinces was an early duchy, which had a way of ruining the deck's ability to function (worst being a game in which I was stuck at 7 from turns 13-19, primarily due to quick reshuffles making those duchies and extrajacks come back to haunt me). After playing around with the "how soon can i buy duchies" I found that no strategic play could make DoubleJack beat SingleJack.
Obviously, attack cards and other strategic combinations such as oasis may have a different result, but the simple "always buy two jacks" rule is one that can be challenged.
Second: Warehouse/Tunnel:
RR asked if Warehouse/Warehouse aiming to get tunnel was better than Warehouse/Tunnel in sims. The first step was getting a good combo Bot to start out with:
Do you even buy golds? It doesnt seem to make much difference, but 52-48 in favor of the gold-buying bot.
What order do you buy tunnels and warehouses AFTER the opening? They really more or less tied here too.
How many warehouses do you buy? Apparently 1 more than you have tunnels.
How hard do you fight for tunnels in the mirror? If you open W/T you need to fight hard to get a 5/3 split, but opening W/W you almost don't care if you get more than 3.
Overall, I couldn't come up with anything that would make warehouse/tunnel better than 47/53 versus warehouse/warehouse:
Bots Below:
# Open Warehouse/Tunnel/Warehouse For Warehouse/Tunnel Board then fights for Tunnels
{
name: 'WareTunnel'
author: 'rod-'
requires: ["Warehouse", "Tunnel"]
gainPriority: (state, my) -> [
"Province" if my.getTotalMoney() > 15
"Duchy" if state.gainsToEndGame() <= 5
"Estate" if state.gainsToEndGame() <= 2
"Gold"
"Duchy" if state.countInSupply("Tunnel") == 0
"Tunnel" if my.countInDeck("Tunnel") < 1
"Warehouse" if my.countInDeck("Warehouse") < 2
"Tunnel" if my.countInDeck("Tunnel") < 6
"Warehouse" if my.countInDeck("Warehouse") < my.countInDeck("Tunnel")+1
]
}
{
# Open Warehouse/Warehouse/Tunnel then maintains warehouse/tunnel parity on Warehouse/Tunnel Board
name: 'DoubleWareTunnel'
author: 'rod-'
requires: ["Warehouse", "Tunnel"]
gainPriority: (state, my) -> [
"Province" if my.getTotalMoney() > 15
"Duchy" if state.gainsToEndGame() <= 5
"Estate" if state.gainsToEndGame() <= 2
"Gold"
"Duchy" if state.countInSupply("Tunnel") == 0
"Warehouse" if my.countInDeck("Warehouse") < 2
"Warehouse" if my.countInDeck("Warehouse") < my.countInDeck("Tunnel")+1
"Tunnel" if my.countInDeck("Tunnel") < 6
]
}
It's possible that both of these bots get too many warehouses/tunnels, but whenever i lowered the count of warehouses, it was a bad thing.