Sections
Home
Hills
Infinite Hills
Tournaments
Software
Evolving
Optimizer
Community
Newsletter
Discussion
History
Sections
 
For Beginners
First Steps
FAQ
Guides
Lexicon
Benchmarks
For Beginners
> Home > The Corewar Newsletters > Core Warrior > Issue #1

Issue 8                                                      December 4, 1995
______________________________________________________________________________
Core_Warrior_ is a weekly newsletter promoting the game of corewar.  Emphasis
is placed on the most active hills--currently the '94 draft hill and the 
beginner hill.  Coverage will follow where ever the action is.  If you have 
no clue what I'm talking about then check out these five-star internet locals
for more information:

FAQs are available by anonymous FTP from rtfm.mit.edu as
pub/usenet/news.answers/games/corewar-faq.Z
FTP site is: ftp.csua.berkeley.edu /pub/corewar
Web pages are at:
http://www.stormking.com/~koth                  ;Stormking
http://www.ecst.csuchico.edu/~pizza/koth        ;Pizza
http://pauillac.inria.fr/~doligez/corewar/      ;Planar
______________________________________________________________________________
Greetings.

BIG changes this week.  The Pizza server has some new additions.  The
'Holding Pen' lists the queue of warriors awaiting battle much like the 
StormKing page.  Beppe grilled Thos on the meanings of the numbers at the
bottom labeled load average and he had this to say:

3:39pm   load average: 3.49, 2.75, 2.68

The numbers are the load average for the last 1, 5, and 15 minutes.
1 / (load average) = % CPU pmars is getting.  During the day here load is 
about 2.5, at night it drops to 1.8 or less.  When the pen finally empties, 
the load average should go to less than 1.0.

Going by the "last challenge" times of the hill, it looks like it takes about
35 minutes to run the 94 hill with a load of around 2.5.  It looks like it 
takes about 45 minutes to run the 94x hill, but that may just be standard 
deviation.  Looks like a 94 + 94x challenge will take around 1:15 or so 
during the day here, and a little under an hour at night.

Those are about as accurate as I can give you.

-Thos
____
Pizza has also opened a new hill, the 5*40.  Also notice that five new slots
have opened up on the pizza hills and the number of battles was reduced to
200.  Makes the division easier for slow people like me.

We've said it once, and we'll say it again--the big (CORESIZE 55440) hill has 
been reopened at the Stormking server, address: <koth@stormking.com>. 
Access the hill with ;redcode-94x 

In addition to Planar's Corner, we have the staffs'--M R Bremer's and Beppe
Bezzi's--tournament entires for you to enjoy along with comments by the 
authors.  Check out Extra, Extra for all the goods.

The hints section is the last in the line in presenting basic warrior 
strategies.  Maybe one more.  The question is:  where do we go from here?
Your input is always appreciated.  Also included in the hint:  a version of
myVamp by Magnus Paulsson.
______________________________________________________________________________
Tournament Time:

The results of round 7 are in. To recap, the challenge was to beat your up to 
500 line long opponent loaded at a fixed position halfway through core.  This 
was an exciting round with huge score ranges.  Robert Macrae's Last Laugh won 
by a land slide, with 90% wins. We saw some intriguingly new P-space 
strategies, and we'd like to ask the top 3 contenders, Robert Macrae, 
Myer Bremer and Beppe Bezzi to post their warriors with discussion of their 
strategy.  (Editior's Note:  Macrae has already posted his warrior to the
newsgroup.  Bremer's and Bezzi's warrior are in Extra Extra.)

The results in detail:

Battle 1 of 66 (2%) is finished:
Back Propagation by M R Bremer scores 471 (93 1 6)
BlackMoor by P.Kline scores 11 (1 93 6)

Battle 2 of 66 (3%) is finished:
Back Propagation by M R Bremer scores 484 (96 0 4)
Burger Chef & Jeff by Karl Lewin scores 4 (0 96 4)

Battle 3 of 66 (5%) is finished:
Back Propagation by M R Bremer scores 500 (100 0 0)
Frontwards by Steven Morrell scores 0 (0 100 0)

Battle 4 of 66 (6%) is finished:
Back Propagation by M R Bremer scores 15 (3 97 0)
Last Laugh by Robert Macrae scores 485 (97 3 0)

Battle 5 of 66 (8%) is finished:
Back Propagation by M R Bremer scores 176 (19 0 81)
Mister Bond by Derek Ross scores 81 (0 19 81)

Battle 6 of 66 (9%) is finished:
Back Propagation by M R Bremer scores 0 (0 100 0)
myVamp v3.7 by Paulsson scores 500 (100 0 0)

Battle 7 of 66 (11%) is finished:
Back Propagation by M R Bremer scores 50 (8 82 10)
run and hit by Beppe Bezzi scores 420 (82 8 10)

Battle 8 of 66 (12%) is finished:
Back Propagation by M R Bremer scores 240 (38 12 50)
Settete by Maurizio Vittuari scores 110 (12 38 50)

Battle 9 of 66 (14%) is finished:
Back Propagation by M R Bremer scores 483 (96 1 3)
Slayer by Randy Graham scores 8 (1 96 3)

Battle 10 of 66 (15%) is finished:
Back Propagation by M R Bremer scores 444 (86 0 14)
Tim by G. Eadon scores 14 (0 86 14)

Battle 11 of 66 (17%) is finished:
Back Propagation by M R Bremer scores 443 (88 9 3)
Victory or death by Anders Ivner scores 48 (9 88 3)

Battle 12 of 66 (18%) is finished:
BlackMoor by P.Kline scores 0 (0 100 0)
Burger Chef & Jeff by Karl Lewin scores 500 (100 0 0)

Battle 13 of 66 (20%) is finished:
BlackMoor by P.Kline scores 485 (97 3 0)
Frontwards by Steven Morrell scores 15 (3 97 0)

Battle 14 of 66 (21%) is finished:
BlackMoor by P.Kline scores 5 (1 99 0)
Last Laugh by Robert Macrae scores 495 (99 1 0)

Battle 15 of 66 (23%) is finished:
BlackMoor by P.Kline scores 425 (84 11 5)
Mister Bond by Derek Ross scores 60 (11 84 5)

Battle 16 of 66 (24%) is finished:
BlackMoor by P.Kline scores 500 (100 0 0)
myVamp v3.7 by Paulsson scores 0 (0 100 0)

Battle 17 of 66 (26%) is finished:
BlackMoor by P.Kline scores 93 (15 67 18)
run and hit by Beppe Bezzi scores 353 (67 15 18)

Battle 18 of 66 (27%) is finished:
BlackMoor by P.Kline scores 113 (22 75 3)
Settete by Maurizio Vittuari scores 378 (75 22 3)

Battle 19 of 66 (29%) is finished:
BlackMoor by P.Kline scores 96 (18 76 6)
Slayer by Randy Graham scores 386 (76 18 6)

Battle 20 of 66 (30%) is finished:
BlackMoor by P.Kline scores 50 (10 90 0)
Tim by G. Eadon scores 450 (90 10 0)

Battle 21 of 66 (32%) is finished:
BlackMoor by P.Kline scores 75 (15 85 0)
Victory or death by Anders Ivner scores 425 (85 15 0)

Battle 22 of 66 (33%) is finished:
Burger Chef & Jeff by Karl Lewin scores 100 (0 0 100)
Frontwards by Steven Morrell scores 100 (0 0 100)

Battle 23 of 66 (35%) is finished:
Burger Chef & Jeff by Karl Lewin scores 97 (19 79 2)
Last Laugh by Robert Macrae scores 397 (79 19 2)

