A midweek review of Corewar
May 19, 1993
-------------------------------------------------------------------------------
I. The Standings:
# %W/ %L/ %T Name Author Score Age
1 46/ 42/ 13 Dragon Spear c w blue 149 530
2 42/ 39/ 19 Distance v6.2 Brant D. Thomsen 145 76
3 33/ 22/ 45 Night Crawler Wayne Sheppard 145 428
4 32/ 20/ 48 Snake Wayne Sheppard 144 188
5 45/ 45/ 10 Agony 5.2 Stefan Strack 144 55
6 33/ 22/ 45 Imprimis 6 P.Kline 143 828
7 33/ 24/ 43 Oak Stake c w blue 142 2
8 32/ 25/ 43 Sphinx v2.8 W. Mintardjo 139 1426
9 33/ 28/ 39 FlyPaper 2.0 J.Layland 139 133
10 41/ 45/ 14 Iron Gate 1.01 Wayne Sheppard 138 256
11 32/ 26/ 42 ImpsAreMyFriend J.Layland 138 102
12 42/ 46/ 13 Fire Storm v1.1 W. Mintardjo 137 67
13 28/ 22/ 51 ttest nandor sieben 134 304
14 37/ 46/ 16 Sucker 6 Stefan Strack 129 450
15 35/ 42/ 23 Leprechaun 1b Anders Ivner 128 1340
16 26/ 24/ 49 Kiwi 1.1 Joshua Houk 128 12
17 38/ 50/ 12 Enigma Wayne 126 7
18 37/ 50/ 13 Eclipse II P.Kline 124 1
19 23/ 22/ 55 Simplicity v1.5 Brant D. Thomsen 124 21
20 33/ 47/ 20 Herem II Anders Ivner 120 92
21 2/ 2/ 0 Eclipse II P.Kline 7 4
-------------------------------------------------------------------------------
II. The Basics:
-Core War Archives are available via anonymous FTP at
soda.berkeley.edu in pub/corewar...
-FAQ for this newsgroup is available via anonymous FTP at
rtfm.mit.edu as pub/usenet/news.answers/games/corewar-faq.z
-------------------------------------------------------------------------------
III. The Scoop:
1778 - 1778 - 1778 - 1778 - 1778 - 1778 - 1778 - 1778 - 1778 - 1778
That's the magic number! +0 Stormbringer's stand as longest-running
warrior is finally over. Dan Nabutovsky's record-setting program withstood
1778 changes in the Hill, not to mention two or three thousand unsuccessful
attempts. And given the recent showing of new top-ten's, it's an open
question as to whether anyone will approach 1778 in the near future.
+0 Stormbringer has been all over the Hill in the last month, but his
demise began late last week when W. Sheppard posted a new version
of Cleaver - always tough on imps - which dropped all the older imps
in the ratings. Then W. Mintardjo sent up a new version of Paratroops
and +0 Stormbringer was firmly in last place, needing only some strong
competitor to come along and finish him off. Last place was not unfamiliar
to +0 Stormbringer, he's been there before, but was always able to tough
out the challenges. Not this time.
So, kudos to Dan and thanks for publishing +0 Stormbringer's source.
Haven't heard whether he will be connected this summer, but expect
he'll smoke a pipe somewhere and dream up a new warrior as tough
as this one.
Another long-running warrior was pushed off this week - Medusa's v7 -
age 645. Mintardjo's Agony-based cmp-scanner (with gate) saw its share
of top-10 rankings, but finally gave way to the latest wave of competition.
And S. Strack pushed off his own warrior - Agony 5.1 (age 526) has
been replaced by Agony 5.2. Guess it feels better to knock them
off yourself, rather than wait for someone else to do it :-)
A Big Thanks to Strack and Mintardjo for publishing their source (sans
constants of course :-). Gee, Agony has a hole in it. Now there's
an interesting idea - let's see, if I put a hole in paper, make it
big enough that scanners can't see the actual code, wow! :-)
Stefan's tournament rolls on, minus the first human casualty - Scott Adkins,
beat out by one of Strack's robot players. Sorry Scott, can't imagine
how embarrassing that must feel :-)
Apologies to whom it may concern, our mail-server has been up and
down this week due to a change-over in computers and I seem to have
missed some results. (When did Oak Stake appear? And what happened
to Paratroops?)
-------------------------------------------------------------------------------
IV. The Outlook:
3 47/ 44/ 9 A3 Stefan Strack 150 1
4 45/ 45/ 10 TFs10 W. Mintardjo 145 1
1 51/ 41/ 8 Cleaver Wayne Sheppard 162 1
4 47/ 45/ 8 Agony 5.2 Stefan Strack 150 1
2 44/ 43/ 12 Eclipse II P.Kline 146 1
3 47/ 46/ 7 Cleaver 2.0 Wayne Sheppard 148 1
7 32/ 25/ 43 Sphinx v4.5 W. Mintardjo 140 1
3 43/ 39/ 18 Distance v6.2 Brant D. Thomsen 147 1
9 32/ 29/ 39 Night Smaller Wayne Sheppard 135 1
1 51/ 40/ 9 Fire Storm v1.1 W. Mintardjo 162 1
2 45/ 43/ 12 Fire Storm v2.0 W. Mintardjo 147 1
6 45/ 46/ 9 Paratroops v3.0 W. Mintardjo 144 1
9 29/ 22/ 48 Crawler Anti-Imp Wayne Sheppard 137 1
-------------------------------------------------------------------------------
V. The Quick Look:
21 25/ 24/ 51 TC W. Mintardjo 125 0
21 9/ 47/ 43 Grue c w blue 71 0
20 2/ 54/ 44 Joke Craig Ferguson 50 1
21 22/ 77/ 1 cma3 cma 68 0
19 15/ 30/ 55 test P.Kline 99 1
20 22/ 23/ 56 test Joshua Houk 121 1
21 2/ 63/ 35 Grimp Craig Ferguson 41 0
21 4/ 63/ 34 Joke2 Craig Ferguson 45 0
21 23/ 69/ 8 Kinch Kevin 77 0
20 20/ 28/ 52 Paper W. Mintardjo 113 1
16 42/ 50/ 8 TMs82 W. Mintardjo 134 1
19 40/ 51/ 9 TMsv8 W. Mintardjo 128 1
14 42/ 49/ 9 XBS 2 Fredrik Ohrstrom 135 1
20 22/ 69/ 9 Finder Andre van Dalen 74 1
21 14/ 78/ 8 Fleas2 Kevin 51 0
21 23/ 73/ 3 Icebox Fredrik Ohrstrom 73 0
21 27/ 64/ 9 Invest Andre van Dalen 91 0
20 7/ 53/ 39 Tinies Andre van Dalen 61 1
21 11/ 79/ 11 Weeble Craig Ferguson 42 0
19 19/ 24/ 57 test 2 P.Kline 114 1
21 22/ 59/ 19 CraMPon c w blue 85 0
21 8/ 82/ 10 Onc.red Craig Ferguson 35 0
21 16/ 75/ 8 Sargent Kevin 57 0
21 3/ 45/ 52 Tie-1.0 Jonathan Roy 62 0
21 17/ 79/ 4 myte1.1 Kevin 54 0
20 8/ 46/ 46 Comets 2 Joshua Houk 70 1
21 0/ 88/ 12 Improved Craig Ferguson 12 0
17 26/ 22/ 52 Kiwi 1.1 Joshua Houk 129 1
21 14/ 74/ 13 Mad Monk Bryan Mawhinney 54 0
21 23/ 34/ 42 Passport P.Kline 112 0
19 38/ 48/ 14 ScanTest J.Layland 127 1
21 38/ 47/ 15 Emerald 4 P.Kline 128 0
19 22/ 39/ 38 Impulsive Craig Ferguson 105 1
17 19/ 21/ 60 Kiwi v1.0 Joshua Houk 118 1
21 16/ 68/ 17 CombiVan A Arne H. Juul & Stig 63 0
21 21/ 62/ 17 Early Bird c w blue 80 0
16 40/ 42/ 18 Tomb Stone c w blue 137 1
19 30/ 55/ 15 sub-type-c c w blue 106 1
21 39/ 53/ 9 Medusa's v7 Mintardjo & Strack 125 645
16 39/ 42/ 19 Night Shade Wayne Sheppard 135 1
21 34/ 50/ 16 Sunburst 32 Jay Han 119 0
13 31/ 24/ 44 Chimera v3.6 W. Mintardjo 138 1
19 25/ 55/ 20 EarSplitting P.Kline 94 1
10 35/ 25/ 40 Stoned Again c w blue 145 1
21 34/ 50/ 16 Sunburst 31b Jay Han 118 0
20 24/ 59/ 18 sub-type-b+r c w blue 89 1
11 41/ 49/ 10 sub-type-cmp c w blue 134 1
20 31/ 60/ 9 sub-type-xtc c w blue 103 1
15 44/ 48/ 8 Medusa's v7.2 W. Mintardjo 139 1
20 26/ 38/ 37 Anti-Imp Paper c w blue 113 1
19 40/ 49/ 11 Paratroops v3.2 W. Mintardjo 131 1
18 20/ 19/ 61 Simplicity v1.2 Brant D. Thomsen 122 1
20 27/ 31/ 42 Scars 4 Eyes v3.1 Joshua Houk 123 1
21 4/ 46/ 50 Bubble-scrape v3.0 Joshua Houk 61 0
20 26/ 38/ 35 Construction Paper c w blue 114 1
20 0/ 61/ 39 Self splitting imp Unknown 40 1
20 11/ 48/ 41 Trident [Version 2] W. Mintardjo 75 1
20 12/ 43/ 45 Trident [Version 2] W. Mintardjo 81 1
21 9/ 49/ 42 Splitting Nightmare F Stig Hemmer 69 0
-------------------------------------------------------------------------------
VI. The Hint:
Here are some tips from Cancer by Thomas Gettys, written in 1987.
Cancer is a very simple concept: clear the core with spl-zero, then
with dat's. Bombing constant is -1 in both phases.
Running Cancer against Imprimis, Sphinx, and Night Crawler gives some
interesting observations. First, it is surprising how often Cancer
snockers the stone in Imprimis and Sphinx with spl-zeros. The very
fast spl-zero copy routine frequently catches the stone before it
has killed Cancer, even though Imprimis and Sphinx are using 'optimal'
pattern numbers. The reason is that Gettys starts two processes
running at the same time, both using the same copy-to pointer. Thus,
if one is killed - the other keeps running. Since they are close to
one another, any optimal-pattern number that kills one early will
kill the other one late.
Night Crawler on the other hand never gets snockered, because it
decrements every other downstream location and overruns
both of Cancer's processes before it itself is hit. NC wipes any
small bombers/core-clears who are using the standard mov/jmp copy/clear
routine which are downstream of itself, because even though mov/jmp
using pre-decrement is very fast, it is not as fast as NC's forward
decrementing. (Of course everyone uses pre-decrement reverse-core
clear because there is no pre-increment mode :-)
So here are three tips:
1. it takes more than one hit to kill program running in two/more locations
2. Night Crawler can't be killed by a simple core-clear program
3. old programs are a gold mine for useful insights, a little digging
is required, however
And here is Cancer, complete with extensive explanation :-)
; program CANCER
; author Thomas Gettys
; copyright (C) 1987
;
; The concept of this program is quite simple; force uncontrolled
; growth in the opponent (hence the name) to cause at least partial
; impotence, and then go back and kill the malignancy.
;
; The uncontrolled growth is caused by putting an SPL 0 instruction
; into every core word unoccupied by CANCER. As a side-effect most
; of core will be "sterilized"; to what extent is determined by the
; "resilience" of the opponent.
;
; After core has been infected with the SPL 0 germ a second pass is
; made, this time dropping a DAT 1 instruction into every core word
; unoccupied by CANCER in order to kill off the enemy processes (a
; DAT 1 instruction is used instead of a DAT 0 so as to confuse an
; enemy program that is looking for occupied core).
;
; If CANCER has not won at this point (i.e. it is still running) it
; starts all over again.
;
; -=(*)=-
;
; The philosphy of the author with respect to COREWARS is reflected
; in CANCER - a strong offense is the best defense. CANCER is fast
; and presents a small target.
;
; The only explicit defensive aspect of CANCER also happens to one
; of its most interesting features. CANCER immediately splits into
; two processes which are identical and work in tandem to perform a
; single task. Since they share and update a single variable (the
; pointer to the next core word to bomb), one task has jurisdiction
; over the odd words and the other task has responsibility for the
; even words. The interesting point to note here is that if either
; process is killed the other will immediately assume its brother's
; task! This redundancy provides some protection against DAT bombs
; that are spaced eight or more words apart.
;
; -=(*)=-
;
JMP -1 0 ;"wall" to stop marching SPL 0
START SPL COPY2 0 ;kick off second copy of self
;
;
COPY1 MOV CNTR PTR ;initialize bomb destination pointer
INFECT1 MOV GERM <PTR ;drop another SPL 0 bomb and update ptr
JMN INFECT1 PTR ;continue until all memory has been hit
;
MOV CNTR PTR ;reset bomb destination pointer
KILL1 MOV POISON <PTR ;drop another DAT bomb and update ptr
JMN KILL1 PTR ;continue until all memory has been hit
JMP COPY1 0 ;do it again if we haven't won yet
;
;
COPY2 MOV CNTR PTR ;initialize bomb destination pointer
INFECT2 MOV GERM <PTR ;drop another SPL 0 bomb and update ptr
JMN INFECT2 PTR ;continue until all memory has been hit
;
MOV CNTR PTR ;reset bomb destination pointer
KILL2 MOV POISON <PTR ;drop another DAT bomb and update ptr
JMN KILL2 PTR ;continue until all memory has been hit
JMP COPY2 0 ;do it again if we haven't won yet
;
GERM SPL 0 0 ;bomb to stimulate uncontrolled growth
POISON DAT 0 1 ;bomb to kill off enemy (and muddy core)
CNTR DAT 0 -20 ;# of core words "out there" (coresize-mysize)
PTR DAT 0 0 ;variable used to point to bomb targets
;
END START
-------------------------------------------------------------------------------
VII. The End:
Paul Kline
pk6811s@acad.drake.edu