This is a followup to the D&D.Sci post I made last week; if you haven’t already read it, you should do so now before spoiling yourself.

Here is the web interactive I built to let you test your solution; below is a complete explanation of the rules used to generate the dataset. You’ll probably want to test your answer before reading any further.


Mage Fights

Mages have differing levels of Power. When they fight, each of them roll two ten-sided dice, and add the result to their Power. The mage with the higher total result wins; if it’s a tie, the defender wins.

The raw Power of each mage at the time of your summoning is given below:

Vitamancer A19
Vitamancer B22
Geomancer A21
Geomancer B12
Pyromancer A20
Pyromancer B21
Necromancer A22
Necromancer B15
Necromancer C13

Modifiers and Anomalies

Power is modified by the circumstances in which a fight occurs. The main modifiers are:

  • All mages get a homefield advantage of +4 when operating in their own territory.
  • Geomancers get +9 when defending and -9 when attacking.
  • Pyromancers get -9 when defending and +9 when attacking.

In addition, all the mages have something unique going on with them:

  • Geomancer B is the one who summoned you, and the keeper of the record provided. This explains, among other things, why all the earliest entries are fights involving him. (This fact is completely irrelevant to attempts to maximize wins or losses, but you can get unique outcomes if you make him the only winner or only loser on his side.)
  • Vitamancer A spent much of his youth specializing in handling Necromancer C, and gets an extra +7 whenever they fight.
  • Necromancer B is an ex-Vitamancer, and gets a +4 when operating in Vitamancer territory.
  • Geomancer A is an ex-Necromancer, and gets a +4 when operating in Necromancer territory.
  • The Cryomancer and Necromancer A strongly dislike fighting each other, and have made an under-the-table agreement to take turns forfeiting when their respective factions force them into conflict. The pattern is that she will ‘lose’ two fights, then he will ‘lose’ the next two, and so on ad infinitum. Necromancer A ‘lost’ the last two fights, so if you set up a fight between them the Cryomancer will take a dive.
  • The Electromancer is a mercenary. His prices are high enough that he’s not called in unless there is no other option; usually, when one faction’s mages are temporarily outnumbered.
  • Pyromancer A had a breakdown after her faction allied with the Necromancers; she was incapacitated for some time (during which the Electromancer took her place), and even after recovering, her internal conflicts mean she no longer has a bonus in Pyromancer territory.
  • Most mages have already reached their limits, but Vitamancer B is still relatively new to magic, and has slowly been developing her skills. At the record’s start, she is the weakest mage in the scenario, but by the time of your summoning she ranks among the strongest.
  • Pyromancer B discovered a new combat technique partway through the war; this made him invincible for the nineteen fights it took the Vitamancers to devise a counter, and permanently increased his Power from 17 to 21.


Geomancer B believes (mostly correctly) that time is not a relevant factor, and appends data to his records in the order he receives it, without noting what happened when.

The simulated timeline that created the dataset is as follows:

  • Necromancers routinely raid other territories for bodies to use as raw material; no-one counterattacks because no-one likes fighting Necromancers in their own domain, the Necromancers are usually defeated easily, and their raids tend not to harm the living.
  • Geomancer B starts recording fights he’s involved in.
  • Geomancer B convinces all the other non-Necromancer mages to start recording the outcomes of fights; however, the factions are distrustful enough that only Geomancer A shares records with him at this point.
  • The Pyromancers start a war with the Vitamancers. Necromancers stop raiding either faction, because it’s in their best interests for the war to drag on for as long as possible.
  • Necromancers join the war on the Pyromancers’ side; Geomancers do the same for the Vitamancers; Vitamancers share their records.
  • Necromancers resurrect Necromancer C; to avoid being outnumbered, the Geomancers and Vitamancers hire the Electromancer as a temporary measure, then recruit the Cryomancer; the Cryomancer shares her records.


The ‘making use of row order’ trick for this challenge was artificial even by the standards of such things; I sincerely congratulate everyone who considered and discarded the possibility for their pragmatism. In the real world, if you notice a formatting pattern that seems relevant to your task, you should usually ask the person who provided the dataset about it, rather than naively trying to model on it. That said, being able to detect (and prove) when a dataset has ‘extra’ information can be useful.

I added a lot of small, weird, marginally-relevant-to-the-task detail to this dataset, partly for the sake of realism, but also because I was pleasantly surprised by how comprehensively LW managed to pick apart my last two challenges and I wanted to establish an upper bound on what players would detect.


I’ve discovered I dislike creating D&D.Sci games to a strict deadline, so all I can promise is that the next one will be sometime in April.

I’m undecided about how long these challenges should last; feedback on this point would be greatly welcomed, as would feedback on any other point.

New Comment
4 comments, sorted by Click to highlight new comments since: Today at 5:59 AM

I'd prefer a week before the evaluation.

Thank you for organising this.

I think a week is a good length for them to last. 3 days felt a little rushed.

I like the flavorful responses to different outcomes in the evaluator — especially when you manage to have only the summoner lose.

I really appreciated this challenge, as I'd like to get more into data analysis. Thank you for the effort.