Docstoc

The '94 Warrior #14

Document Sample
The '94 Warrior #14 Powered By Docstoc
					__ __| | | __ \ _ \ __| | | | | __/ _| _| |_|\___|

) _ \ | / ( | | \__

| |

\ \ \ \

\

/ / _` |

__|

_) __| | | _|

_ \

|___ __| _/ _|

\ \ \ / ( | | \_/\_/ \__,_|_|

| ( | | _|\___/ _|

November 30, 1994 Issue #14 _________________________________________________________________________ _____ _The_'94_Warrior_ is a monthly newsletter dedicated to supporting and encouraging the game of Corewars. This includes coverage of the more popular "hills" (which allow users anywhere on the Internet to compete against other users), and also by encouraging traffic in the rec.games.corewar newsgroup. The FAQ (Frequently Asked Questions) for the rec.games.corewar newsgroup is available through anonymous FTP to rtfm.mit.edu, as /pub/usenet/news.answers/games/corewar-faq.Z. There are also several tutorials on the '88 and '94 (draft) standard available on scotch.csua.berkeley.edu (128.32.43.51) that will greatly ease the process of becoming a proficient "redcoder." I would highly recommend referring to the FAQ if you are curious about exactly what Corewars is, or if you are unfamiliar with any of the terms used in this newsletter. _________________________________________________________________________ _____ CHANGES and CORRECTIONS: It looks as if we may soon have a version of pMARS that is capable of handling several warriors at the same time. (I, for one, would be very interested in seeing what types of warriors do well in that type of environment. :) The FAQ for the newsgroup has also been updated. Be sure to save a copy of the new one for your collection! _________________________________________________________________________ _____ The ICWS '94 Draft Hill: Standard: Core size: Max processes: Duration: Max entry length: '94 Draft (with extensions) 8000 instructions 8000 per program After 80,000 cycles, a tie is declared. 100 instructions

The # Age 1 9 2 43 3 15 4 63 5 179 6 244 7 185 8 245 9 93 10 556 11 37 12 533 13 26 14 31 15 186 16 72 17 38 18 2 19 5

current ICWS '94 Draft hill on "Pizza": %W/ %L/ %T Name 50/ 39/ 10 45/ 31/ 24 44/ 35/ 21 46/ 38/ 16 47/ 42/ 10 40/ 28/ 32 33/ 17/ 50 43/ 38/ 19 39/ 32/ 30 36/ 28/ 36 41/ 38/ 22 43/ 44/ 14 41/ 42/ 18 29/ 20/ 51 30/ 24/ 46 39/ 43/ 18 34/ 34/ 32 32/ 31/ 37 33/ 51/ 17 Taking names Torch t15 Stimpy 3.0 HeremScimitar Agony II Blue Funk 3 B-Panama X SJ-4 Rude Wind Blue Funk Leprechaun II Iron Gate 1.5 Drowning III Ryooki Silk Warrior 1.4 The Spanish Inquisition Killer Instinct II Jet Black Reptile Grasp v0.1d

Author P.Kline P.Kline Brant D. Thomsen A.Ivner,P.Kline Stefan Strack Steven Morrell Steven Morrell J.Layland P.Kline Steven Morrell Anders Ivner Wayne Sheppard Mike Nonemacher T.Hsu J.Pohjalainen Steven Morrell Anders Ivner M R Bremer & Jippo Brant D. Thomsen

Score 161 159 154 153 152 151 148 147 146 145 144 141 140 138 137 134 133 133 115

Of course, the most obvious change to this hill is the addition of Paul Kline's new warrior "Taking Names," which has been clinging to first place since its submission. ("Stimpy" has also jumped up several positions since I tacked a quickscanner onto the front of it. Check out the hint section of this newsletter if you'd like more details! ;)

_________________________________________________________________________ _____ The ICWS '94 Draft Experimental Hill: Standard: Core size: Max processes: Duration: Max entry length: The # Age 1 35 2 1 3 6 4 33 5 171 6 26 7 7 8 62 9 132 10 13 11 135 12 126 13 19 14 34 15 136 16 25 17 31 18 109 19 177 20 133 '94 Draft (with extensions) 55,440 instructions 10,000 per program After 500,000 cycles, a tie is declared. 200 instructions Score 161 158 152 150 149 148 147 145 144 143 142 137 136 136 133 133 132 131 131 131

current ICWS '94 Experimental (Big) hill on "Pizza": %W/ %L/ %T Name Author 46/ 32/ 22 47/ 36/ 17 34/ 16/ 50 34/ 18/ 48 44/ 38/ 19 42/ 36/ 22 46/ 44/ 10 43/ 41/ 16 44/ 45/ 11 30/ 16/ 54 34/ 25/ 41 38/ 39/ 23 39/ 42/ 19 38/ 41/ 21 30/ 27/ 43 29/ 26/ 45 29/ 25/ 47 40/ 49/ 11 31/ 31/ 38 ivscan6b Genocide 94x Big Phoenix 1.0 Aleph 1 Request-55440 Stimpy v2.0 Test Pyramid v5.3 Rave B4.1 Big Silk Warrior 1.0 Variation G-1 Vanity IIx Fscan Aleph 0 Splash 1 Blue Funk NotSoBigImps Squint Lucky 13 J.Layland Mike Nonemacher J.Pohjalainen Jay Han Brant D. Thomsen Brant D. Thomsen Stefan Strack Michael Constant Stefan Strack J.Pohjalainen Jay Han Stefan Strack Jay Han Jay Han Jay Han Steven Morrell James Layland Mike Nonemacher Stefan Strack Mike Nonemacher

29/ 27/ 44 Der Zweite Blitzkrieg - 9

This hill is unchanged since last month. _________________________________________________________________________ _____ The ICWS '88 Standard Hill: Standard: Core size: Max processes: Duration: Max entry length: The # Age 1 56 2 78 3 12 4 60 5 109 6 100 7 66 8 79 9 82 10 15 11 16 12 52 13 3 14 25 15 5 16 10 17 2 18 17 19 1 '88 8000 instructions 8000 per program After 80,000 cycles, a tie is declared. 100 instructions Author P.E.M & E.C. c w blue W. Mintardjo Mike Nonemacher Wayne Sheppard Stefan Strack Steven Morrell Brant D. Thomsen nandor sieben Anonymous Anonymous Steven Morrell Carlos Paredes Steven Morrell Wayne Sheppard Steven Morrell Steven Morrell Anonymous Mr. Jones Score 158 144 143 142 141 140 140 138 136 136 135 135 135 135 134 132 132 132 132

current Standard KotH hill on "Pizza": %W/ %L/ %T Name 42/ 26/ 32 44/ 44/ 13 32/ 21/ 47 32/ 21/ 47 43/ 45/ 12 40/ 41/ 19 29/ 19/ 51 39/ 40/ 21 26/ 15/ 59 28/ 19/ 53 27/ 19/ 53 37/ 39/ 23 34/ 33/ 32 27/ 18/ 55 27/ 19/ 54 28/ 24/ 47 37/ 41/ 22 26/ 19/ 55 24/ 16/ 61 Yop La Boum v2.1 Dragon Spear Sphinx v5.1 Der Zweite Blitzkrieg Iron Gate 1.5 Vanity II CAPS KEY IS STUCK AGAIN Request v2.0 ttti The Plauge NC Killer Christopher Annihilator v2.1 Blue Funk 88 Night Crawler B-Panama V.i Titled Imprimis 6 Peace

20 98

34/ 38/ 28

Keystone t21

P.Kline

131

The '88 hill hasn't aged much (1), but don't let that fool you. This hill is still very busy. The old standards still appear to be holding their own! _________________________________________________________________________ _____ The ICWS '94 Beginner Hill: Standard: Core size: Max processes: Duration: Max entry length: The # Age 1 21 2 222 3 89 4 5 5 18 6 64 7 143 8 9 9 1 10 65 11 85 12 206 13 92 14 10 15 14 16 163 17 11 '94 Draft (with extensions) 8000 instructions 8000 per program After 80,000 cycles, a tie is declared. 100 instructions Author Mr. Jones Ryan Case Brant Thomsen Mr. Jones Brian Zellner Brian Zellner Bharat Mediratta Bharat Mediratta Chris Hodson Brian Zellner Marc Schefer Hari J.P.Laurin Matthias Wollnik Mr. Jones Tim Scheer Matthias Wollnik Score 185 181 176 160 150 144 143 142 138 134 131 127 126 125 124 123 123

current Beginner KotH hill on "Pizza": %W/ %L/ %T Name 58/ 31/ 10 57/ 33/ 10 56/ 37/ 7 Samba2.2 Viewmaster4.0 Ecstacy (XTC) Peace Ox v1.0 Rabid Dwarfs v1.3 Slate, v0.3a Bloody Fang v2.1 AB Scanner 1.4a Green Knight v1.7 Count Zero #1 It Rubarbe et mort-vivant War Machine v2.65 Paperous Cat v2.0 War Machine v2.6

35/ 10/ 56 39/ 27/ 34 28/ 12/ 60 33/ 23/ 44 40/ 37/ 23 37/ 36/ 27 35/ 36/ 29 33/ 34/ 33 39/ 50/ 12 26/ 25/ 49 24/ 23/ 53 21/ 17/ 62 38/ 52/ 10 23/ 24/ 53

18 3 19 12 20 53

25/ 30/ 45 20/ 26/ 53 18/ 28/ 54

strange carpet War Machine v2.5 Mostly Harmless

Erik Hughes Matthias Wollnik Frank J. T. Wojcik

121 114 109

Congratulations are due to Mr. Jones: his program "Peace" is not only doing well on the beginner's hill, but has also made a place for itself on the "Standard" hill. (At least, I assume it's the same program.) Welcome to the Big League! _________________________________________________________________________ _____ HINTS and HELPS: For the hint this month, I will be discussing quick-scans. Scanning, bombing, and movement are often talked about in terms of "C", where "C" is one instruction per turn. Standard scanning techniques will allow you to scan one location every two turns, or two instructions every three turns, giving you a scanning speed of 50% or 67%. (Granted, the numbers can look even better if you account for mutilation of the core as a side effect as well.) However, with a quick-scan, you can scan at the fastest possible speed -- 2 instructions per turn, or 200%. The disadvantage is that you cannot use this scan in a loop (without reducing the speed), so even a short scan can be several instructions long. The original quick-scan, as used in Paul Kline's QuickFreeze, consists of alternating CMP (SEQ) and MOV statements. When each CMP instruction is executed, the following MOV instruction will only be executed if the two instructions compared are not equal. Each MOV instruction, when executed, will store the values for the previous comparison in a standard location. This allows you to scan two locations for every two instructions, and keep track of the last location where you found something of interest. When the series of CMP instructions is done executing, the process can then check the standard location referenced by the MOV instructions to see if any of the comparisons failed. If any did, then your program can take advantage of this knowledge by attacking whatever was found. Since what was found is

very likely to be your opponent's original code, it is often possible to harm your opponent while they are still getting started. (Imp-Spirals, for example, take a long time to setup.) Below is a quick-scan that will run under the '88 standard. You may need to shorten it, as it only leaves eleven lines for the program you will execute after the quick-scan. My recommendation would be to quick-scan fewer locations if your warrior needs space for a few more instructions. ;redcode ;name Quick-Scan '88 Prototype ;author Brant D. Thomsen ;strategy Add this to the front of your warrior, ;strategy and see if it improves your score. ;assert CORESIZE == 8000 space qbomb scan equ equ cmp mov cmp mov cmp mov cmp mov cmp mov cmp mov cmp mov cmp mov cmp mov cmp mov cmp mov cmp mov cmp mov cmp mov cmp mov cmp (8000/81) 6 ; Step when scanning for code. ; Step when bombing whatever we found.

space*1+bottom, space*41+bottom #space*1+bottom-found, found space*2+bottom, space*42+bottom #space*2+bottom-found, found space*3+bottom, space*43+bottom #space*3+bottom-found, found space*4+bottom, space*44+bottom #space*4+bottom-found, found space*5+bottom, space*45+bottom #space*5+bottom-found, found space*6+bottom, space*46+bottom #space*6+bottom-found, found space*7+bottom, space*47+bottom #space*7+bottom-found, found space*8+bottom, space*48+bottom #space*8+bottom-found, found space*9+bottom, space*49+bottom #space*9+bottom-found, found space*10+bottom, space*50+bottom #space*10+bottom-found, found space*11+bottom, space*51+bottom #space*11+bottom-found, found space*12+bottom, space*52+bottom #space*12+bottom-found, found space*13+bottom, space*53+bottom #space*13+bottom-found, found space*14+bottom, space*54+bottom #space*14+bottom-found, found space*15+bottom, space*55+bottom #space*15+bottom-found, found space*16+bottom, space*56+bottom

mov cmp mov cmp mov cmp mov cmp mov jmn cmp mov cmp mov cmp mov cmp mov cmp mov cmp mov cmp mov cmp mov cmp mov cmp mov cmp mov cmp mov cmp mov cmp mov cmp mov cmp mov cmp mov cmp mov cmp mov cmp mov jmz

#space*16+bottom-found, found space*17+bottom, space*57+bottom #space*17+bottom-found, found space*18+bottom, space*58+bottom #space*18+bottom-found, found space*19+bottom, space*59+bottom #space*19+bottom-found, found space*20+bottom, space*60+bottom #space*20+bottom-found, found found, found ; Get out early if found something.

space*21+bottom, space*61+bottom #space*21+bottom-found, found space*22+bottom, space*62+bottom #space*22+bottom-found, found space*23+bottom, space*63+bottom #space*23+bottom-found, found space*24+bottom, space*64+bottom #space*24+bottom-found, found space*25+bottom, space*65+bottom #space*25+bottom-found, found space*26+bottom, space*66+bottom #space*26+bottom-found, found space*27+bottom, space*67+bottom #space*27+bottom-found, found space*28+bottom, space*68+bottom #space*28+bottom-found, found space*29+bottom, space*69+bottom #space*29+bottom-found, found space*30+bottom, space*70+bottom #space*30+bottom-found, found space*31+bottom, space*71+bottom #space*31+bottom-found, found space*32+bottom, space*72+bottom #space*32+bottom-found, found space*33+bottom, space*73+bottom #space*33+bottom-found, found space*34+bottom, space*74+bottom #space*34+bottom-found, found space*35+bottom, space*75+bottom #space*35+bottom-found, found space*36+bottom, space*76+bottom #space*36+bottom-found, found space*37+bottom, space*77+bottom #space*37+bottom-found, found space*38+bottom, space*78+bottom #space*38+bottom-found, found space*39+bottom, space*79+bottom #space*39+bottom-found, found space*40+bottom, space*80+bottom #space*40+bottom-found, found warrior, found ; Don't Quick-bomb if nothing found.

found

cmp jmp add

bottom, 0 2

; Find which instruction is not blank. ; CMP / JMP 2 is the '88 equivalent of SNE.

#40*space, found ; Goto second location if first is blank. jump, @found ; Use a SPL/JMP bomb. split, <found #(qbomb+1), found forward, @found ; Keep bombing while B-Field is not 0.

forward mov mov add jmn ; ; ; ; ;

Regular warrior starts here. The first instruction should be labeled "warrior". Must include the code for a two-line bomb. (Or, of course, you are welcome to use a different bomb, such as a single DAT statement.) 0, <-100 0 -1 scan ; Replace this with your own code.

warrior jmp split jump bottom spl jmp end

(One trick QuickFreeze used, that I haven't seen since, was to have two processes execute two separate quick-scans in parallel. That way, the program won't be killed if a bomber drops a DAT statement onto one of the CMP instructions in the quick-scan. If you can handle having more than one process executing the code for your warrior, this could be a good idea.) A slightly different type of quick-scan -- first suggested by Wayne Sheppard -- is possible if you use the SNE instruction. (F.Y.I.: The SNE instruction is not mentioned in the '94 draft standard as it currently stands.) By using a combination of SNE and SEQ instructions, the quickscan code size can be reduced by 25%. The problem with using a SNE/SEQ quickscan, instead of a standard quick-scan, is that there are four possible locations where the instruction you found could be located. A standard quick-scan narrows it down to two. The following quick-scan is very similar to the one I used with Stimpy 3.0. It uses ranges that are a set distance away from each other, so that I can use a small loop to re-find the instruction located by the scan. (I use an "X" instead of a "F" in the comparison to guarantee that the instruction found

will have a non-zero value in one of its fields.) Once this instruction has been found (again), the the block of code surrounding it is systematically bombed. This code, and the code above, is slightly longer than it needs to be, as I have gone out of my way to make the quick-scan as fast as possible. Still, there are currently up to 25 lines free for your code and bootstrapping procedure. (Bootstrapping is highly recommended, since a scanner will find you really quickly otherwise.) ;redcode-94 ;name Quick-Scan '94 Prototype ;author Brant D. Thomsen ;strategy Add this to the front of your warrior, ;strategy and see if it improves your score. space qbomb scan equ equ sne.X seq.X mov sne.X seq.X mov sne.X seq.X mov sne.X seq.X mov sne.X seq.X mov sne.X seq.X mov sne.X seq.X mov sne.X seq.X mov sne.X seq.X mov sne.X seq.X mov (CORESIZE/81) 6 ; Step when scanning for code. ; Step when bombing whatever we found.

space*1+bottom, space*3+bottom space*2+bottom, space*4+bottom #space*1+bottom-found, found space*5+bottom, space*7+bottom space*6+bottom, space*8+bottom #space*5+bottom-found, found space*9+bottom, space*11+bottom space*10+bottom, space*12+bottom #space*9+bottom-found, found space*13+bottom, space*15+bottom space*14+bottom, space*16+bottom #space*13+bottom-found, found space*17+bottom, space*19+bottom space*18+bottom, space*20+bottom #space*17+bottom-found, found space*21+bottom, space*23+bottom space*22+bottom, space*24+bottom #space*21+bottom-found, found space*25+bottom, space*27+bottom space*26+bottom, space*28+bottom #space*25+bottom-found, found space*29+bottom, space*31+bottom space*30+bottom, space*32+bottom #space*29+bottom-found, found space*33+bottom, space*35+bottom space*34+bottom, space*36+bottom #space*33+bottom-found, found space*37+bottom, space*39+bottom space*38+bottom, space*40+bottom #space*37+bottom-found, found

jmn.B sne.X seq.X mov sne.X seq.X mov sne.X seq.X mov sne.X seq.X mov sne.X seq.X mov sne.X seq.X mov sne.X seq.X mov sne.X seq.X mov sne.X seq.X mov sne.X seq.X mov jmn.B jmp found.

found, found

; Get out early if found something.

space*41+bottom, space*43+bottom space*42+bottom, space*44+bottom #space*41+bottom-found, found space*45+bottom, space*47+bottom space*46+bottom, space*48+bottom #space*45+bottom-found, found space*49+bottom, space*51+bottom space*50+bottom, space*52+bottom #space*49+bottom-found, found space*53+bottom, space*55+bottom space*54+bottom, space*56+bottom #space*53+bottom-found, found space*57+bottom, space*59+bottom space*58+bottom, space*60+bottom #space*57+bottom-found, found space*61+bottom, space*63+bottom space*62+bottom, space*64+bottom #space*61+bottom-found, found space*65+bottom, space*67+bottom space*66+bottom, space*68+bottom #space*65+bottom-found, found space*69+bottom, space*71+bottom space*70+bottom, space*72+bottom #space*69+bottom-found, found space*73+bottom, space*75+bottom space*74+bottom, space*76+bottom #space*73+bottom-found, found space*77+bottom, space*79+bottom space*78+bottom, space*80+bottom #space*77+bottom-found, found found, found warrior ; Quick-bomb if found something. ; Execute regular code, because nothing

add #space, found found jmz.F -1, 0 something. mov.B found, backwd

; Goto the location where we found ; Save this value for use in backward bomb.

forward mov.I split, >found mov.I jump, @found add #(qbomb-1), found jmn.F forward, @found sub #(2*qbomb), backwd ; Don't re-bomb over forward-scan.

backwd mov.I jump, 0 mov.I split, <backwd sub #(qbomb-1), backwd

jmn.F ; ; ; ; ;

backwd, @backwd

Regular warrior starts here. The first instruction should be labeled "warrior". Must include the code for a two-line bomb. (Or, of course, you are welcome to use a different bomb, such as a single DAT statement.) #0, <-100 #0 -1 ; Replace this with your own code.

warrior jmp split jump spl jmp

bottom end scan _________________________________________________________________________ _____ Looking to the Future: Merry Christmas! This newsletter is published monthly. As always, your comments, suggestions, criticisms, and submissions are encouraged and appreciated.


				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:12
posted:7/18/2009
language:English
pages:12