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