Battle 24 of 66 (36%) is finished:
Burger Chef & Jeff by Karl Lewin scores 140 (13 12 75)
Mister Bond by Derek Ross scores 135 (12 13 75)

Battle 25 of 66 (38%) is finished:
Burger Chef & Jeff by Karl Lewin scores 0 (0 100 0)
myVamp v3.7 by Paulsson scores 500 (100 0 0)

Battle 26 of 66 (39%) is finished:
Burger Chef & Jeff by Karl Lewin scores 8 (1 96 3)
run and hit by Beppe Bezzi scores 483 (96 1 3)

Battle 27 of 66 (41%) is finished:
Burger Chef & Jeff by Karl Lewin scores 100 (0 0 100)
Settete by Maurizio Vittuari scores 100 (0 0 100)

Battle 28 of 66 (42%) is finished:
Burger Chef & Jeff by Karl Lewin scores 0 (0 100 0)
Slayer by Randy Graham scores 500 (100 0 0)

Battle 29 of 66 (44%) is finished:
Burger Chef & Jeff by Karl Lewin scores 32 (6 92 2)
Tim by G. Eadon scores 462 (92 6 2)

Battle 30 of 66 (45%) is finished:
Burger Chef & Jeff by Karl Lewin scores 225 (45 55 0)
Victory or death by Anders Ivner scores 275 (55 45 0)

Battle 31 of 66 (47%) is finished:
Frontwards by Steven Morrell scores 0 (0 100 0)
Last Laugh by Robert Macrae scores 500 (100 0 0)

Battle 32 of 66 (48%) is finished:
Frontwards by Steven Morrell scores 500 (100 0 0)
Mister Bond by Derek Ross scores 0 (0 100 0)

Battle 33 of 66 (50%) is finished:
Frontwards by Steven Morrell scores 0 (0 100 0)
myVamp v3.7 by Paulsson scores 500 (100 0 0)

Battle 34 of 66 (52%) is finished:
Frontwards by Steven Morrell scores 496 (99 0 1)
run and hit by Beppe Bezzi scores 1 (0 99 1)

Battle 35 of 66 (53%) is finished:
Frontwards by Steven Morrell scores 500 (100 0 0)
Settete by Maurizio Vittuari scores 0 (0 100 0)

Battle 36 of 66 (55%) is finished:
Frontwards by Steven Morrell scores 10 (2 98 0)
Slayer by Randy Graham scores 490 (98 2 0)

Battle 37 of 66 (56%) is finished:
Frontwards by Steven Morrell scores 204 (26 0 74)
Tim by G. Eadon scores 74 (0 26 74)

Battle 38 of 66 (58%) is finished:
Frontwards by Steven Morrell scores 35 (7 93 0)
Victory or death by Anders Ivner scores 465 (93 7 0)

Battle 39 of 66 (59%) is finished:
Last Laugh by Robert Macrae scores 496 (99 0 1)
Mister Bond by Derek Ross scores 1 (0 99 1)

Battle 40 of 66 (61%) is finished:
Last Laugh by Robert Macrae scores 486 (97 2 1)
myVamp v3.7 by Paulsson scores 11 (2 97 1)

Battle 41 of 66 (62%) is finished:
Last Laugh by Robert Macrae scores 500 (100 0 0)
run and hit by Beppe Bezzi scores 0 (0 100 0)

Battle 42 of 66 (64%) is finished:
Last Laugh by Robert Macrae scores 500 (100 0 0)
Settete by Maurizio Vittuari scores 0 (0 100 0)

Battle 43 of 66 (65%) is finished:
Last Laugh by Robert Macrae scores 500 (100 0 0)
Slayer by Randy Graham scores 0 (0 100 0)

Battle 44 of 66 (67%) is finished:
Last Laugh by Robert Macrae scores 104 (19 72 9)
Tim by G. Eadon scores 369 (72 19 9)

Battle 45 of 66 (68%) is finished:
Last Laugh by Robert Macrae scores 500 (100 0 0)
Victory or death by Anders Ivner scores 0 (0 100 0)

Battle 46 of 66 (70%) is finished:
Mister Bond by Derek Ross scores 23 (0 77 23)
myVamp v3.7 by Paulsson scores 408 (77 0 23)

Battle 47 of 66 (71%) is finished:
Mister Bond by Derek Ross scores 53 (6 71 23)
run and hit by Beppe Bezzi scores 378 (71 6 23)

Battle 48 of 66 (73%) is finished:
Mister Bond by Derek Ross scores 194 (32 34 34)
Settete by Maurizio Vittuari scores 204 (34 32 34)

Battle 49 of 66 (74%) is finished:
Mister Bond by Derek Ross scores 276 (50 24 26)
Slayer by Randy Graham scores 146 (24 50 26)

Battle 50 of 66 (76%) is finished:
Mister Bond by Derek Ross scores 211 (28 1 71)
Tim by G. Eadon scores 76 (1 28 71)

Battle 51 of 66 (77%) is finished:
Mister Bond by Derek Ross scores 130 (26 74 0)
Victory or death by Anders Ivner scores 370 (74 26 0)

Battle 52 of 66 (79%) is finished:
myVamp v3.7 by Paulsson scores 10 (2 98 0)
run and hit by Beppe Bezzi scores 490 (98 2 0)

Battle 53 of 66 (80%) is finished:
myVamp v3.7 by Paulsson scores 100 (0 0 100)
Settete by Maurizio Vittuari scores 100 (0 0 100)

Battle 54 of 66 (82%) is finished:
myVamp v3.7 by Paulsson scores 0 (0 100 0)
Slayer by Randy Graham scores 500 (100 0 0)

Battle 55 of 66 (83%) is finished:
myVamp v3.7 by Paulsson scores 87 (9 49 42)
Tim by G. Eadon scores 287 (49 9 42)

Battle 56 of 66 (85%) is finished:
myVamp v3.7 by Paulsson scores 85 (17 83 0)
Victory or death by Anders Ivner scores 415 (83 17 0)

Battle 57 of 66 (86%) is finished:
run and hit by Beppe Bezzi scores 96 (16 68 16)
Settete by Maurizio Vittuari scores 356 (68 16 16)

Battle 58 of 66 (88%) is finished:
run and hit by Beppe Bezzi scores 481 (96 3 1)
Slayer by Randy Graham scores 16 (3 96 1)

Battle 59 of 66 (89%) is finished:
run and hit by Beppe Bezzi scores 319 (57 9 34)
Tim by G. Eadon scores 79 (9 57 34)

Battle 60 of 66 (91%) is finished:
run and hit by Beppe Bezzi scores 75 (15 85 0)
Victory or death by Anders Ivner scores 425 (85 15 0)

Battle 61 of 66 (92%) is finished:
Settete by Maurizio Vittuari scores 363 (66 1 33)
Slayer by Randy Graham scores 38 (1 66 33)

Battle 62 of 66 (94%) is finished:
Settete by Maurizio Vittuari scores 314 (58 18 24)
Tim by G. Eadon scores 114 (18 58 24)

Battle 63 of 66 (95%) is finished:
Settete by Maurizio Vittuari scores 85 (17 83 0)
Victory or death by Anders Ivner scores 415 (83 17 0)

Battle 64 of 66 (97%) is finished:
Slayer by Randy Graham scores 88 (1 16 83)
Tim by G. Eadon scores 163 (16 1 83)

Battle 65 of 66 (98%) is finished:
Slayer by Randy Graham scores 480 (96 4 0)
Victory or death by Anders Ivner scores 20 (4 96 0)

