I like a lot the idea of a Diversity Hill for Corewar Warriors
(Note 1). There is a
thread about Diversity Hills on
rec.games.corewar
and I already posted some of my ideas there. Anyway, I think that
an example that uses real warriors and real numbers can lead to
clearer ideas for anyone interested in the thread.
In order to start the game, I used the published warriors on John Metcalf's Infinite Tiny Hill. I defined two distances on the warriors' space and tried to define a numeric discriminant, in order to decide if a new challenger succeeds or not in entering the hill, and which warrior should be pushed off the hill after a new successful challenge.
I tried to compare other distances and discriminants; many questions arise, and I tried to answer to some of them. Most questions still miss a satisfying answer.
In order to have a fast and simply result, I defined a Tiny Hill in the usual way (Note 2); I decided to make only 2 fights of 250 rounds each, including self-fights. The hill contains 20 slots.
Then I defined the distances between two warriors; I used the classic "euclidean distance" between the points identified by the wins/losses/ties scored against all the warriors on the hill, including the two, as the first distance; I considered only the wins/losses scores for the second distance (Note 3).
I entered the least 20 warriors listed on John Metcalf's Pure Infinite Tiny Hill in reverse order (i.e. starting from the last) and this is what I got:
| # | Warrior | Wins | Losses | Ties | Score | Nearest warrior 1 | Distance 1 | Nearest warrior 2 | Distance 2 |
|---|---|---|---|---|---|---|---|---|---|
| 1 | quickd.red | 5427 | 3386 | 1187 | 17468 | tinyak47.red | 606.31 | tinyak47.red | 537.24 |
| 2 | tinyak47.red | 5392 | 3395 | 1213 | 17389 | quickd.red | 606.31 | quickd.red | 537.24 |
| 3 | tinydawn.red | 4157 | 1610 | 4233 | 16704 | tinybarb.red | 613.54 | pergamen.red | 516.71 |
| 4 | tinybarb.red | 3924 | 1527 | 4549 | 16321 | pergamen.red | 560.57 | pergamen.red | 455.46 |
| 5 | szczur.red | 4695 | 3476 | 1829 | 15914 | ugly.red | 739.15 | stunner.red | 674.28 |
| 6 | ugly.red | 4433 | 3179 | 2388 | 15687 | euthin.red | 641.25 | squirm.red | 539.74 |
| 7 | sept.red | 4569 | 3796 | 1635 | 15342 | stunner.red | 861.89 | stunner.red | 675.99 |
| 8 | euthin.red | 4362 | 3584 | 2054 | 15140 | ugly.red | 641.25 | ugly.red | 551.93 |
| 9 | squirm.red | 4073 | 3263 | 2664 | 14883 | ugly.red | 667.75 | ugly.red | 539.74 |
| 10 | pergamen.red | 3174 | 1589 | 5237 | 14759 | tinybarb.red | 560.57 | tinybarb.red | 455.46 |
| 11 | ricket.red | 4071 | 4063 | 1866 | 14079 | tinytom.red | 695.65 | tinytom.red | 595.33 |
| 12 | tinytom.red | 3932 | 4258 | 1810 | 13606 | tinyever.red | 539.72 | tinyever.red | 445.13 |
| 13 | snake.red | 2680 | 2274 | 5046 | 13086 | pergamen.red | 708.80 | pergamen.red | 505.33 |
| 14 | tinyever.red | 3357 | 4460 | 2183 | 12254 | tinytom.red | 539.72 | tinytom.red | 445.13 |
| 15 | stunner.red | 2962 | 3787 | 3251 | 12137 | snow.red | 688.92 | snow.red | 536.91 |
| 16 | snow.red | 2022 | 3829 | 4149 | 10215 | stunner.red | 688.92 | stunner.red | 536.91 |
| 17 | tinybrut.red | 2298 | 4632 | 3070 | 9964 | snow.red | 718.48 | snow.red | 612.58 |
| 18 | tinyspir.red | 1387 | 3201 | 5412 | 9573 | snake.red | 1005.47 | snake.red | 843.36 |
| 19 | tinyclp.red | 2715 | 6472 | 813 | 8958 | tinybrut.red | 1015.44 | tinybrut.red | 823.50 |
| 20 | tiny-p.red | 1845 | 5694 | 2461 | 7996 | tinybrut.red | 1059.45 | tinybrut.red | 868.69 |
According to both distances, the nearest warriors on the hill
are tinytom.red and tinyever.red. The
header lines in the warriors are:
;name Tiny Tom ;author M Joonas Pihlaja ;strategy clear, clp
;name Tiny Everclear S ;author Franz ;strategy jmz scan -> spl/spl/dat clear
If you read the code, you indeed can guess that the claims are correct; anyway, they score "nearly the same" in this hill. The first question arise: why do a P-switcher and an oneshot score so similar?
Maybe the answer is that the claims in the
;strategy lines and the further inspection of the
warriors' code are not enough to classify the warriors, and we
must inspect their behaviour, too: it seems like "clear, clp" was
not a good choice for a P-switcher (Note 4).
This is what I got when I entered the 21st challenger:
| # | Warrior | Wins | Losses | Ties | Score | Nearest warrior 1 | Distance 1 | Nearest warrior 2 | Distance 2 |
|---|---|---|---|---|---|---|---|---|---|
| 1 | tinyak47.red | 5519 | 3621 | 1360 | 17917 | quickd.red | 618.49 | quickd.red | 549.57 |
| 2 | quickd.red | 5455 | 3672 | 1373 | 17738 | tinyak47.red | 618.49 | tinyak47.red | 549.57 |
| 3 | tinydawn.red | 4160 | 1616 | 4724 | 17204 | tinybarb.red | 617.19 | silkligh.red | 507.00 |
| 4 | tinybarb.red | 3946 | 1568 | 4986 | 16824 | pergamen.red | 562.68 | pergamen.red | 456.56 |
| 5 | szczur.red | 4791 | 3774 | 1935 | 16308 | ugly.red | 790.38 | stunner.red | 678.87 |
| 6 | ugly.red | 4514 | 3287 | 2699 | 16241 | euthin.red | 641.79 | squirm.red | 540.43 |
| 7 | sept.red | 4734 | 3985 | 1781 | 15983 | stunner.red | 864.28 | stunner.red | 678.74 |
| 8 | euthin.red | 4422 | 3706 | 2372 | 15638 | ugly.red | 641.79 | ugly.red | 552.51 |
| 9 | silkligh.red | 3233 | 1390 | 5877 | 15576 | pergamen.red | 572.98 | pergamen.red | 462.46 |
| 10 | squirm.red | 4141 | 3395 | 2964 | 15387 | ugly.red | 668.39 | ugly.red | 540.43 |
| 11 | pergamen.red | 3190 | 1599 | 5711 | 15281 | tinybarb.red | 562.68 | tinybarb.red | 456.56 |
| 12 | ricket.red | 4155 | 4380 | 1965 | 14430 | tinytom.red | 749.34 | tinytom.red | 643.25 |
| 13 | tinytom.red | 4107 | 4349 | 2044 | 14365 | tinyever.red | 553.08 | tinyever.red | 455.43 |
| 14 | snake.red | 2706 | 2320 | 5474 | 13592 | silkligh.red | 626.92 | silkligh.red | 484.57 |
| 15 | tinyever.red | 3438 | 4572 | 2490 | 12804 | tinytom.red | 553.08 | tinytom.red | 455.43 |
| 16 | stunner.red | 3075 | 4008 | 3417 | 12642 | snow.red | 698.05 | snow.red | 541.48 |
| 17 | snow.red | 2114 | 3983 | 4403 | 10745 | stunner.red | 698.05 | stunner.red | 541.48 |
| 18 | tinybrut.red | 2359 | 4882 | 3259 | 10336 | snow.red | 728.43 | snow.red | 620.83 |
| 19 | tinyspir.red | 1401 | 3244 | 5855 | 10058 | snake.red | 1005.66 | snake.red | 843.45 |
| 20 | tinyclp.red | 2725 | 6936 | 839 | 9014 | tinybrut.red | 1051.70 | tinybrut.red | 852.37 |
| 21 | tiny-p.red | 1895 | 5793 | 2812 | 8497 | tinybrut.red | 1082.41 | tinybrut.red | 881.79 |
And now what happens? Should the tiny-p.red
warrior get pushed off the Hill? "Of course not", because I am
going to have this hill as a diversity hill. In fact, right now
tiny-p.red is the most diverse of all warriors on
the hill, in both distances, and must be rewarded for this. So,
who will be pushed off the hill?
Let it be the less scoring between the new entry and the nearest warrior.
In this case, the nearest warrior is pergamen.red
in both distances. If we read the headers:
;name Silk Light ;author Christian Schmidt ;strategy Paper
;name Pergament ;author Christian Schmidt ;strategy silk/imps
we understand that this is a fine choice; not that good,
because pergamen.red is not a pure paper, but fine.
Anyway, we can notice that the nearest warrior to
pergamen.red, according to both distances, is not
the new challenger, but tinybarb.red, a stone/imp.
And why are they so similar? Maybe because the imp part is
predominant in both warriors. In my opinion, it seems like that
comparing silkligh.red and pergamen.red
is not a correct choice.
And more, what happened if the new challenger were
tiny-p.red instead? It would not enter the hill! It
is "randomly" compared to tinybrut.red, and loses
(Note 5). This means that
the order in which we submit the warriors to the hill is
important in determining the hill itself. This is not correct in
my opinion, and this is definitely the reason why I reject this
rule (Note 6).
Let it be the less scoring of the two nearest warriors, regardless of if the new entry is one of the two or not.
According to both distances, this would be
tinyever.red as compared to
tinytom.red; the new challenger
silkligh.red is distant enough from the other
warriors, and gets its place on the hill.
But again let's think about what happened if the new
challenger were tiny-p.red instead. It has a far
distance from any of the warriors on the hill, but its score is
the lowest one. Should it enter the hill, and incidentally push
off tinyever.red? Its distance is a good hint that
the new challenger should get its place on the hill, but its
score is a good hint that it should not! (Note 7)
Another question arise: silkligh.red enters the
hill at 9th, and pushes off tinyever.red at 15th;
anyway, if by chance the nearest warriors were
tinybarb.red and pergamen.red instead
(compare the distances), then pergamen.red would be
the loser, and it would be pushed off at 11th! Why?
This new rule seems good, but it does not answer these questions, yet. It seems like we need to define a numeric discriminant, in order to assert that we choose the correct warriors on a numeric base. (Note 8)
I defined a numeric discriminant as the product of the score by the minimum distance (Note 9).
This is what I got when I ordered the warriors by the numeric discriminant defined by distance 1:
| Warrior | Wins | Losses | Ties | Score | Nearest warrior | Distance | Discriminant /1000 |
|---|---|---|---|---|---|---|---|
| sept.red | 4734 | 3985 | 1781 | 15983 | stunner.red | 864.28 | 13813.8 |
| szczur.red | 4791 | 3774 | 1935 | 16308 | ugly.red | 790.38 | 12889.5 |
| tinyak47.red | 5519 | 3621 | 1360 | 17917 | quickd.red | 618.49 | 11081.6 |
| quickd.red | 5455 | 3672 | 1373 | 17738 | tinyak47.red | 618.49 | 10970.9 |
| ricket.red | 4155 | 4380 | 1965 | 14430 | tinytom.red | 749.34 | 10813.0 |
| tinydawn.red | 4160 | 1616 | 4724 | 17204 | tinybarb.red | 617.19 | 10618.2 |
| ugly.red | 4514 | 3287 | 2699 | 16241 | euthin.red | 641.79 | 10423.3 |
| squirm.red | 4141 | 3395 | 2964 | 15387 | ugly.red | 668.39 | 10284.6 |
| tinyspir.red | 1401 | 3244 | 5855 | 10058 | snake.red | 1005.66 | 10114.9 |
| euthin.red | 4422 | 3706 | 2372 | 15638 | ugly.red | 641.79 | 10036.3 |
| tinyclp.red | 2725 | 6936 | 839 | 9014 | tinybrut.red | 1051.70 | 9480.0 |
| tinybarb.red | 3946 | 1568 | 4986 | 16824 | pergamen.red | 562.68 | 9466.5 |
| tiny-p.red | 1895 | 5793 | 2812 | 8497 | tinybrut.red | 1082.41 | 9197.2 |
| silkligh.red | 3233 | 1390 | 5877 | 15576 | pergamen.red | 572.98 | 8924.8 |
| stunner.red | 3075 | 4008 | 3417 | 12642 | snow.red | 698.05 | 8824.8 |
| pergamen.red | 3190 | 1599 | 5711 | 15281 | tinybarb.red | 562.68 | 8598.3 |
| snake.red | 2706 | 2320 | 5474 | 13592 | silkligh.red | 626.92 | 8521.2 |
| tinytom.red | 4107 | 4349 | 2044 | 14365 | tinyever.red | 553.08 | 7945.1 |
| tinybrut.red | 2359 | 4882 | 3259 | 10336 | snow.red | 728.43 | 7529.0 |
| snow.red | 2114 | 3983 | 4403 | 10745 | stunner.red | 698.05 | 7500.6 |
| tinyever.red | 3438 | 4572 | 2490 | 12804 | tinytom.red | 553.08 | 7081.7 |
And this is what I got when I ordered the warriors by the numeric discriminant defined by distance 2:
| Warrior | Wins | Losses | Ties | Score | Nearest warrior | Distance | Discriminant /1000 |
|---|---|---|---|---|---|---|---|
| szczur.red | 4791 | 3774 | 1935 | 16308 | stunner.red | 678.87 | 11071.1 |
| sept.red | 4734 | 3985 | 1781 | 15983 | stunner.red | 678.74 | 10848.4 |
| tinyak47.red | 5519 | 3621 | 1360 | 17917 | quickd.red | 549.57 | 9846.7 |
| quickd.red | 5455 | 3672 | 1373 | 17738 | tinyak47.red | 549.57 | 9748.3 |
| ricket.red | 4155 | 4380 | 1965 | 14430 | tinytom.red | 643.25 | 9282.1 |
| ugly.red | 4514 | 3287 | 2699 | 16241 | squirm.red | 540.43 | 8777.2 |
| tinydawn.red | 4160 | 1616 | 4724 | 17204 | silkligh.red | 507.00 | 8722.5 |
| euthin.red | 4422 | 3706 | 2372 | 15638 | ugly.red | 552.51 | 8640.2 |
| tinyspir.red | 1401 | 3244 | 5855 | 10058 | snake.red | 843.45 | 8483.4 |
| squirm.red | 4141 | 3395 | 2964 | 15387 | ugly.red | 540.43 | 8315.7 |
| tinyclp.red | 2725 | 6936 | 839 | 9014 | tinybrut.red | 852.37 | 7683.3 |
| tinybarb.red | 3946 | 1568 | 4986 | 16824 | pergamen.red | 456.56 | 7681.2 |
| tiny-p.red | 1895 | 5793 | 2812 | 8497 | tinybrut.red | 881.79 | 7492.6 |
| silkligh.red | 3233 | 1390 | 5877 | 15576 | pergamen.red | 462.46 | 7203.3 |
| pergamen.red | 3190 | 1599 | 5711 | 15281 | tinybarb.red | 456.56 | 6976.7 |
| stunner.red | 3075 | 4008 | 3417 | 12642 | snow.red | 541.48 | 6845.4 |
| snake.red | 2706 | 2320 | 5474 | 13592 | silkligh.red | 484.57 | 6586.2 |
| tinytom.red | 4107 | 4349 | 2044 | 14365 | tinyever.red | 455.43 | 6542.2 |
| tinybrut.red | 2359 | 4882 | 3259 | 10336 | snow.red | 620.83 | 6416.9 |
| tinyever.red | 3438 | 4572 | 2490 | 12804 | tinytom.red | 455.43 | 5831.3 |
| snow.red | 2114 | 3983 | 4403 | 10745 | stunner.red | 541.48 | 5818.2 |
In either case, it is numerically clear that
silkligh.red makes its way on the hill; anyway it
pushes off tinyever.red in the first case, and
snow.red in the second case. Incidentally, if the
new challenger were tiny-p.red it would enter the
hill in either case, too, and again it would push off the same
warriors (Note 10).
Let's study the results of the challenge: we already noticed,
in the first case, that tinyever.red is too similar
to tinytom.red, and both are scoring low. The same
holds in the second case: snow.red is the less
scoring of a couple of similar warriors, and both are scoring low
(the other one is stunner.red).
The result is that a paper enters the diversity hill and
pushes off an undisclosed strategy warrior (maybe a scanner, if
one inspects the code), because the latter is too similar to a
bomber -> clear... This seems to make no sense! Maybe 20 slots
are not enough to ensure a full diversity. Anyway, this makes me
think (again) that the claims in the ;strategy lines
are not always correct (Note 11).
The behaviour of a warrior against other warriors is the only
numeric classification I can think of so far. The claims in the
;strategy lines of a warrior and the further
investigations of its code are not enough to classify a warrior;
this is even more true if the code of a warrior is undisclosed,
as is the rule for the most popular hills.
The most positive aspect of the numeric discriminant is that
if you submit a warrior that behaves almost identically to
another one in the hill (possibly the same warrior), their
distances will approach to 0, and so will do the discriminant; in
this case, the less scoring of the two warriors will be pushed
off the hill, leaving the hill as diverse as it was before the
challenge. This answers one of the questions that arised in the
thread on rec.games.corewar (Note 12).
We still have to answer a question: in fact, we should notice
that a P-switcher behaves differently from the other warriors
(not always better, but surely different). In this case,
tinytom.red does not, in both distances. My first
answer was that maybe the "clear, clp" strategy is not a good
choice; but maybe the hill is not diverse enough, yet to allow a
correct switch. This last consideration is not good, of course.
So again this is an open question: should we consider the distance comparing the results with a chosen benchmark, instead of comparing the results against the other warriors in the hill? I still do not think so, because other questions would arise: how to choose the warriors for the benchmark? And how to update the benchmark, in order to keep trace of the new strategies that possibly may arise?
I prefer the first distance, so I kept on inserting the warriors from John Metcalf's Infinite Tiny Hill in reverse order into the Diversity Hill defined by distance 1. Here are the summary of the results:
| # | Challenger | Pushes off | # | Challenger | Pushes off | # | Challenger | Pushes off |
|---|---|---|---|---|---|---|---|---|
| 22 | wasp.red | tinybrut.red | 23 | mighty.red | snow.red | 24 | phantom.red | ugly.red* |
| 25 | tinygold.red | tinyclp.red | 26 | litt_hot.red | stunner.red | 27 | littreve.red | tinydawn.red* |
| 28 | tinysolo.red | pergamen.red | 29 | tinydclr.red | tinydclr.red* (quickd.red) | 30 | venom.red | litt_hot.red* |
| 31 | stolen1.red | stolen1.red* (littreve.red) | 32 | titan.red | tinyak47.red | 33 | incisor.red | szczur.red |
| 34 | tinytibe.red | venom.red* | 35 | dusting.red | tiny-p.red | 36 | musket.red | silkligh.red |
| 37 | tinywick.red | tinytom.red | 38 | tritiny.red | titan.red | 39 | tci.red | tinyspir.red |
| 40 | tinyuniv.red | wasp.red* | 41 | snowst.red | tinybarb.red* | 42 | djinn.red | euthin.red |
| 43 | helptiny.red | snake.red | 44 | wipe.red | wipe.red* (tinywick.red) | 45 | tinypoke.red | mighty.red* |
| 46 | tinypap1.red | musket.red | 47 | tinyport.red | tinywick.red* | 48 | impx.red | tinygold.red |
| 49 | sum3.red | incisor.red* | 50 | oneshott.red | quickd.red | 51 | yaos.red | yaos.red* (oneshott.red) |
| 52 | cl-skies.red | cl-skies.red* (tinyport.red) | 53 | talon.red | oneshott.red | 54 | tinytim.red | tinyuniv.red |
| 55 | tinyfree.red | tinyfree.red* (talon.red) | 56 | sod2.red | littreve.red* | 57 | rasp.red | rasp.red* (tinypap1.red) |
| 58 | tinybish.red | helptiny.red* | 59 | sniff.red | tinysolo.red* | 60 | clockwrk.red | sniff.red* |
| 61 | hemulen.red | tinypap1.red | 62 | xyzzy.red | tritiny.red* | 63 | madpixel.red | xyzzy.red* |
| 64 | tinyluke.red | sod2.red | 65 | troll.red | madpixel.red* | 66 | muskrat.red | tinyport.red |
| 67 | moomin.red | troll.red* | 68 | tinyboss.red | sum3.red* | 69 | oos.red | tinyboss.red |
| 70 | kb2.red | tinytim.red* | 71 | wing66.red | tinybish.red* | 72 | snufkin.red | moomin.red* |
| 73 | tinyblow.red | talon.red | 74 | hired.red | hemulen.red* | 75 | gunman.red | gunman.red* (hired.red) |
| 76 | dettol.red | tinyluke.red* | 77 | betadine.red | betadine.red* (dettol.red) | 78 | clock12.red | clock12.red* (dettol.red) |
| 79 | wingshot.red | wing66.red* | 80 | wshot-t.red | wshot-t.red* (wingshot.red) | 81 | potenza.red | tinytibe.red |
| 82 | tscan.red | dettol.red* | 83 | s774.red | s774.red* (tscan.red) | 84 | dk-skies.red | dk-skies.red* (wingshot.red) |
| 85 | t766.red | t766.red* (tscan.red) | 86 | e-threat.red | clockwrk.red | 87 | swarm.red | snufkin.red* |
| 88 | tinyshot.red | tinyshot.red* (wingshot.red) | 89 | tinybi2.red | wingshot.red* | 90 | easter.red | kb2.red* |
The starred warriors are those warriors being pushed off because they were too near to the new challenger. If the new challenger did not make it, I wrote the nearest warrior in parenthesis. Most of the results makes no wonder: see how oneshots and bishots keep pushing off other oneshots and bishots while approaching the top of the hill.
The resulting hill is:
| # | Warrior | Wins | Losses | Ties | Score | Nearest warrior 1 | Distance 1 |
|---|---|---|---|---|---|---|---|
| 1 | easter.red | 4575 | 2982 | 2443 | 16168 | potenza.red | 488.87 |
| 2 | tscan.red | 4737 | 3551 | 1712 | 15923 | tinybi2.red | 391.31 |
| 3 | e-threat.red | 4602 | 3304 | 2094 | 15900 | tscan.red | 496.53 |
| 4 | swarm.red | 3799 | 1829 | 4372 | 15769 | tinyblow.red | 573.55 |
| 5 | tinybi2.red | 4728 | 3728 | 1544 | 15728 | tscan.red | 391.31 |
| 6 | potenza.red | 4243 | 2799 | 2958 | 15687 | easter.red | 488.87 |
| 7 | tinyblow.red | 3377 | 1342 | 5281 | 15412 | swarm.red | 573.55 |
| 8 | hired.red | 4445 | 3969 | 1586 | 14921 | tinybi2.red | 408.74 |
| 9 | oos.red | 4549 | 4241 | 1210 | 14857 | tinybi2.red | 483.68 |
| 10 | muskrat.red | 4555 | 4673 | 772 | 14437 | djinn.red | 533.38 |
| 11 | tci.red | 3529 | 3366 | 3105 | 13692 | dusting.red | 585.48 |
| 12 | snowst.red | 3137 | 2652 | 4211 | 13622 | swarm.red | 624.93 |
| 13 | dusting.red | 3296 | 3764 | 2940 | 12828 | e-threat.red | 523.57 |
| 14 | tinypoke.red | 3616 | 4570 | 1814 | 12662 | muskrat.red | 615.40 |
| 15 | impx.red | 3246 | 4243 | 2511 | 12249 | dusting.red | 631.04 |
| 16 | djinn.red | 3749 | 5382 | 869 | 12116 | muskrat.red | 533.38 |
| 17 | phantom.red | 3304 | 4620 | 2076 | 11988 | dusting.red | 527.17 |
| 18 | sept.red | 3346 | 5499 | 1155 | 11193 | ricket.red | 645.60 |
| 19 | squirm.red | 2857 | 4717 | 2426 | 10997 | dusting.red | 598.34 |
| 20 | ricket.red | 3109 | 5568 | 1323 | 10650 | sept.red | 645.60 |
And the resulting numeric discriminant is:
| Warrior | Wins | Losses | Ties | Score | Nearest warrior | Distance | Discriminant /1000 |
|---|---|---|---|---|---|---|---|
| swarm.red | 3799 | 1829 | 4372 | 15769 | tinyblow.red | 573.55 | 9044.3 |
| tinyblow.red | 3377 | 1342 | 5281 | 15412 | swarm.red | 573.55 | 8839.5 |
| snowst.red | 3137 | 2652 | 4211 | 13622 | swarm.red | 624.93 | 8512.9 |
| tci.red | 3529 | 3366 | 3105 | 13692 | dusting.red | 585.48 | 8016.4 |
| easter.red | 4575 | 2982 | 2443 | 16168 | potenza.red | 488.87 | 7904.1 |
| e-threat.red | 4602 | 3304 | 2094 | 15900 | tscan.red | 496.53 | 7894.9 |
| tinypoke.red | 3616 | 4570 | 1814 | 12662 | muskrat.red | 615.40 | 7792.2 |
| impx.red | 3246 | 4243 | 2511 | 12249 | dusting.red | 631.04 | 7729.7 |
| muskrat.red | 4555 | 4673 | 772 | 14437 | djinn.red | 533.38 | 7700.4 |
| potenza.red | 4243 | 2799 | 2958 | 15687 | easter.red | 488.87 | 7669.0 |
| sept.red | 3346 | 5499 | 1155 | 11193 | ricket.red | 645.60 | 7226.2 |
| oos.red | 4549 | 4241 | 1210 | 14857 | tinybi2.red | 483.68 | 7186.0 |
| ricket.red | 3109 | 5568 | 1323 | 10650 | sept.red | 645.60 | 6875.6 |
| dusting.red | 3296 | 3764 | 2940 | 12828 | e-threat.red | 523.57 | 6716.4 |
| squirm.red | 2857 | 4717 | 2426 | 10997 | dusting.red | 598.34 | 6579.9 |
| djinn.red | 3749 | 5382 | 869 | 12116 | muskrat.red | 533.38 | 6462.4 |
| phantom.red | 3304 | 4620 | 2076 | 11988 | dusting.red | 527.17 | 6319.7 |
| tscan.red | 4737 | 3551 | 1712 | 15923 | tinybi2.red | 391.31 | 6230.9 |
| tinybi2.red | 4728 | 3728 | 1544 | 15728 | tscan.red | 391.31 | 6154.6 |
| hired.red | 4445 | 3969 | 1586 | 14921 | tinybi2.red | 408.74 | 6098.8 |
The distances flattened since the first challenges; this makes me think that maybe 20 slots are too few. But the warriors are more or less equally spaced, and this is good. The most winning strategy gets the most warriors on the hill, as far as it allows many variants.
Anyway, 3 of the least 20 warriors survived 70 challenges!
This means that the strategies in ricket.red,
squirm.red, and sept.red are really
diverse and maybe competitive! Maybe they just need some good
implementation?
Note 1 A hill with many different strategies can help developing smarter warriors, and more important it can enhance the development of new strategies for Corewars. The developer of a new idea can find it frustrating to see his or her warrior continuously failing in entering a standard hill; finally, he or she would quit the idea. And maybe it was a good idea, but the hill was not diverse enough, it was just full of warriors based on the same strategy, and the new warrior failed against only that strategy. top
Note 2 CORESIZE==800
&& MAXPROCESSES==800 && MAXCYCLES==8000
&& MAXLENGTH==20 && MINDISTANCE==20. I
used the -f flag of pMars in order to always
replicate the same results. top
Note 3 As an example for
the first distance: say warrior1 scores
200 180 120 against itself, scores
120 140 240 against warrior2,
scores 160 160 180 against
warrior3, and so on; say warrior2
scores 120 140 240 against
warrior1, scores 180 180 140
against itself, scores 120 160 220 against
warrior3, and so on; the distance between
warrior1 and warrior2 is:
sqrt( (200 - 120)^2 + (180 - 140)^2 + (120 - 240)^2 //scores against warrior1 + (120 - 180)^2 + (140 - 180)^2 + (240 - 140)^2 //scores against warrior2 + (160 - 120)^2 + (160 - 160)^2 + (180 - 220)^2 //scores against warrior3 //and so on with the scores against the other warriors on the hill )
I dropped the ties score for the second distance because the
ties score is not independent of the wins and the losses. While
the most distant points using the first distance are
500 0 0, 0 500 0,
and 0 0 500, the most distant points using
the second distance are just 500 0 0 and
0 500 0. The "full ties score" is slightly
nearer and half way between the "full wins" and "full losses";
this gives some kind of semantics to the second distance.
One could as well drop either the wins or the losses from the first definition and get two other distances; anyway, these distances have no semantics sense in my opinion. top
Note 4 There are other couples of warriors that are similar to each other and distant from the other warriors of the hill. The other couples are:
quickd.red (qscan -> dclear) and
tinyak47.red (scan -> dclear) in both distances:
;name QuickD ;author Franz ;strategy qscan+dclear ;strategy qscan for tinyhill (no not Q^2)
;name Tiny AK-47 ;author Franz ;strategy scanner->d-clear
tinybarb.red (stone/imp) and
pergamen.red (paper/imp) in both distances:
;name Tiny Barbarian 3 ;author Franz ;strategy stone/imp (continuous launching imp with kill fuse)
;name Pergament ;author Christian Schmidt ;strategy silk/imps
ugly.red (evolved stone/imp?) with
euthin.red (qbomb -> clear) in the first distance,
and with squirm.red (qbomb -> paper) in the second
distance:
;name Ugly ;author John Regehr
;name Euthin ;author Philip Thorne ;strategy Nuthin with splits. i.e. stupid quick bomb/clear ;strategy John Metcalf 2002 Tournament Round 1, Warrior 1
;name Squirm13 ;author Philip Thorne ;strategy tworm6, different engine. ;strategy i.e. silk-worm with chaotic core-copy ;strategy John Metcalf 2002 Tournament Round 1, Warrior 2
stunner.red (bomber -> clear) with
snow.red (scanner?), in both distances:
;name Stunner ;author Sascha Zapf ;strategy Fast Incendiary Bomber, Twopass Coreclear ;strategy Two Bombing steps, Bootstrapping
;name Snow Castle ;author Compudemon
Except for quickd.red and
tinyak47.red, these seem not to be couples of
similar warriors, at first glance. Anyway, all of these couples
are for sure a base for defining different "equivalence classes"
for the warriors on the hill. This still needs more
investigations. top
Note 5 I say "randomly"
because tiny-p.red is the most "diverse" of the
warriors in the hill; one can correctly state that
tinybrut.red is the nearest warrior, but for sure it
could be any of the other warriors in the hill for a really new
strategy! See tinyspir.red and
tinyclp.red, for instance, other "diverse" warriors:
they are far distant from the warriors on the hill, and only
chance is that the nearest ones are snake.red and
tinybrut.red; this high value makes no sense for a
really diverse warrior. top
Note 6 Note that all of these considerations are independent of the chosen distance. The involved warriors may vary as the distance varies; anyway, the results and considerations still hold. top
Note 7 What would happen
if the new challenger were not tiny-p.red but a
suicide dat.red? Here are the results:
| # | Warrior | Wins | Losses | Ties | Score | Nearest warrior 1 | Distance 1 | Nearest warrior 2 | Distance 2 |
|---|---|---|---|---|---|---|---|---|---|
| 1 | quickd.red | 5646 | 3672 | 1182 | 18120 | tinyak47.red | 557.76 | tinyak47.red | 516.05 |
| 2 | tinyak47.red | 5521 | 3621 | 1358 | 17921 | quickd.red | 557.76 | quickd.red | 516.05 |
| 3 | tinydawn.red | 4160 | 1616 | 4724 | 17204 | silkligh.red | 446.68 | silkligh.red | 306.19 |
| 4 | tinybarb.red | 4120 | 1550 | 4830 | 17190 | pergamen.red | 557.72 | pergamen.red | 450.47 |
| 5 | szczur.red | 5124 | 3742 | 1634 | 17006 | euthin.red | 688.34 | euthin.red | 625.90 |
| 6 | ugly.red | 4744 | 3287 | 2469 | 16701 | euthin.red | 564.78 | squirm.red | 494.39 |
| 7 | sept.red | 5078 | 3958 | 1464 | 16698 | tinyak47.red | 749.45 | stunner.red | 673.29 |
| 8 | silkligh.red | 3634 | 1340 | 5526 | 16428 | tinydawn.red | 446.68 | tinydawn.red | 306.19 |
| 9 | squirm.red | 4382 | 3177 | 2941 | 16087 | ugly.red | 596.87 | ugly.red | 494.39 |
| 10 | pergamen.red | 3419 | 1531 | 5550 | 15807 | silkligh.red | 512.15 | silkligh.red | 428.91 |
| 11 | euthin.red | 4439 | 3701 | 2360 | 15677 | ugly.red | 564.78 | ugly.red | 509.78 |
| 12 | ricket.red | 4168 | 4370 | 1962 | 14466 | tinytom.red | 749.19 | tinytom.red | 643.19 |
| 13 | tinytom.red | 4126 | 4345 | 2029 | 14407 | tinyever.red | 468.80 | tinyever.red | 404.63 |
| 14 | snake.red | 3046 | 2319 | 5135 | 14273 | silkligh.red | 621.91 | silkligh.red | 478.21 |
| 15 | stunner.red | 3407 | 3896 | 3197 | 13418 | snow.red | 680.15 | snow.red | 519.06 |
| 16 | tinyever.red | 3666 | 4565 | 2269 | 13267 | tinytom.red | 468.80 | tinytom.red | 404.63 |
| 17 | tinyspir.red | 1880 | 2776 | 5844 | 11484 | snake.red | 816.31 | snake.red | 688.48 |
| 18 | tinybrut.red | 2681 | 4622 | 3197 | 11240 | snow.red | 665.86 | snow.red | 560.88 |
| 19 | snow.red | 2323 | 3964 | 4213 | 11182 | tinybrut.red | 665.86 | stunner.red | 519.06 |
| 20 | tinyclp.red | 3078 | 6590 | 832 | 10066 | ricket.red | 976.84 | tinybrut.red | 847.46 |
| 21 | dat.red | 250 | 10250 | 0 | 750 | tinyclp.red | 1342.69 | tinyclp.red | 1306.81 |
This is surely an impressive distance! But anyway the score is
impressively poor! We know for sure what to do, that is we would
keep tiny-p.red and instead we would discard
dat.red; this means that we are using an intuitive
threshold, but we need to numerically define this threshold, that
would depend both on the score and the distance. top
Note 8 Again, you can note that all of these considerations are independent of the chosen distance. top
Note 9 Note that this definition is independent of the scales you use to compute the score and the distance; that is, if I used the "percent" scoring method instead of the full score, then ordering the warriors by the "percent" discriminant would give the same results as ordering by the numeric discriminant I used here.
The definition is not independent of the distance, of course. It is just independent of the scale. top
Note 10 Now let's see
what happened if the new challenger were dat.red
instead of tiny-p.red:
| Warrior | Wins | Losses | Ties | Score | Nearest warrior | Distance | Discriminant /1000 |
|---|---|---|---|---|---|---|---|
| sept.red | 5078 | 3958 | 1464 | 16698 | tinyak47.red | 749.45 | 12514.3 |
| szczur.red | 5124 | 3742 | 1634 | 17006 | euthin.red | 688.34 | 11706.0 |
| ricket.red | 4168 | 4370 | 1962 | 14466 | tinytom.red | 749.19 | 10837.9 |
| quickd.red | 5646 | 3672 | 1182 | 18120 | tinyak47.red | 557.76 | 10106.6 |
| tinyak47.red | 5521 | 3621 | 1358 | 17921 | quickd.red | 557.76 | 9995.6 |
| tinyclp.red | 3078 | 6590 | 832 | 10066 | ricket.red | 976.84 | 9832.9 |
| squirm.red | 4382 | 3177 | 2941 | 16087 | ugly.red | 596.87 | 9601.9 |
| tinybarb.red | 4120 | 1550 | 4830 | 17190 | pergamen.red | 557.72 | 9587.3 |
| ugly.red | 4744 | 3287 | 2469 | 16701 | euthin.red | 564.78 | 9432.4 |
| tinyspir.red | 1880 | 2776 | 5844 | 11484 | snake.red | 816.31 | 9374.5 |
| stunner.red | 3407 | 3896 | 3197 | 13418 | snow.red | 680.15 | 9126.2 |
| snake.red | 3046 | 2319 | 5135 | 14273 | silkligh.red | 621.91 | 8876.5 |
| euthin.red | 4439 | 3701 | 2360 | 15677 | ugly.red | 564.78 | 8854.0 |
| pergamen.red | 3419 | 1531 | 5550 | 15807 | silkligh.red | 512.15 | 8095.6 |
| tinydawn.red | 4160 | 1616 | 4724 | 17204 | silkligh.red | 446.68 | 7684.8 |
| tinybrut.red | 2681 | 4622 | 3197 | 11240 | snow.red | 665.86 | 7484.3 |
| snow.red | 2323 | 3964 | 4213 | 11182 | tinybrut.red | 665.86 | 7445.7 |
| silkligh.red | 3634 | 1340 | 5526 | 16428 | tinydawn.red | 446.68 | 7338.1 |
| tinytom.red | 4126 | 4345 | 2029 | 14407 | tinyever.red | 468.80 | 6754.1 |
| tinyever.red | 3666 | 4565 | 2269 | 13267 | tinytom.red | 468.80 | 6219.6 |
| dat.red | 250 | 10250 | 0 | 750 | tinyclp.red | 1342.69 | 1007.0 |
| Warrior | Wins | Losses | Ties | Score | Nearest warrior | Distance | Discriminant /1000 |
|---|---|---|---|---|---|---|---|
| sept.red | 5078 | 3958 | 1464 | 16698 | stunner.red | 673.29 | 11242.7 |
| szczur.red | 5124 | 3742 | 1634 | 17006 | euthin.red | 625.90 | 10644.1 |
| quickd.red | 5646 | 3672 | 1182 | 18120 | tinyak47.red | 516.05 | 9350.8 |
| ricket.red | 4168 | 4370 | 1962 | 14466 | tinytom.red | 643.19 | 9304.4 |
| tinyak47.red | 5521 | 3621 | 1358 | 17921 | quickd.red | 516.05 | 9248.1 |
| tinyclp.red | 3078 | 6590 | 832 | 10066 | tinybrut.red | 847.46 | 8530.5 |
| ugly.red | 4744 | 3287 | 2469 | 16701 | squirm.red | 494.39 | 8256.9 |
| euthin.red | 4439 | 3701 | 2360 | 15677 | ugly.red | 509.78 | 7991.8 |
| squirm.red | 4382 | 3177 | 2941 | 16087 | ugly.red | 494.39 | 7953.3 |
| tinyspir.red | 1880 | 2776 | 5844 | 11484 | snake.red | 688.48 | 7906.5 |
| tinybarb.red | 4120 | 1550 | 4830 | 17190 | pergamen.red | 450.47 | 7743.5 |
| stunner.red | 3407 | 3896 | 3197 | 13418 | snow.red | 519.06 | 6964.7 |
| snake.red | 3046 | 2319 | 5135 | 14273 | silkligh.red | 478.21 | 6825.5 |
| pergamen.red | 3419 | 1531 | 5550 | 15807 | silkligh.red | 428.91 | 6779.7 |
| tinybrut.red | 2681 | 4622 | 3197 | 11240 | snow.red | 560.88 | 6304.3 |
| tinytom.red | 4126 | 4345 | 2029 | 14407 | tinyever.red | 404.63 | 5829.5 |
| snow.red | 2323 | 3964 | 4213 | 11182 | stunner.red | 519.06 | 5804.1 |
| tinyever.red | 3666 | 4565 | 2269 | 13267 | tinytom.red | 404.63 | 5368.2 |
| tinydawn.red | 4160 | 1616 | 4724 | 17204 | silkligh.red | 306.19 | 5267.7 |
| silkligh.red | 3634 | 1340 | 5526 | 16428 | tinydawn.red | 306.19 | 5030.1 |
| dat.red | 250 | 10250 | 0 | 750 | tinyclp.red | 1306.81 | 980.1 |
In either case, dat.red does not make its way to
the hill; its diversity does not balance the poor score. This is
the expected behaviour, as for the intuitive requirements of a
previous note. top
Note 11 This is due to many reasons. Say the author is cheating; or the author is a newbie and does not know the exact meaning of the words; or the warrior is buggy, and behaves differently from the author's thoughts. top
Note 12 To test my
claim, I introduced a minimum change in tinyak47.red
(I simply shifted the warrior by 7) and I entered the
resulting warrior into the hill in both cases:
| # | Warrior | Wins | Losses | Ties | Score | Nearest warrior 1 | Distance 1 |
|---|---|---|---|---|---|---|---|
| 1 | copyak47.red | 5462 | 3563 | 1475 | 17861 | tinyak47.red | 119.42 |
| 2 | tinyak47.red | 5401 | 3736 | 1363 | 17566 | copyak47.red | 119.42 |
| 3 | quickd.red | 5363 | 3755 | 1382 | 17471 | copyak47.red | 611.05 |
| 4 | tinydawn.red | 4154 | 1686 | 4660 | 17122 | tinybarb.red | 624.16 |
| 5 | tinybarb.red | 3927 | 1750 | 4823 | 16604 | pergamen.red | 553.03 |
| 6 | ugly.red | 4571 | 3215 | 2714 | 16427 | squirm.red | 662.23 |
| 7 | szczur.red | 4756 | 3778 | 1966 | 16234 | ugly.red | 783.51 |
| 8 | sept.red | 4671 | 4017 | 1812 | 15825 | stunner.red | 854.58 |
| 9 | silkligh.red | 3342 | 1417 | 5741 | 15767 | snake.red | 578.71 |
| 10 | squirm.red | 4228 | 3341 | 2931 | 15615 | ugly.red | 662.23 |
| 11 | euthin.red | 4274 | 3846 | 2380 | 15202 | ugly.red | 664.40 |
| 12 | pergamen.red | 3168 | 1819 | 5513 | 15017 | tinybarb.red | 553.03 |
| 13 | ricket.red | 4085 | 4536 | 1879 | 14134 | tinytom.red | 757.87 |
| 14 | tinytom.red | 3874 | 4557 | 2069 | 13691 | ricket.red | 757.87 |
| 15 | snake.red | 2734 | 2298 | 5468 | 13670 | silkligh.red | 578.71 |
| 16 | stunner.red | 3004 | 4093 | 3403 | 12415 | snow.red | 653.06 |
| 17 | snow.red | 2162 | 3983 | 4355 | 10841 | stunner.red | 653.06 |
| 18 | tinybrut.red | 2228 | 4994 | 3278 | 9962 | snow.red | 685.95 |
| 19 | tinyspir.red | 1404 | 3423 | 5673 | 9885 | snake.red | 1005.37 |
| 20 | tiny-p.red | 1891 | 6015 | 2594 | 8267 | tinybrut.red | 1096.09 |
| 21 | tinyclp.red | 2388 | 7265 | 847 | 8011 | tinybrut.red | 1032.17 |
| Warrior | Wins | Losses | Ties | Score | Nearest warrior | Distance | Discriminant /1000 |
|---|---|---|---|---|---|---|---|
| sept.red | 4671 | 4017 | 1812 | 15825 | stunner.red | 854.58 | 13523.7 |
| szczur.red | 4756 | 3778 | 1966 | 16234 | ugly.red | 783.51 | 12719.6 |
| ugly.red | 4571 | 3215 | 2714 | 16427 | squirm.red | 662.23 | 10878.4 |
| ricket.red | 4085 | 4536 | 1879 | 14134 | tinytom.red | 757.87 | 10711.8 |
| tinydawn.red | 4154 | 1686 | 4660 | 17122 | tinybarb.red | 624.16 | 10686.9 |
| quickd.red | 5363 | 3755 | 1382 | 17471 | copyak47.red | 611.05 | 10675.7 |
| tinytom.red | 3874 | 4557 | 2069 | 13691 | ricket.red | 757.87 | 10376.1 |
| squirm.red | 4228 | 3341 | 2931 | 15615 | ugly.red | 662.23 | 10340.7 |
| euthin.red | 4274 | 3846 | 2380 | 15202 | ugly.red | 664.40 | 10100.2 |
| tinyspir.red | 1404 | 3423 | 5673 | 9885 | snake.red | 1005.37 | 9938.1 |
| tinybarb.red | 3927 | 1750 | 4823 | 16604 | pergamen.red | 553.03 | 9182.5 |
| silkligh.red | 3342 | 1417 | 5741 | 15767 | snake.red | 578.71 | 9124.5 |
| tiny-p.red | 1891 | 6015 | 2594 | 8267 | tinybrut.red | 1096.09 | 9061.4 |
| pergamen.red | 3168 | 1819 | 5513 | 15017 | tinybarb.red | 553.03 | 8304.9 |
| tinyclp.red | 2388 | 7265 | 847 | 8011 | tinybrut.red | 1032.17 | 8268.7 |
| stunner.red | 3004 | 4093 | 3403 | 12415 | snow.red | 653.06 | 8107.8 |
| snake.red | 2734 | 2298 | 5468 | 13670 | silkligh.red | 578.71 | 7911.0 |
| snow.red | 2162 | 3983 | 4355 | 10841 | stunner.red | 653.06 | 7079.8 |
| tinybrut.red | 2228 | 4994 | 3278 | 9962 | snow.red | 685.95 | 6833.5 |
| copyak47.red | 5462 | 3563 | 1475 | 17861 | tinyak47.red | 119.42 | 2133.0 |
| tinyak47.red | 5401 | 3736 | 1363 | 17566 | copyak47.red | 119.42 | 2097.7 |
and
| # | Warrior | Wins | Losses | Ties | Score | Nearest warrior 2 | Distance 2 |
|---|---|---|---|---|---|---|---|
| 1 | copyak47.red | 5528 | 3680 | 1292 | 17876 | tinyak47.red | 107.64 |
| 2 | tinyak47.red | 5495 | 3828 | 1177 | 17662 | copyak47.red | 107.64 |
| 3 | quickd.red | 5332 | 3872 | 1296 | 17292 | copyak47.red | 539.38 |
| 4 | tinydawn.red | 4217 | 1737 | 4546 | 17197 | pergamen.red | 510.64 |
| 5 | ugly.red | 4589 | 3255 | 2656 | 16423 | squirm.red | 545.07 |
| 6 | tinybarb.red | 3869 | 1820 | 4811 | 16418 | pergamen.red | 459.34 |
| 7 | szczur.red | 4686 | 3931 | 1883 | 15941 | ugly.red | 667.24 |
| 8 | sept.red | 4703 | 4143 | 1654 | 15763 | stunner.red | 680.95 |
| 9 | silkligh.red | 3300 | 1406 | 5794 | 15694 | pergamen.red | 472.90 |
| 10 | euthin.red | 4396 | 3824 | 2280 | 15468 | ugly.red | 586.35 |
| 11 | squirm.red | 4171 | 3463 | 2866 | 15379 | ugly.red | 545.07 |
| 12 | pergamen.red | 3093 | 1807 | 5600 | 14879 | tinybarb.red | 459.34 |
| 13 | ricket.red | 4228 | 4452 | 1820 | 14504 | tinytom.red | 662.76 |
| 14 | tinytom.red | 3990 | 4549 | 1961 | 13931 | tinyever.red | 433.83 |
| 15 | snake.red | 2721 | 2499 | 5280 | 13443 | pergamen.red | 500.17 |
| 16 | stunner.red | 3011 | 4153 | 3336 | 12369 | tinybrut.red | 625.31 |
| 17 | tinyever.red | 3348 | 4893 | 2259 | 12303 | tinytom.red | 433.83 |
| 18 | tinybrut.red | 2374 | 5086 | 3040 | 10162 | stunner.red | 625.31 |
| 19 | tinyspir.red | 1322 | 3503 | 5675 | 9641 | snake.red | 862.32 |
| 20 | tinyclp.red | 2704 | 7059 | 737 | 8849 | tinybrut.red | 834.54 |
| 21 | tiny-p.red | 1879 | 5996 | 2625 | 8262 | tinybrut.red | 883.43 |
| Warrior | Wins | Losses | Ties | Score | Nearest warrior | Distance | Discriminant /1000 |
|---|---|---|---|---|---|---|---|
| sept.red | 4703 | 4143 | 1654 | 15763 | stunner.red | 680.95 | 10733.8 |
| szczur.red | 4686 | 3931 | 1883 | 15941 | ugly.red | 667.24 | 10636.5 |
| ricket.red | 4228 | 4452 | 1820 | 14504 | tinytom.red | 662.76 | 9612.7 |
| quickd.red | 5332 | 3872 | 1296 | 17292 | copyak47.red | 539.38 | 9327.0 |
| euthin.red | 4396 | 3824 | 2280 | 15468 | ugly.red | 586.35 | 9069.8 |
| ugly.red | 4589 | 3255 | 2656 | 16423 | squirm.red | 545.07 | 8951.8 |
| tinydawn.red | 4217 | 1737 | 4546 | 17197 | pergamen.red | 510.64 | 8781.6 |
| squirm.red | 4171 | 3463 | 2866 | 15379 | ugly.red | 545.07 | 8382.7 |
| tinyspir.red | 1322 | 3503 | 5675 | 9641 | snake.red | 862.32 | 8313.6 |
| stunner.red | 3011 | 4153 | 3336 | 12369 | tinybrut.red | 625.31 | 7734.5 |
| tinybarb.red | 3869 | 1820 | 4811 | 16418 | pergamen.red | 459.34 | 7541.5 |
| silkligh.red | 3300 | 1406 | 5794 | 15694 | pergamen.red | 472.90 | 7421.7 |
| tinyclp.red | 2704 | 7059 | 737 | 8849 | tinybrut.red | 834.54 | 7384.8 |
| tiny-p.red | 1879 | 5996 | 2625 | 8262 | tinybrut.red | 883.43 | 7298.9 |
| pergamen.red | 3093 | 1807 | 5600 | 14879 | tinybarb.red | 459.34 | 6834.6 |
| snake.red | 2721 | 2499 | 5280 | 13443 | pergamen.red | 500.17 | 6723.8 |
| tinybrut.red | 2374 | 5086 | 3040 | 10162 | stunner.red | 625.31 | 6354.4 |
| tinytom.red | 3990 | 4549 | 1961 | 13931 | tinyever.red | 433.83 | 6043.7 |
| tinyever.red | 3348 | 4893 | 2259 | 12303 | tinytom.red | 433.83 | 5337.4 |
| copyak47.red | 5528 | 3680 | 1292 | 17876 | tinyak47.red | 107.64 | 1924.2 |
| tinyak47.red | 5495 | 3828 | 1177 | 17662 | copyak47.red | 107.64 | 1901.1 |
Even if they are the highest scoring warriors, they are indeed too similar, and their numeric discriminant is the lowest one. Incidentally, the copy happens to be a bit better than the original, and becomes the new king of the hill. The old koth is pushed off! But this is what we expected. top