I made some progress (right in the nick of time) by...
Massaging the data into a table of every deck we’ve seen, and whether the deck won its match or lost it (the code is long and boring, so I’m skipping it here), then building the following machinery to quickly analyze restricted subsets of deck-space.
q is used to filter us down to decks that obey the constraint. We then check the correlation of each card to winrate. Finally, we show how many decks were kept, and what the winrate actually is.
q can be pretty complicated, with expressiveness limits defined by pd.DataFrame.query. A few things that work:
(angel + lotus) == 0
1 <= dragon and 1 <= lotus and 4 <= (dragon + lotus)
I made some progress (right in the nick of time) by...
Massaging the data into a table of every deck we’ve seen, and whether the deck won its match or lost it (the code is long and boring, so I’m skipping it here), then building the following machinery to quickly analyze restricted subsets of deck-space.
q is used to filter us down to decks that obey the constraint. We then check the correlation of each card to winrate. Finally, we show how many decks were kept, and what the winrate actually is.
q can be pretty complicated, with expressiveness limits defined by
pd.DataFrame.query
. A few things that work:(angel + lotus) == 0
1 <= dragon and 1 <= lotus and 4 <= (dragon + lotus)
1 <= dragon and lotus == 0
(pirate-1) <= sword <= (pirate+1)
My deck submission (PvE and PvP) is:
4 angels 3 lotuses 3 pirates 2 sword