Battle 66 of 66 (100%) is finished:
Tim by G. Eadon scores 491 (98 1 1)
Victory or death by Anders Ivner scores 6 (1 98 1)

Elapsed time: 5286 seconds (01:28:06)

Rank    Name                    Author                   %W  %L  %T   Score
___________________________________________________________________________
  1     Last Laugh              Robert Macrae            90   9   1   4963
  2     Back Propagation        M R Bremer               57  27  16   3306
  3     run and hit             Beppe Bezzi              54  36  10   3096
  4     Victory or death        Anders Ivner             52  48   0   2864
  5     Slayer                  Randy Graham             45  41  14   2652
  6     Tim                     G. Eadon                 40  27  32   2579
  7     myVamp v3.7             Paulsson                 37  48  15   2201
  8     Settete                 Maurizio Vittuari        30  37  33   2010
  9     Frontwards              Steven Morrell           31  53  16   1860
 10     BlackMoor               P.Kline                  33  64   3   1853
 11     Burger Chef & Jeff      Karl Lewin               17  57  26   1206
 12     Mister Bond             Derek Ross               15  54  31   1164

The scores so far:

Name                 1       2       3       4       5       6       7   total

Steven Morrell       5       10      9       13      14      10      4   65
P.Kline              7.5     9       7       11      11      12      3   60.5
Paulsson             7.5     11      11      9       2       5       6   51.5
Anders Ivner         5.5     8       4       0       10      14      9   50.5
Beppe Bezzi          7       7       13      2       8       3       10  50
Robert Macrae        0       0       0       12      12      13      12  49
M R Bremer           7       4       3.6     5       7       11      11  48.6
Maurizio Vittuari    6.5     5       6       3       9       8       5   42.5
Randy Graham         0       0       8       10      4       7       8   37
John K. Wilkinson    4       6       12      0       13      2       0   37
Karl Lewin           0       0       10      4       6       10      2   32
Derek Ross           3.5     3       3.3     7       3       6       1   26.8
G. Eadon             1.5     2       5       6       1       4       7   26.5
Kurt Franke          0       0       0       8       0       0       0   8
Michael Constant     0       0       0       0       5       0       0   5
Anders Scholl        0       1       2       1       0       0       0   4
John Lewis           0       0       3       0       0       0       0   3
Calvin Loh           0       0       1       0       0       1       0   2

As this tournament draws to a close -- only 2 more rounds to go, it looks like
we're up for some up for some final stretch excitement. The lead of Steven
Morrell and Paul Kline has dwindled to a mere 9 points and the midfield is
densely packed with 5 players scoring between 48 and 51 points. The game is
still wide open. Just as a reminder, the GIFs of winner and two runners-up
will be featured in the upcoming Core War Hall of Fame at stormking -- how's
that for an incentive?

Good luck for the remaining rounds,
Nandor & Stefan
______________________________________________________________________________
Current Status of the Internet Pizza Server ICWS '94 Draft Hill:

Hill Specs:
         coresize: 8000
   max. processes: 8000
         duration: after 80,000 cycles, a tie is declared.
max. entry length: 100
 minimum distance: 100
    rounds fought: 200
  instruction set: ICWS '94 Draft

Last challenge: Sun Dec  3 10:16:49 PST 1995 

 #  %W/ %L/ %T                      Name               Author   Score     Age
 1  44/ 37/ 19                      quiz              Schitzo     151     137
 2  38/ 36/ 25                  Derision           M R Bremer     140     156
 3  42/ 44/ 14                   TestTTB    Maurizio Vittuari     139       6
 4  35/ 31/ 34               Tornado 2.0          Beppe Bezzi     138       1
 5  40/ 42/ 18             Porch Swing 2                  JKW     138      45
 6  37/ 37/ 26               myVamp v3.7             Paulsson     137     484
 7  20/  5/ 75                  Die Hard              P.Kline     135      38
 8  33/ 30/ 36                 Torch t18              P.Kline     135     516
 9  30/ 25/ 44                  La Bomba          Beppe Bezzi     134     132
10  27/ 20/ 53          juliet and paper M R Bremer, B. Bezzi     133     133
11  29/ 27/ 43           Jack in the box          Beppe Bezzi     131     504
12  19/  7/ 74               Night Train           Karl Lewin     130      24
13  38/ 46/ 17              Taking Names              P.Kline     130      25
14  37/ 46/ 16                     ltest         Anders Ivner     128      53
15  33/ 37/ 30                endpoint .           M R Bremer     128     161
16  24/ 20/ 56                  Hector 2          Kurt Franke     128      52
17  21/ 15/ 64             Impfinity v3i               Planar     127      66
18  34/ 40/ 26                    Test z                  JKW     127      44
19  26/ 25/ 49                    test9q          Kurt Franke     126      11
20  31/ 36/ 33                   Saveme!    Maurizio Vittuari     126      51
21  22/ 19/ 59              Evolve-- v.1                  JKW     124      33
22  36/ 47/ 17       Leprechaun on speed         Anders Ivner     124     312
23  30/ 36/ 34              Son & Father    Maurizio Vittuari     123     167
24  22/ 23/ 55                    test9p          Kurt Franke     120       8
25  31/ 45/ 24               The Inferno          Kurt Franke     116       2

Two behemoths get pushed off this week.  Armory has been suffering for a 
awhile and was finally pushed off by JKW's own test.  Phq has had similar 
problems.  His last ditch defense (Saveme!) wasn't quite enough to keep it on 
the hill.  Torch t18 and Jack in the box move up to claim the vacated spots.
Torch is in very good health, as high as third, as low as 11th, but overall
hanging around 5th or 6th.  Jack in the box is a super elastic yo-yo.  Bezzi
thought it may get pushed off soon, but it has hung out in the top 5 this 
week and is currently in 11th place.  You'll have to see next week's issue
for the updated Hall of Fame.  Sorry.

quiz continues to dominate, usually enjoying a >10 point advantage.  Someone
_really_ needs to smash that thing.  Who would be king then? ;-)  La Bomba
RULED and is now sliding down the hill.  Are qscanners becoming ineffective?  
Hector 2 is a qscan --> replicator.  Smart Bomb is a qscan --> p-warrior. 
We'll see how these three fare in the weeks ahead.

The five additional slots on the hill means lots of new boys.  P.Kline 
decided to increase his presence on the hill with the addition of Taking 
Names (which pushed off Phq) and Die Hard.  Maurizio Vitturari has a warrior
under wraps that looks to be a worthy successor to Phq.
______________________________________________________________________________
94 - What's New

 3  42/ 44/ 14                   TestTTB    Maurizio Vittuari     139       6
 4  35/ 31/ 34               Tornado 2.0          Beppe Bezzi     138       1
 5  40/ 42/ 18             Porch Swing 2                  JKW     138      45
 7  20/  5/ 75                  Die Hard              P.Kline     135      38
12  19/  7/ 74               Night Train           Karl Lewin     130      24
13  38/ 46/ 17              Taking Names              P.Kline     130      25
14  37/ 46/ 16                     ltest         Anders Ivner     128      53
16  24/ 20/ 56                  Hector 2          Kurt Franke     128      52
18  34/ 40/ 26                    Test z                  JKW     127      44
19  26/ 25/ 49                    test9q          Kurt Franke     126      11
20  31/ 36/ 33                   Saveme!    Maurizio Vittuari     126      51
21  22/ 19/ 59              Evolve-- v.1                  JKW     124      33
24  22/ 23/ 55                    test9p          Kurt Franke     120       8
25  31/ 45/ 24               The Inferno          Kurt Franke     116       2
______________________________________________________________________________
94 - What's No More

