Redcoders Frenzy - The ongoing corewar tournament
The Shrinking Core Knockout Round |
---|
Organiser: Achille Astolfi
Your duel-warriors use to fight in a 8,000 core against their opponents, that
means 4,000 cells per warrior; this is why they feel uncomfortable when fighting
in a multi-warrior arena! Time has come to give your warriors the space they
need: let them fight in a core providing 4,000 cells per warrior! There is only
one drawback: your warriors will not know how many challengers there are, and so
they will not know which will be the actual core size; will they be smart enough
to survive the challenge?
Actually, this Redcoders Frenzy Round realizes the same rules of IRC#35 except in a "standard" core
specification. This means that this will not be a single challenge round as
usual; instead, each warrior will fight in a sequence of challenges, as long as
it is eligible to pass to next challenge.
Each challenge is a multi-warrior run where all the warriors compete at once;
the core size will be 4,000 times the count of warriors in the current
challenge, and the other parameters will be adjusted proportionally. Let W
be the count of warriors in the current challenge, the arena will then use
these settings:
Core size = 4,000 x W
Max cycles = 40,000 x W
Max processes = 4,000 x W
Max length = 100 (fixed)
Min distance = 100 (fixed)
P-space size = 250 x W
Number of rounds = 5 x 200 (5 fights of 200 rounds each)
Use of CORESIZE, MAXCYCLES, MAXPROCESSES, PSPACESIZE and any other mean to
statically compute the core size is forbidden; the warrior code must dynamically
adapt to the actual core size or be independent of the core size. This includes
using values greater than 4000 or less than -3999 in your code if this will do;
in few words, the compiled warrior must be the same in all the challenges,
once that values greater than CORESIZE/2 have been converted to negative
numbers. Note that this is the standard output when you run pmars.
P-space and PIN are allowed, so you can make a wise use of persistent memory
and of handshake.
Challenge scoring: A warrior gets 1 point for each round it was the
only survivor (same rule as standard multi-hill at KOTH).
Tie breaking: if two or more warriors happen to score the same, they will
be sorted according to how many times they was one survivor out of 2, and so on;
if the tie persists, the results of the previous challenge(s) will be
considered.
Passing to next challenge: The warrior that scores least in the
current challenge is knocked out, and all the other warriors will pass to next
challenge; the arena of next challenge will then be adapted to the new number of
warriors. This means that as the challenges proceed the core will shrink up to
the standard size of 8,000 cells, until the last two survivor warriors will end
up running a standard duel in a standard core.
Frenzy percent: This is the hardest thing to decide! I came up with
this solution: say p is the score of the first warrior in the current
challenge, q is the score of the knocked out warrior in the current
challenge, and S is the Frenzy percent of the knocked out warrior
computed for the previous challenge. The knocked out warrior in the current
challenge should get of course more than S Frenzy percent and less
than 100 Frenzy percent; this can be achieved by adding S
to (q / p) x (100 - S). By the way I think about
introducing some parameter f and replacing q / p
with (q + f) / (p + f) in order to not having too low
Frenzy percents for the last warriors and too close Frenzy percents for the
first warriors; this f parameter will be high in the first challenge
and will decrease down to 1 / 3 of the ties in the last
challenge.
- The IRC#35 is of course a starting
point, because it has the same rules as this RFT#24 except for the tiny core
specification; you can even see which will be the pmars commands performed on
the entries (well, just add some 0's around) so you can get a real grip on how
this Frenzy Round works.
- Remember that location #0 of P-space holds -1 in the first round; it holds 0
if the warrior died in the previous round; it holds 1 if the warrior was the
only survivor of the previous round; in the other cases, it holds the count of
the warriors that survived the previous round, which can be greater than 2. This
will affect P^x switchers.
- You can guess the actual size of the core in your first round of each fight
and use the result in subsequent rounds by storing the value in your P-space;
the handshaking friend can help computation or just use the result as far as
both warriors are not knocked out.
- You can ;assert (CORESIZE % 4000 == 0) && (CORESIZE >= 8000) if you
want, and do whatever you like with the other redcode constants; as far as the
warrior always compiles, and the compiled code always looks the same in all the
possible CORESIZE contexts, your entry will not be rejected.
The two warriors by the organizer work well together and both
succeed in reaching the final challenge. The handshaking warrior
by Zul Nadzri goes third and the only warrior by Jens Gutzeit
exploits to the fourth place: congratulations, this is a very
good way to start as a new entry!
The first challenge seems to give a hint of who will be the
winner, but sure gives a hint of what will be the winning
strategy:
---------------------------------------------------------------
# Name Author 1 2 3 4 5 6 7 8 9 10 11 L %
---------------------------------------------------------------
1 PartyFor Adamowski 10 3 2 0 0 1 3 2 48 102 84 745 100.0
2 Lucky One Astolfi 4 1 0 0 0 1 1 3 160 219 84 527 43.9
3 Lucky Two Astolfi 2 0 0 0 0 1 0 4 169 221 84 519 25.2
4 Happy Fluf Gutzeit 0 3 0 2 2 4 14 224 373 271 84 23 6.5
5 Cabomba Sp Nadzri 0 1 2 1 2 3 12 225 373 271 84 26 6.5
6 Cabomba Gi Nadzri 0 1 1 2 3 2 11 224 374 271 84 27 6.5
7 Klug Tomasev 0 1 0 1 3 4 13 223 374 271 84 26 6.5
8 PaperFan Adamowski 0 0 1 0 2 1 7 223 373 271 84 38 6.5
9 GambleGoof van Rijn 0 0 0 1 2 1 12 225 374 271 84 30 6.5
10 CutStrom van Rijn 0 0 0 1 0 2 12 224 374 271 84 32 6.5
11 VoyagerBul Tomasev 0 0 0 0 1 4 13 223 374 271 84 30 6.5
================================================================
The top warriors in the first challenge are those ones who have
a poor chance to survive; anyway they have a high chance to be
the only survivor if they survive. This is reflected in the
second challenge, too:
---------------------------------------------------------------
# Name Author 1 2 3 4 5 6 7 8 9 10 L %
---------------------------------------------------------------
1 PartyFor Adamowski 10 3 2 0 1 1 2 68 111 110 692 100.0
2 Lucky Two Astolfi 2 0 0 0 1 3 2 152 253 110 477 32.7
3 Lucky One Astolfi 2 0 0 0 1 1 1 148 248 110 489 32.7
4 Happy Fluf Gutzeit 1 4 4 7 7 11 166 362 306 110 22 24.3
5 Cabomba Gi Nadzri 0 2 2 6 6 10 166 361 306 110 31 15.9
6 CutStrom van Rijn 0 2 0 3 2 11 165 361 306 110 40 15.9
7 PaperFan Adamowski 0 1 2 2 3 6 162 361 306 110 47 15.9
8 Cabomba Sp Nadzri 0 0 6 4 6 11 166 361 306 110 30 15.9
9 GambleGoof van Rijn 0 0 3 6 5 9 166 362 306 110 33 15.9
10 Klug Tomasev 0 0 2 4 8 9 166 360 306 110 35 15.9
================================================================
Happy Fluffiness is the first "strong" warrior to score a point.
By the way, it's still PartyFor to score much higher than the
other warriors in the next challenge:
---------------------------------------------------------------
# Name Author 1 2 3 4 5 6 7 8 9 L %
---------------------------------------------------------------
1 PartyFor Adamowski 8 3 1 1 3 6 56 122 116 684 100.0
2 Lucky Two Astolfi 3 0 0 1 0 3 143 269 116 465 55.5
3 Lucky One Astolfi 2 0 1 3 0 4 143 253 116 478 46.6
4 Cabomba Giant Nadzri 1 3 5 4 17 160 340 322 116 32 37.7
5 GambleGoof van Rijn 1 3 3 5 15 160 340 322 116 35 37.7
6 Happy Fluffine Gutzeit 0 5 9 5 18 159 339 322 116 27 28.8
7 Cabomba Sp Nadzri 0 3 7 4 15 160 340 322 116 33 28.8
8 CutStrom van Rijn 0 2 4 6 12 157 340 322 116 41 28.8
9 PaperFan Adamowski 0 1 3 3 10 151 339 322 116 55 28.8
================================================================
Here Cabomba Giant and CutStrom score their first point; again
it is Happy Fluffiness to be the first of the scoreless warriors.
Next challenge is still a victory for PartyFor; the two Lucky
warriors still score but other warriors at last start to score:
---------------------------------------------------------------
# Name Author 1 2 3 4 5 6 7 8 L %
---------------------------------------------------------------
1 PartyFor Adamowski 9 5 4 2 2 47 126 131 674 100.0
2 Cabomba Giant Nadzri 2 5 12 15 152 309 341 131 33 55.0
3 Cabomba Sp Nadzri 1 3 14 14 155 309 341 131 32 48.6
4 Lucky Two Astolfi 1 2 1 0 4 130 279 131 452 48.6
5 GambleGoof van Rijn 1 1 7 13 154 309 341 131 43 48.6
6 Lucky One Astolfi 1 1 1 1 3 132 278 131 452 48.6
7 Happy Fluffines Gutzeit 0 7 14 15 154 309 341 131 29 42.2
8 CutStrom van Rijn 0 0 7 8 151 309 340 131 54 42.2
================================================================
Next challenge is the first surprise; maybe CutStrom was the
natural partner of PartyFor? The fact is that the score of
PartyFor drops suddenly:
---------------------------------------------------------------
# Name Author 1 2 3 4 5 6 7 L %
---------------------------------------------------------------
1 Lucky One Astolfi 6 1 0 1 136 222 126 508 100.0
2 Lucky Two Astolfi 6 0 1 4 150 234 126 479 100.0
3 Happy Fluffiness Gutzeit 2 10 26 163 348 297 126 28 73.2
4 Cabomba Giant Nadzri 1 11 27 160 348 297 126 30 66.5
5 PartyFor Adamowski 1 1 0 4 62 138 126 668 66.5
6 Cabomba Sp Nadzri 0 7 25 162 348 297 126 35 59.8
7 GambleGoof van Rijn 0 6 17 158 348 297 126 48 59.8
================================================================
At the same time the two Lucky warriors exploit. The same
happens in next challenge:
---------------------------------------------------------------
# Name Author 1 2 3 4 5 6 L %
---------------------------------------------------------------
1 Lucky Two Astolfi 12 3 2 151 245 152 435 100.0
2 Lucky One Astolfi 10 6 2 132 253 152 445 95.1
3 PartyFor Adamowski 5 2 3 52 144 152 642 82.8
4 Happy Fluffiness Gutzeit 3 17 140 329 321 152 38 77.8
5 Cabomba Giant Nadzri 1 11 137 332 321 152 46 72.9
6 Cabomba Sp Nadzri 0 9 136 332 321 152 50 70.5
================================================================
Here the Cabomba pair loses the sparring partner. Next challenge
is the second surprise:
---------------------------------------------------------------
# Name Author 1 2 3 4 5 L %
---------------------------------------------------------------
1 Happy Fluffiness Jens Gutzeit 20 151 340 304 144 41 100.0
2 Lucky One Achille Astolfi 13 4 148 230 144 461 92.0
3 Lucky Two Achille Astolfi 11 7 141 232 144 465 89.8
4 Cabomba Giant Zul Nadzri 4 148 340 304 144 60 81.8
5 PartyFor Lukasz Adamowski 4 10 51 146 144 645 81.8
================================================================
Happy Fluffiness suddenly exploits and PartyFor drops definitely
to the fifth place. But on next challenge the exploit disappears
just as suddenly:
---------------------------------------------------------------
# Name Author 1 2 3 4 L %
---------------------------------------------------------------
1 Lucky One Achille Astolfi 25 4 311 256 404 100.0
2 Lucky Two Achille Astolfi 15 3 314 256 412 95.7
3 Cabomba Giant Zul Nadzri 2 73 625 256 44 90.1
4 Happy Fluffiness Jens Gutzeit 1 72 625 256 46 89.6
================================================================
Maybe PartyFor was the partner of Happy Fluffiness? And here is
my personal surprise, the next to last challenge:
---------------------------------------------------------------
# Name Author 1 2 3 L %
---------------------------------------------------------------
1 Lucky One Achille Astolfi 59 278 195 468 100.0
2 Lucky Two Achille Astolfi 46 382 195 377 98.4
3 Cabomba Giant Zul Nadzri 43 654 195 108 98.0
================================================================
Cabomba Giant has at last its exploit after having always
scored low in the previous challenges, but they are the Lucky
warriors that fight in the last challenge!
---------------------------------------------------------------
# Name Author 1 2 L %
---------------------------------------------------------------
1 Lucky One Achille Astolfi 504 0 496 100.0 (100.00)
2 Lucky Two Achille Astolfi 496 0 504 100.0 ( 99.97)
================================================================
Here are the final results of the Core Shrinking Knockout Round:
---------------------------------------------------------------
# Name Author %
---------------------------------------------------------------
1 Lucky One Achille Astolfi 100.0
2 Lucky Two Achille Astolfi 100.0
3 Cabomba Giant Zul Nadzri 98.0
4 Happy Fluffiness Jens Gutzeit 89.6
5 PartyFor Lukasz Adamowski 81.8
6 Cabomba Sp Zul Nadzri 70.5
7 GambleGoof Roy van Rijn 59.8
8 CutStrom Roy van Rijn 42.2
9 PaperFan Lukasz Adamowski 28.8
10 Klug Nenad Tomasev 15.9
11 VoyagerBullet Nenad Tomasev 6.5
================================================================
And here are the new rankings:
---------------------------------------------------------------
# Author Score R24 R23 R22 R21 R20 R19
---------------------------------------------------------------
1(2) German Labarga 365.6 97.4 78.7 100.0 89.5 22.2
2(1) Chip Wendell 344.6 86.0 58.6 100.0 100.0
3(3) Roy van Rijn 340.8 59.8 100.0 97.8 83.2 22.9
4(5) Zul Nadzri 315.2 98.0 62.8 83.2 71.2 40.1
5(4) Lukasz Adamowski 260.3 81.8 34.1 69.5 25.8 74.9 23.8
6(6) Christian Schmidt 254.4 99.2 95.1 60.1
7(7) John Metcalf 195.2 69.2 86.1 25.9 14.0
8(8) Nenad Tomasev 178.9 15.9 93.3 69.7
9(10) John K. Lewis 119.6 58.3 61.3
10(11) Achille Astolfi 113.3 100.0 13.3
11(12) Michal Janeczek 100.0 100.0
12(13) Sascha Zapf 98.4 60.7 37.7
13(14) el kauka 90.5 35.7 42.4 12.4
14(new) Jens Gutzeit 89.6 89.6
15(15) bvowk 74.8 74.8
16(9) Joshua Hudson 70.2 70.2
17(16) Christopher Hubert 0.02 0.02
================================================================
German Labarga is the new #1. Jens Gutzeit is the new entry at
#14. No outs, at least for 2 other rounds.
The relative positions of the participants in this round did not
change, except Zul Nadzri and Lukasz Adamowski excanged their
position at #4 and #5.
|