Redcoders Frenzy - The ongoing corewar tournament
Organiser: Nenad Tomasev
Some would say that corewar battle is about winning. Some would
say that winning doesn't matter, that it's all about having as
much fun as you can. Well, the fun is there, alright :). However,
you'll need to do much more if you want to win this round of
Redcoders Frenzy Tournament! You'll have to WIN, you'll have to
LOSE and you'll HAVE to TIE... in a way, at least... The key to
this round lies in finding the balance between the strong and the
weak, choosing weak in a unique way, if possible, planning,
considering many available options. Slightly unusual battle
parameters make it no easier to win. Will you take the challenge?
combat properties:
------------------
CORESIZE: 8192
MAXPROC: 267
MAXCYCLES: 100000
MAXLENGTH: 267
MINDIST: 267
NUM. ROUNDS: 600
Pspace is not allowed!
Two warriors per author are NECESSARY!!!! (you can't submit only
one warrior - read further for explanation)
So, it is a tourney hill size, and the number of cycles, in a
medium-process enviroment.
But there is more...
Here is how the battles will be run, and the score calculated:
Players will all submit two warriors, but the score of
player won't be calculated as the score of the best scoring
warrior by that player, but in a different way. Let's say that
player X is fighting player Y. Let x1, x2, y1, y2 denote,
respectively, the warriors submitted by the first and second
player. Let sc_xi_yj denote the number of points, calculated
using standard score formula, that warrior xi got when fighting
warrior yj. Then this is the score formula used in this round
of Redcoder's Frenzy tournament:
k1 equ 1
k2 equ 1.1
k3 equ 1.2
pointsX := k1*bestX - k2*worstX - k3*not_similarX
bestX := max{0.5*((sc_x1_y1 - sc_y1_x1) + (sc_x1_y2 - sc_y2_x1)), 0.5*((sc_x2_y1 - sc_y1_x2) + (sc_x2_y2 - sc_y2_x2))}
explanation: bestX is the better of the two averaged differences
of scores of your warriors against the opponents warriors
worstX := min{0.5*((sc_x1_y1 - sc_y1_x1) + (sc_x1_y2 - sc_y2_x1)), 0.5*((sc_x2_y1 - sc_y1_x2) + (sc_x2_y2 - sc_y2_x2))}
explanation: worstX is the worse of the two averaged differences
of scores of your warriors against the opponents warriors. Notice
that if worstX < 0, you gain points!!!! In other words, it is
good to have one good warrior that beats the opponent - will
contribute to bestX, and one that loses much to your opponent
as well!!!!
not_similarX := abs(sc_x1_x2 - sc_x2_x1)
explanation: to prevent people from submiting a good warrior and
something like dat 0, 0 that'll lose horribly to the opponent,
this final part of the score is introduced. If one of your
warriors defeats the other heavily, it will have a negative
impact on the score. Also notice that k3 > k2 > k1, so it is,
in a way, more important to have warriors that have mutual
W% - L% -> 0, than the warrior that loses a lot to the opponent.
But, the best combination of these is what will make the winner
of this round! Since handshaking in a usual way is impossible
due to absence of pspace, it will be up to your skill to come
up with a way to achieve this. Also, don't forget that you also
need to make a good warrior, to increase your bestX score.
There were 8
participants this time, and it
was a close fight for the first
place. There were also a few
who obviously misunderstood
the rules, thus ending up with
a negative score. I added up
the minimal number of scored
points to all the scores later
on, so that I could end up with
% scores as usual. Without further
delay, here are the final rankings:
author score(average) sc%
1. Chip Wendell 338 100
2. Robert Macrae 326 97.7
3. inversed 246 82.8
4. Nenad Tomasev 237 81.1
5. Lukasz Adamovski 115 58.2
6. Zul Nadzri 26 41.5
7. Christian Schmidt -149 8.6
8. Roy van Rijn -195 0
The full overview of the used
strategies, as well as the warrior code,
will appear soon (I hope) on
www.corewar.info
The combo that Chip Wendell
used was stone/imp + smart loser.
The loser was able to recognize
the s/i and join it, and suicided
otherwise. My idea was to use
.f HSAish scanner, and a warrior
which had two parts - a counting
loop and a jmp 0, 0. When it
counted down to 0, it would kill
the jmp, and then kill itself.
Of course, the idea was that
scanner will find and kill the loop
before it killed the jmp 0, 0, which
was invisible for the scanner. It
didn't score as well as I expected,
since there were many stones
submitted, which had hurt my
scanner too much. Zul Nadzri
had gone for a simple approach
He submitted a pair of dats. :)
That yielded a win against every
other player, but it didn't provide
him with high enough score for a
good place in the end. However,
it prooves that it was possible
to achieve a decent score in a
very simple way. :)
Here is the full round-robin table:
Warrior Index 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Average
------- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -------
Warf for Dwin 1 ... 207.7 115.5 124.8 175.3 157.5 241.7 208.0 257.0 298.0 299.0 299.7 300.0 300.0 300.0 300.0 238.9
Hupapa 2 58.2 ... 118.2 105.5 59.3 201.8 286.3 226.8 290.3 300.0 300.0 298.7 300.0 300.0 300.0 300.0 229.7
Finders Keepers 3 105.0 101.2 ... 86.8 200.5 176.3 246.2 285.7 256.0 298.3 300.0 300.0 101.7 299.3 300.0 300.0 223.8
Wash'n'Go [rf25] 4 106.3 109.5 129.8 ... 141.8 104.5 249.3 186.3 257.5 284.2 138.3 299.7 299.7 298.3 300.0 300.0 213.7
DivineRFStrike 5 114.8 238.8 91.5 156.3 ... 123.7 104.8 250.7 78.5 300.0 299.2 105.5 299.3 298.8 300.0 300.0 204.1
Desperate Dan 6 130.0 89.3 111.3 188.5 169.7 ... 69.0 271.2 95.2 291.0 286.3 291.3 300.0 99.8 300.0 300.0 199.5
Dwarf for Win 7 39.2 9.8 36.2 28.3 190.3 225.0 ... 39.0 212.8 300.0 300.0 300.0 300.0 300.0 300.0 300.0 192.0
Zero Velocity 8 50.5 37.3 8.2 58.3 48.7 21.2 252.0 ... 271.8 100.0 299.7 299.3 300.0 300.0 300.0 300.0 176.5
MessTone 9 23.5 5.3 23.0 21.5 215.0 188.2 67.3 17.8 ... 296.3 296.3 245.0 300.0 299.7 300.0 300.0 173.3
Zero Trap 10 1.0 0.0 0.8 8.2 0.0 6.0 0.0 100.0 1.8 ... 300.0 300.0 300.0 300.0 300.0 300.0 127.9
Anthropomorphic 11 0.5 0.0 0.0 151.3 0.7 10.3 0.0 0.2 1.8 0.0 ... 300.0 300.0 300.0 300.0 300.0 111.0
DivineRFLoser 12 0.2 0.7 0.0 0.2 97.5 4.3 0.0 0.3 27.5 0.0 0.0 ... 300.0 300.0 300.0 300.0 88.7
Losers Weepers 13 0.0 0.0 99.2 0.2 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 275.5 300.0 300.0 65.0
Suicidal Sid 14 0.0 0.0 0.3 0.8 0.8 101.3 0.0 0.0 0.2 0.0 0.0 0.0 24.5 ... 300.0 300.0 48.5
DAT 0 0 15 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 150.0 10.0
DAT 0 1 16 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 150.0 ... 10.0
|