21  22/ 21/ 57                     test4          Kurt Franke     122       2
21  31/ 35/ 33              Father & Son    Maurizio Vittuari     127     110
21  36/ 45/ 19             myZizzor v2.0             Paulsson     127      12
21  35/ 49/ 16                Frontwards       Steven Morrell     121      10
21  36/ 47/ 17             Porch Swing +         Randy Graham     124     166
21  32/ 40/ 28               Armory - A5            Wilkinson     123     609
26  25/ 27/ 47 Fly Fishing w/Plastic Wor           Karl Lewin     122      83
26  31/ 40/ 29                       Phq    Maurizio Vittuari     121     589
26   1/  2/  1                 test lp 2          Beppe Bezzi       4      36
______________________________________________________________________________
What's Old

 8  33/ 30/ 36                 Torch t18              P.Kline     135     516
11  29/ 27/ 43           Jack in the box          Beppe Bezzi     131     504
 6  37/ 37/ 26               myVamp v3.7             Paulsson     137     484
22  36/ 47/ 17       Leprechaun on speed         Anders Ivner     124     312

No other warrior is even above 200.
______________________________________________________________________________
Current Status of the Internet Pizza Server Beginner's Hill:

Hill Specs:
         coresize: 8000
   max. processes: 8000
         duration: after 80,000 cycles, a tie is declared.
max. entry length: 100
 minimum distance: 100
      maximum age: At age 100, warriors are retired.
    rounds fought: 200
  instruction set: ICWS '94 Draft

Last challenge: Sun Dec  3 15:11:21 PST 1995 

 #  %W/ %L/ %T                      Name               Author   Score     Age
 1  54/ 29/ 16          Fire Master v1.5            JS Pulido     179      26
 2  52/ 32/ 15          Clear Sighted v1            JS Pulido     172      23
 3  41/ 15/ 44             Paper8-IV 1.1             G. Eadon     167       6
 4  47/ 34/ 18           dualstrat v.0.2         Brian Haskin     160      22
 5  36/ 14/ 49                    Schizo            J. Doster     158      73
 6  38/ 28/ 34              Hint Test v6           M R Bremer     148       9
 7  42/ 37/ 21                      Look            J. Doster     147      70
 8  29/ 14/ 57           Impfinity v3c11               Planar     144      85
 9  28/ 13/ 59                 Sheet 1.0            J. Doster     143      83
10  27/ 17/ 56             RingWorm_v2.4           Calvin Loh     136      71
11  21/  9/ 69             RingWorm_v2.5           Calvin Loh     133      56
12  34/ 40/ 26         Good old DJN Test           Karl Lewin     127      36
13  33/ 43/ 24                    Test-G             G. Eadon     124       1
14  26/ 28/ 46               Loh_tst_1.3           Calvin Loh     123      46
15  23/ 30/ 47               Serendipity         A. Nevermind     115      10
16  31/ 48/ 21                  Headache       Andy Nevermind     113       7
17  27/ 50/ 23         Enlightenment III         Scott Manley     104      12
18  10/ 16/ 74                 Fortitude         A. Nevermind     103       8
19  21/ 55/ 24                      Joy!      Kevin Deitchman      87      11
20  21/  8/ 13                  test L 9          Beppe Bezzi      78      24
21  22/ 11/ 10                Lurker 1.1          Kurt Franke      76      41
22  14/ 56/ 29       Frau Langmeier v2.4          Ian Oversby      73       4
23  17/  5/ 20               Trapper 1.1          Kurt Franke      70      21
24   1/ 46/ 53             PlinyScan 1.1             G. Eadon      57       3
25  15/ 17/ 11        Paper Shredder 2.1          Kurt Franke      55      40

Twenty new entries on the hill this week.

Pulido has had solid lock on the hill lately.  Fire Master was seen on the
'94 draft hill for awhile.  The top 5 warriors are the same this week except
the absence of two of Franke's--Lurker and teamwork.  Franke has been trying
to gain a foothold on the '94 hill.  Hector 2 is in 16th place there.  His
test program is at the _top_ of the '94x hill.  Lewin has also claimed a 
spot on the '94 hill with Night Train riding in 12th place.  From the looks 
of his score, it seems to be some kind of Die Hard derivative.

Bezzi's test L 9 is in 20th place.  It was riding high on the '94 draft hill
if you can recall.  If your program dominates the b hill and fares poorly on
the '94 draft hill, don't lose confidence.  The composition of the hill has a
huge effect on how your warrior scores.  Keep trying.
______________________________________________________________________________
Planar's Corner

                    The mathematics of imp steps

If you find this too mathematical, there is some redcode and cdb
macros in section 4.

0. Notations
------------
We'll talk about an imp number N and its corresponding imp step S in a
core of size C.  This will give us an N-point ring or spiral with this
instruction:

    MOV     0, S

N, S, and C must be such that, for some integer k,
        N*S = k*C + 1        (1)

Given C and N, the game is to find an S that satisfies equation (1).
We're not really interested in the value of k.  We'll call (N,S) an
imp pair in C.  When C is implicit from the context, we'll simply
say that (N,S) is an imp pair.

We can see that equation (1) is unchanged when we exchange N and S:
if (N,S) is an imp pair, then (S,N) is also an imp pair.

1. Existence
------------
Let me state here the most important theorem of mathematics (as far as
imp rings are concerned, anyway), Bezout's theorem:

For any integers x, y, and g, there exists integers u and v such that
        u*x + v*y = g        (2)
if and only if g is a multiple of the Greatest Common Divisor of x and y.

I won't explicitely prove Bezout's theorem here.  One of the
implications is easy, and the programs below are proof of the other.
Trust me, Bezout's theorem is true.

Let us take x = N, y = C, and g = 1, and equation (2) is almost the
same as equation (1):   u*N + v*C = 1

If we can find u and v that satisfy this relation, then (u,N) is an imp
pair.  Conversely, if (N,S) is an imp pair, then S*N + (-k)*C = 1, so 1
must be a multiple of GCD(N,C).  This means that 1 = GCD(N,C), so N
and C have no common factors.

Our first result is:
In a core of size C, there is an imp step for N if and only if N and
C have no common factor.

Examples:
In a core of size 8192 all odd numbers are imp numbers.
In a core of size 8000 all numbers ending in 1, 3, 7, or 9 are imp numbers.
In any core size, (1,1) is an imp pair.
In any core size C, (C-1,C-1) is  an imp pair.
In any odd core size C, ((C-1)/2,C-2) is an imp pair.

2. Unicity
----------
Assume that (N,S) and (N,T) are both imp pairs.  We have:
(a)      N*S = k*C + 1
(b)      N*T = i*C + 1

Subtracting (b) from (a), we get:
(c)      N*(S-T) = (k-i)*C

But N and C have no common factors, so S-T must be a multiple of C.
Thus, S = T + j*C: S and T are congruent modulo C.  In a redcode
program they are equal, since all redcode arithmetic is done modulo C.

Our second result is:
In a core of size C, if both (N,S) and (N,T) are imp pairs, then S
and T must be congruent modulo C, and thus equal, as far as redcode
programs are concerned.

3. Computation with recursion
-----------------------------
Computing the u and v parameters of equation (1) can be done with
Euclid's extended algorithm.  This is a simple extension of Euclid's
algorithm for computing the GCD.  Given x and y, Euclid's extended
algorithm will compute g = GCD(x,y) and values for u and v that make
equation (1) hold.

The algorithm is extremely simple.  You want to solve
       u*x + v*y = g

if x > y, solve u'*y + v'*x = g and take u = v', v = u'.
if x = 0, take g = y, u = 0, and v = 1.
else compute q and r such that y = q*x + r   and   0 <= r < x;
     solve  u'*r + v'*x = g;
     take u = v'-q*u' and v = u'.

This is the same as Euclid's algorithm except that you keep track of the
quotients of the divisions and use them to compute u and v.

4. Computation without recursion
--------------------------------
There is a version of Euclid's extended algorithm that uses a loop
instead of the recursion.  Instead of boring you with a description
of how it works, I'll simply give the code:

;redcode
;name Euclid's extended
;author Planar
;assert MAXLENGTH >= 15 && CORESIZE >= 16

; To compute the imp step for a given imp number,
; enter the imp number in the following line:

n       equ     3

; The program terminates with gcd (n,CORESIZE) in the a-value at
; address 0.  If this is 1, there is a spiral of size n, and the
; b-value at address 1 is the corresponding step.

; This program works in any core size, and it computes imp steps
; for that core size.

; Use the following cdb macro to display all the (N,S) imp pairs
; with N <= 100 in the current core size.
; imps=@ca z=0~!!~@ca z=z+1~@ed 0~dat z~@g~@0~if a==1~!!~@1~ca z,b~!1~@s~!100
; (and launch pMARS with -r 100)

        org     start

yx      dat     0, n          ; y = CORESIZE = 0
ab      dat     1, 0

done    equ     ab
start   sub.b   yx, q         ; (CORESIZE-n)
        div.b   yx, q         ; ((CORESIZE-n)/n)
        add.ab  #1, q         ; q = (CORESIZE-n)/n+1 = CORESIZE/n
loop    mul.ab  ab, q         ; (a*q)
        mov.x   ab, ab        ; (b);   b' = a
        sub.ba  q, ab         ; a' = b - a*q
        mov.x   yx, yx        ; (y);   y' = x
        sub.ab  yx, yx        ; (y - x)
        mod.ab  yx, yx        ; x' = (y-x) % x = y % x
        jmz.b   done, yx      ; We're done if x = 0
        mov.ab  yx, q         ; (y)
        div.b   yx, q         ; q' = y' / x'
        jmp     loop

q       end

This program is quite fast for every imp number N and core size C:
the number of loop iterations is bounded by 2*ceil(log N/log 2).

And this is a version entirely written in cdb macros:

euclid=@ca c=1,d=0~m eucloop
eucloop=!!~@ca t=d-y/x*c,d=c~@ca c=t,t=y%x~@ca y=x,x=t~if x!=0~!
imp-pairs=@ca s=$~@ca z=0~!!~@ca x=z=z+1,y=$+1~m euclid~if y==1~ca z,d~!s

(Do not try to tune your modem, the above is not line noise.)

This macro is much faster than Stefan's "imp-numbers", and it really
finds all imp pairs, whereas Stefan's misses a few.

To use it, save it in a file named "planar.mac", launch pMARS with the
core size you're interested in and type "m imp-pairs,planar.mac".
pMARS will list all (N,S) imp pairs.  When N = S, for some reason
pMARS will only display one of them.  (Bug or feature ?)

If you dislike negative numbers, just add CORESIZE to them.  This is
an easy exercise in cdb programming.

If you only want the reasonable imp numbers, change the "s" at the end
of the last line into 100, and it will display only the imp numbers up
to 100.

5. Future work
--------------
There is a relation between imp numbers, Euclid's algorithm, and
bombing patterns.  I'll try to work it out.

Now that I've been showing off my new cdb skills (two months ago I was
reading the docs for the first time), I guess I'll have to write the cdb
tutorial I promised to Beppe and Myer.

<Damien.Doligez@inria.fr>
______________________________________________________________________________
Extra Extra

You ask; we deliver.  As promised the second and third place entries for
the tournament--round 7.
_____
run and hit by BEPPE BEZZI

I pswitch 5 attack modules:

A very fast static, non booted, vector bomber mov <x,y followed by a quick
boot of Tornado

A booted away multiprocess vector vampire to a large pit, self clearing and
brainwashing. This is followed by a forward running continual dat clear. 

shot1   mov     >0,     @vector1-A0

This is the module that, hanging your warrior, cused my victory against you
after a few wins yours and ties.

A Tornado bomber with multipass clear.

A stone--juliet storm.

A paper module, in case someone uses a single pass clear.

I'm too surprised of how good I did. In fact, having nothing to test it
against I tried to mix as many thing I was able to.

-Beppe

;redcode-94
;name run and hit
;author Beppe Bezzi
;contact bezzi@iol.it
;NSFCWT round 7 entry
;assert CORESIZE == 8000 && MINDIST == 4000
;strategy flee then shot (not always :-)

org     start
RES     equ     #0
STR     equ     #299

vstep   equ     8      
proc    equ     8
disp1   equ     0
disp2   equ     70
disp3   equ     140
disp4   equ     210
disp5   equ     280
disp6   equ     350
disp7   equ     420
disp8   equ     -100
spacer  equ     0
A0      equ     1800
A1      equ     3740
A2      equ     -2024

;Tornado equ
step    equ     95               
count   equ     530
away    equ     4456
djnoff  equ     -2000

;juliet equs
ptr     EQU     -1333

;Paper equ

dest0   equ     2200
dest1   equ     3740
dest2   equ     -1278   
range   equ     933

;vector bomber equ

target  equ     (zero+4000+20)

zero   
q for 20
        dat     q%7,    1
rof

point1  dat     vbomb,  vbomb+A0

vboot
        spl     1,      <pit    
        spl     1,      <-10
        spl     bclear  
        spl     1,      <-10   
        mov.i   {point1,<point1         ;copy
        jmp     @point1
;break
shot1   mov     >0,     @vector1-A0
        mov     >0,     @vector2-A0
        mov     >0,     @vector3-A0
        mov     >0,     @vector4-A0
        mov     >0,     @vector5-A0
        mov     >0,     @vector6-A0
        mov     >0,     @vector7-A0     ;vector bombing
;break
        jmp     clear1+A2-A0-5
vbomb   dat     10,     10

point2  dat     clear1+4,A2
bclear  mov     {point2,<point2

clear1  dat     #10,    #10
        spl     #0,     #100
        mov     -2,     >-5
        djn.f   -1,     <-100
        
vector1
s for proc
        jmp     pit-zero+4000-vstep-disp1,zero+4000+s*vstep+disp1
rof
vector2
s for proc
        jmp     pit-zero+4000-vstep-disp2,zero+4000+s*vstep+disp2
rof
vector3
s for proc
        jmp     pit-zero+4000-vstep-disp3,zero+4000+s*vstep+disp3
rof
vector4
s for proc
        jmp     pit-zero+4000-vstep-disp4,zero+4000+s*vstep+disp4
rof
vector5
s for proc
        jmp     pit-zero+4000-vstep-disp5,zero+4000+s*vstep+disp5
rof
vector6
s for proc
        jmp     pit-zero+4000-vstep-disp6,zero+4000+s*vstep+disp6
rof
vector7
s for proc
        jmp     pit-zero+4000-vstep-disp7,zero+4000+s*vstep+disp7
rof
vector8
s for proc
        jmp     pit-zero+4000-vstep-disp8,zero+4000+s*vstep+disp8
rof

pit     mov     -1000, <zero+3500
        stp     #0,     #0
for 30
        spl     pit,    <pit+1
        spl     pit,    {pit+1
        rof
for 50
        dat     zero,   zero+500
rof
;****** START *********

start
res     ldp.ab  RES,    #0      ;load result last match
str     ldp.a   STR,    str1    ;load strategy in use
        seq.ab  #1,     res     ;check result, win OK
lost    add.a   #1,     str1    ;lost change
        mod.a   #5,     str1    ;secure jump     
win     stp.ab  str1,   STR     ;save strategy
str1    jmp     @0,     vboot   ;booted vector bomber + clear
        dat     0,      vector  ;static vector bomber
        dat     0,      tornado ;
        dat     0,      juliet
        dat     0,      paper
for 20
        dat     1,1
rof
tornado
        mov     bombm,  away
for 12
        mov     {tornado,<tornado
rof        
        jmp     @tornado,<tornado

warr
gate    
        nop     split,  100 ;(clear start)
   
incr    spl     #3*step,#3*step      
start1  add     incr    ,stone           
stone   mov     step+jump, *(2*step)+jump
        mov     bombm,   @stone
        mov     bombs,   *stone
jump    djn.f   start1, <djnoff

clr     mov     *gate,  >gate
djmp    djn.f   clr,    {gate-20
wip     dat     <2667,  <20
split   spl     #wip-gate,  #wip-gate+5
bombs   spl     #step,   #1
;break
bombm   mov     step,   1
for 50
        dat     zero,   zero+500
rof

;juliet storm (sorry Myer I'm very short of time :-)

jgate   dat <-445, <-446
s       spl #445, <-445
        spl #0, <-446
        mov {445-1, -445+2
        add -3, -1
        djn.f -2, <-2667-500
        mov 32, <-20
go      dat     #0,     #ptr
juliet  mov     {-1,    <-1
        mov     {-2,    <-2
        mov     {-3,    <-3
        mov     {-4,    <-4
        mov     {-5,    <-5
        mov     {-6,    <-6
        mov     jgate,  ptr+24 
        mov     jgate,  ptr+24
        jmp     @go,    <4000
for 50
        dat     1,1
        rof
paper
        spl     1,      <300    ;\
        spl     1,      <400    ;-> generate 8 consecutive processes
        spl     1,      <500  

silk    spl     @0,     {dest0
        mov.i   }-1,    >-1 
silk1   spl     @0,     <dest1  ;split to new copy
        mov.i   }-1,    >-1     ;copy self to new location
        mov.i   bomba,  }range
        mov     {silk1, <silk2
silk2   jmp     @0,     >dest2
bomba   dat     <2667,  <1


;linear vector bomber

vector
        mov     <target+50, target+100
        mov     <target+450,target+300
        mov     <target+150,target+200
        mov     <target+250,target+400
        mov     <target+350,target

        mov     <target+130,target+330
        mov     <target+230,target+430
        mov     <target+30, target+370
        mov     <target+270,target+70
        mov     <target+170,target+220
;now it's sure escaped
step1   equ     85         
count1  equ     533
away1   equ     -3750

        mov     bm,     djmp1+away1+31
        mov     bd,     djmp1+away1+32
        mov     *tptr,  @tptr
        mov     {tptr,  <tptr
        mov     {tptr,  <tptr
        mov     {tptr,  <tptr
        mov     {tptr,  <tptr
        mov     {tptr,  <tptr
        mov     {tptr,  <tptr
        mov     {tptr,  <tptr
        jmp     @tptr,  <tptr

tptr    dat     djmp1,   away1+djmp1

bomber1 mov     bd+30,  *stone1
        mov     bm+30,  @stone1
stone1  mov     *step1+2,*(2*step1)+2         
        add     incr1,   stone1           
jump1   djn.b   bomber1, #count1
incr1   spl     #3*step1,#3*step1        
clr1    mov     -12,    }bomber1+1
djmp1   djn     clr1,   <bomber1-5
bm      mov.i   #step1, 1        
bd      dat     #step1, #1

a for (MAXLENGTH-CURLINE-1) /3
        dat     zero,   a
        dat     1,1
        dat     fine,   a
rof
fine    jmp     zero

end
_____
Back Propagation by M R BREMER

No one knew how they would fare this round, myself included--nothing to test
against, only vague ideas of what to expect.  Seeing Ivner's program after
the fact had me laughing.  I have lots of respect for an author who will
intentionally cause his program to die.  Anyways.  I operated on two lines of
thought: 
        (1) everybody is going to vamp to a brainwashing pit.
        (2) everybody is going to use switching.

After all, that's what I was doing 8).  My program contains ten totally
independent vector vamping modules.  Each module throws 10 fangs of the type
jmp 50 (50 addresses later) jmp 50 (+50 spaces) . . . jmp pit.  I only need 
two fangs per module instead of 10.  Is this better?  I have no idea.

A switching routine ( out of Jack in the box ) selects one of 5 strategies.
Each strategy executes module x and module x+5 yielding twenty fangs, 25 
addresses apart.  At the end of module x is code to cleanse module x+5 by
using a-indirect bombing on it.  If I have been targeted by a fang, hopefully
I'll eliminate the pit with a mov #1, }1 bomb.  I think it should have been
a mov#1, }0.  Error #1.  Next the code totally eliminates the module, over-
writing it with dat 1, 1s.  Hopefully this will eliminate any stun attacks.
Of course module x+5 does the same of x.  

Next launch two copies of Phoenix by Jippo.  Plenty of a-indirect bombing.  
Hard on imps.  Of course I also have a backup continuous imp ring launcher 
acquiried from Keystone.  

By filling my code with pointers to locations 4000-4500, any bombing done
by the paper on my code will land on the enemy.

My pit is actually a jumper to two different pits.  One brainwashes and the
other pit just keeps growing.  Check it out at the very end of my source 
listing.  Neither of my pits core clear.  Error #2.  

It seems to have worked though.  Unbelievable.  Sorry it's so long.  I'm not
good with macros.

-M R Bremer

;name Back Propagation
;author M R Bremer
;nsfcwt round 7
;contact <bremermr@ecn.purdue.edu>
;strategy       create 10 independent vector fang bombing modules targeting
;strategy       different parts of enemy code.
;strategy       use that module from now until start to lose
;strategy       launch Phoenix (from Jippo) as backup to all
;strategy       i take _way_ too much time.  i expect to get creamed
org start

STEP EQU 50

PSTEP   equ     3520
NSTEP   equ     1520
ESTEP   equ      830

_STR    EQU #336
_RES    EQU #0

         spl mimp+5334 
launch2  spl -1                     ; continuous imp-ring launcher
         spl mimp+2667              ; activated by stone if needed
mimp     mov.i #0,2667              ;
for 23
        jmp 4000, start-5
rof
start
res     ldp.ab _RES, #0
str     ldp.a _STR, str1        ;load strategy in use
        seq.ab #1, res          ;check result
lost    add.a #1, str1          ;lost or tie --> change 
        mod.a #5, str1         ;secure result
win     stp.ab  str1, _STR
str1    jmp @0, mod1
        dat 0, mod2
        dat 0, mod3
        dat 0, mod4
        dat 0, mod5
for 17
        jmp 4075, start
rof
        spl p1, 0
pit     spl -1, 0
        jmp p2, 0
for 11
        jmp 4050, start
rof
p2      spl #0
        spl -1
        spl -2, 0
        stp.b >-1, -1
        jmp pit

for 19
        jmp 4400, start
rof

mod1    spl mod6
        mov.i m1fang, start+4000+9*STEP
        mov.i fang1, start+4000+8*STEP
        mov.i fang1, start+4000+7*STEP
        mov.i fang1, start+4000+6*STEP
        mov.i fang1, start+4000+5*STEP
        mov.i fang1, start+4000+4*STEP
        mov.i fang1, start+4000+3*STEP
        mov.i fang1, start+4000+2*STEP
        mov.i fang1, start+4000+STEP
        mov.i fang1, start+4000
        mov.i av1, *mod6         
        mov.i dat1, >-1
        djn.b -1, #10
        spl launch1
        jmp launch2
fang1   jmp STEP
m1fang  jmp -1*(start+4000+9*STEP)+pit
av1     mov.i #1, }1
dat1    dat 1, 1

for     12
        jmp 4250, 4350
rof

mod2    spl mod7
        mov.i m2fang, start+4005+9*STEP
        mov.i fang2, start+4005+8*STEP
        mov.i fang2, start+4005+7*STEP
        mov.i fang2, start+4005+6*STEP
        mov.i fang2, start+4005+5*STEP
        mov.i fang2, start+4005+4*STEP
        mov.i fang2, start+4005+3*STEP
        mov.i fang2, start+4005+2*STEP
        mov.i fang2, start+4005+STEP
        mov.i fang2, start+4005
        mov.i av2, *mod7         
        mov.i dat2, >-1
        djn.b -1, #10
        spl launch1
        jmp launch2
fang2   jmp STEP
m2fang  jmp -1*(start+4005+9*STEP)+pit
av2     mov.i #1, }1
dat2    dat 1, 1

for 19
        jmp 4400, 4090
rof

mod3    spl mod8
        mov.i m3fang, start+4010+9*STEP
        mov.i fang3, start+4010+8*STEP
        mov.i fang3, start+4010+7*STEP
        mov.i fang3, start+4010+6*STEP
        mov.i fang3, start+4010+5*STEP
        mov.i fang3, start+4010+4*STEP
        mov.i fang3, start+4010+3*STEP
        mov.i fang3, start+4010+2*STEP
        mov.i fang3, start+4010+STEP
        mov.i fang3, start+4010
        mov.i av3, *mod8         
        mov.i dat3, >-1
        djn.b -1, #10
        spl launch1
        jmp launch2
fang3   jmp STEP
m3fang  jmp -1*(start+4010+9*STEP)+pit 
av3     mov.i #1, }1
dat3    dat 1, 1
for 19
        jmp 4400, 4090
rof

mod4    spl mod9
        mov.i m4fang, start+4015+9*STEP
        mov.i fang4, start+4015+8*STEP
        mov.i fang4, start+4015+7*STEP
        mov.i fang4, start+4015+6*STEP
        mov.i fang4, start+4015+5*STEP
        mov.i fang4, start+4015+4*STEP
        mov.i fang4, start+4015+3*STEP
        mov.i fang4, start+4015+2*STEP
        mov.i fang4, start+4015+STEP
        mov.i fang4, start+4015
        mov.i av4, *mod9         
        mov.i dat4, >-1
        djn.b -1, #10
        spl launch1
        jmp launch2
fang4   jmp STEP
m4fang  jmp -1*(start+4015+9*STEP)+pit 
av4     mov.i #1, }1
dat4    dat 1, 1
for 19
        jmp 4400, 4090
rof


mod5    spl mod10
        mov.i m5fang, start+4020+9*STEP
        mov.i fang5, start+4020+8*STEP
        mov.i fang5, start+4020+7*STEP
        mov.i fang5, start+4020+6*STEP
        mov.i fang5, start+4020+5*STEP
        mov.i fang5, start+4020+4*STEP
        mov.i fang5, start+4020+3*STEP
        mov.i fang5, start+4020+2*STEP
        mov.i fang5, start+4020+STEP
        mov.i fang5, start+4020
        mov.i av5, *mod10         
        mov.i dat5, >-1
        djn.b -1, #10
        spl launch1
        jmp launch2
fang5   jmp STEP
m5fang  jmp -1*(start+4020+9*STEP)+pit 
av5     mov.i #1, }1
dat5    dat 1, 1
for 19
        jmp 4400, 4090
rof

mod6    mov.i m6fang, start+4025+9*STEP
        mov.i fang6, start+4025+8*STEP
        mov.i fang6, start+4025+7*STEP
        mov.i fang6, start+4025+6*STEP
        mov.i fang6, start+4025+5*STEP
        mov.i fang6, start+4025+4*STEP
        mov.i fang6, start+4025+3*STEP
        mov.i fang6, start+4025+2*STEP
        mov.i fang6, start+4025+STEP
        mov.i fang6, start+4025
        mov.i av6, *mod1+1         
        mov.i dat6, >-1
        djn.b -1, #10
        spl launch1
        jmp launch2
fang6   jmp STEP
m6fang  jmp -1*(start+4025+9*STEP)+pit 
av6     mov.i #1, }1
dat6    dat 1, 1
for 12
        jmp 4400, 4090
rof
        
c2      spl     1,          <start+4000+123
        mov.i   -1,         0
        mov.i   -1,         0
        mov.i   -1,         0
 
phoenix spl     @phoenix,   PSTEP
        mov.i   }phoenix,   >phoenix
nest    spl     @nest,      NSTEP
        mov.i   }nest,      >nest
egg     spl     @egg,       ESTEP
        mov.i   }egg,       >egg
        mov.i   ash,        {3999
        mov.i   ash,        }4001
ash     dat.f   <2667,      <2*2667
        dat.f   <2667,      <2*2667
        dat.f   <2667,      <2*2667
        dat.f   <2667,      <2*2667
        dat.f   <2667,      <2*2667
for 12
        jmp 4400, 4090
rof

mod7    mov.i m7fang, start+4030+9*STEP
        mov.i fang7, start+4030+8*STEP
        mov.i fang7, start+4030+7*STEP
        mov.i fang7, start+4030+6*STEP
        mov.i fang7, start+4030+5*STEP
        mov.i fang7, start+4030+4*STEP
        mov.i fang7, start+4030+3*STEP
        mov.i fang7, start+4030+2*STEP
        mov.i fang7, start+4030+STEP
        mov.i fang7, start+4030
        mov.i av7, *mod2+1
        mov.i dat7, >-1
        djn.b -1, #10
        spl launch1
        jmp launch2
fang7   jmp STEP
m7fang  jmp -1*(start+4030+9*STEP)+pit 
av7     mov.i #1, }1
dat7    dat 1, 1
for 12
        jmp 4400, 4090
rof

mod8    mov.i m8fang, start+4035+9*STEP
        mov.i fang8, start+4035+8*STEP
        mov.i fang8, start+4035+7*STEP
        mov.i fang8, start+4035+6*STEP
        mov.i fang8, start+4035+5*STEP
        mov.i fang8, start+4035+4*STEP
        mov.i fang8, start+4035+3*STEP
        mov.i fang8, start+4035+2*STEP
        mov.i fang8, start+4035+STEP
        mov.i fang8, start+4035
        mov.i av8, *mod3+1         
        mov.i dat8, >-1
        djn.b -1, #10
        spl launch1
        jmp launch2
fang8   jmp STEP
m8fang  jmp -1*(start+4035+9*STEP)+pit 
av8     mov.i #1, }1
dat8    dat 1, 1
for 12
        jmp 4400, 4090
rof

mod9    mov.i m9fang, start+4040+9*STEP
        mov.i fang9, start+4040+8*STEP
        mov.i fang9, start+4040+7*STEP
        mov.i fang9, start+4040+6*STEP
        mov.i fang9, start+4040+5*STEP
        mov.i fang9, start+4040+4*STEP
        mov.i fang9, start+4040+3*STEP
        mov.i fang9, start+4040+2*STEP
        mov.i fang9, start+4040+STEP
        mov.i fang9, start+4040
        mov.i av9, *mod4+1         
        mov.i dat9, >-1
        djn.b -1, #10
        spl launch1
        jmp launch2
fang9   jmp STEP
m9fang  jmp -1*(start+4040+9*STEP)+pit 
av9     mov.i #1, }1
dat9    dat 1, 1

for 12
        jmp 4400, 4090
rof

mod10   mov.i m10fang, start+4045+9*STEP
        mov.i fang10, start+4045+8*STEP
        mov.i fang10, start+4045+7*STEP
        mov.i fang10, start+4045+6*STEP
        mov.i fang10, start+4045+5*STEP
        mov.i fang10, start+4045+4*STEP
        mov.i fang10, start+4045+3*STEP
        mov.i fang10, start+4045+2*STEP
        mov.i fang10, start+4045+STEP
        mov.i fang10, start+4045
        mov.i av10, *mod5+1
        mov.i dat10, >-1
        djn.b -1, #10
        spl launch1
        jmp launch2
fang10  jmp STEP
m10fang jmp -1*(start+4045+9*STEP)+pit 
av10     mov.i #1, }1
dat10    dat 1, 1

for 12
        jmp 4400, 4090
rof


launch1 
        spl     c2
        spl     1,          <start+4000+123
        mov.i   -1,         0
        mov.i   -1,         0
        mov.i   -1,         0
 
phoenix2 spl     @phoenix2,   PSTEP
        mov.i   }phoenix2,   >phoenix2
nest2   spl     @nest2,      NSTEP
        mov.i   }nest2,      >nest2
egg2    spl     @egg2,       ESTEP
        mov.i   }egg2,       >egg2
        mov.i   ash2,        {3999
        mov.i   ash2,        }4001
ash2    dat.f   <2667,      <2*2667
        dat.f   <2667,      <2*2667
        dat.f   <2667,      <2*2667
        dat.f   <2667,      <2*2667
        dat.f   <2667,      <2*2667
        
for 12
        jmp 4400, 4090
rof
        
        spl #0, 0
p1      spl -1, 2
        mov -1, >-1
______________________________________________________________________________
The Hint

This will be the last hint in Core_ Warrior_'s attempt to introduce basic 
warrior strategies.  And we've saved the best for last, at least in my 
opinion.  Vampires such as Sucker, Twilight Pits, Request, Snake, Pyramid,
and probably a host of others, used to rule the hills of old.  But then came
A-indirect addressing making anti-vamping much easier to do.  Silk Warrior
by Jippo incorporated a-indirect bombing in his replicator, which greatly
improved a vampire resistance.  Soon the slavers were dropping of the hills
in droves.  Vampires were thought to be obselete, but Paulsson's myVamp 
continues to hold a top spot on the '94 hill so vamping could be your next 
effective strategy.  Or has Paulsson come up with something unexpected?  Code
for a version ( perhaps the one on the hill ) is included for your review.
Magnus is very busy and didn't have time to offer his comments.  I would if
I could, but someone has my corewar disk (I don't own a computer), plus the
server for my university account can't access the internet right now.  *sigh*

The following comments were taken from a _PUSH OFF_ by P.Kline.  Hope he
doesn't mind.  Edited for clarity ( just kidding, sheesh ).

Basically a pit-trapper works by making your processes jump into a rapid-
splitting, core-clearing, self-destroying, nasty bit of code.  You are forced
to split many many processes, thereby robbing your healthy processes of time.
You are forced to erase the core, destroying any surviving components.  And
you finally erase the pit itself, killing your remaining processes.

Vampire strategy goes back to one of the standard battle programs, 'Vampire', 
and was used successfully by Eugene P. Lilitko's Cowboy program to win the 
1988 tournament.  Here's a modern version of Vampire:

fang  jmp trap,4

inc   spl #3364, #-3364 ; start here
      add inc,fang
      mov fang,@fang
      jmp -2

trap  mov 10,<-10       ; Of course this wouldn't have a prayer in stunning
      spl -1            ; today's paper.  How about mov, spl -1, spl -1, 
      jmp -2            ; spl -1, jmp?

All vampires eventually cause their own processes to jump into the trap to 
speed up the core clear (and to guarantee one).

Vampire's strengths include small size, rapid bombing (with fangs), and 
complete core-clear.  Their most important feature, however is enslaving the 
opponent's processes to do their dirty work.
     
Variations include booting the code to separate the bomber from the trap,
putting the fang in different locations, multiple spl's to more rapidly 
overpower the opponent, and 'gates' to stop imps.

Areas to explore:
    What else can the pit do?
    Using multiple fang-bombers to better deal with stones.
    Evolving the fang-bomber into a repeating core-clear.
_____
myVamp by MAGNUS PAULSSON

;redcode-94
;name myVamp v3.7
;author Paulsson
;strategy Throw jmp's around at 2/3c.
;strategy Then a spl/spl/dat and djn coreclear.
;strategy All in the tiny space of 14 bytes!
;strategy Submitted: 30 september 95     
;assert CORESIZE > 1
;kill myVamp

;The vamp bomb is the best bomb, unless it fights a special oponent with
;anti vamp, most programs on the hill cant affod anti vamp.  Normal vamp 
;adds +step to a field, -step to b field of jmp then uses as bomb (once, to 
;b field) and pointer, myVamp also scans the a-field and bombs if not zero.
 
step    equ 3024                ;good step, mod 16
boot    equ     8*200           ;offset so that bomb/scan will be mod 8
org     start

trap    jmp             11      ;use a as pointer to the pit.
i       for     10
                dat.f   0, 0
rof
                spl             #0,<trap        ;real trap a bit away from
                 spl             5,0            ;trap line. note that b-field
                spl             #0,0            ;is none zero as the enemy is 
                spl             #0,0            ;trapped
                spl             #0,0
                spl             #0,0
                spl             #0,0
                spl             #0,0
                spl             #0,0
                jmp             -4,0
                
i       for     39-16
                dat.i   #1, i
rof
start   mov.i   }ptr,>ptr       ;boot away
i for 13
                mov.i   }ptr,>ptr
rof
                jmp             st+boot,1       ;start fighting
ptr             dat.f   c2,boot+c2

c2      spl.f   #b1, b2+2       ;pointer for coreclear, spl incase of djn'ed
st      add.f   s, c            
                mov.i   c, @c   ;bomb
                jmz.a   st, *c  ;scan other place
                mov.i   @0,*c   ;bomb
                mov.x   *c,*c   ;make sure bomb points right
exit    jmz.b   st, trap-boot   ;start clear if trap is hit or enemy trapped
b1      spl     #b2-c2, b2-c2+2 ;coreclear, same as myZizzor
                mov.i   *c2, >c2
                djn.f   -1, {c2-b2+c2-2
b3      dat.f   <-2666, <2667   ;a little something for Die Hard
                                ;most imps wont survive anyway.
b2      spl     #b3-c2, b2-c2+2
c       jmp     *trap-boot, 0   ;bomb and counter, standard vamp
s       dat.f   -step, step     ;step
i for 13
                dat.i   #1,1    ;filling it up
                dat.f   1,#1    
rof

We will be taking your suggestions for hints.  If any of you beginner's ( or
veterans for that matter ) would like to see a topic covered in more detail,
just ask.  
______________________________________________________________________________
Questions?  Concerns?  Comments?  Complaints?  Mail them to:
Beppe Bezzi <bezzi@iol.it> or Myer R Bremer <bremermr@ecn.purdue.edu>
© 2002-2005 corewar.info. Logo © C. Schmidt