From: dhillismail@netscape.net (Dave Hillis) Subject: Re: Redcoders Frenzy 12: The Limited Distance Round ***Announcement**** Date: 2 Aug 2003 08:26:52 -0700 Message-ID: <5d6847b2.0308020726.3e2aea9e@posting.google.com> dhillismail@netscape.net (Dave Hillis) wrote in message news:<5d6847b2.0307191611.56d1a02@posting.google.com>... > > .............................. > > . . > > . The Limited Distance Round . > > . . > > .............................. > > > > RE: read/write limits, Redcoders Frenzy, and Corewin > > I am hacking up exhaust so I can evolve some entries for the next round > of the contest. (I hope to make it available after it's wrung out.) I have a modified version of exhaust for the contest, some code to save one from having to run some tie-battles, a small collection of circa-1992 X-hill warriors, and a version of my evolver program Redrace that seems to produce respectable warriors (although Shotgun and Sonic Boom rip them all to shreds). Would anyone like any of these? I mean't to offer earlier. Dave Hillis From: Sascha Zapf Subject: Re: Redcoders Frenzy 12: The Limited Distance Round ***Announcement**** Date: 2 Aug 2003 20:57:48 -0400 Message-ID: <1059861635.3f2c3483889c6@netmail2.netcologne.de> Zitat von Dave Hillis : > dhillismail@netscape.net (Dave Hillis) wrote in message > news:<5d6847b2.0307191611.56d1a02@posting.google.com>... > > > .............................. > > > . . > > > . The Limited Distance Round . > > > . . > > > .............................. > > > > > > > RE: read/write limits, Redcoders Frenzy, and Corewin > > > > I am hacking up exhaust so I can evolve some entries for the next round > > of the contest. (I hope to make it available after it's wrung out.) > > I have a modified version of exhaust for the contest, some code > to save one from having to run some tie-battles, a small collection of > circa-1992 X-hill warriors, and a version of my evolver program > Redrace that seems to produce respectable warriors (although Shotgun > and Sonic Boom rip them all to shreds). > Would anyone like any of these? I mean't to offer earlier. > > Dave Hillis > Send the Link to Fizmo, he can put them onto the Rules/Hints Site. Sascha ------------------ Powered by NetMail From: Koth Subject: KOTH.ORG: Status - 94 No Pspace 08/04/03 Date: 4 Aug 2003 10:30:09 -0400 Message-ID: <200308040409.h74490J9026171@gevjon.ttsg.com> Weekly Status on 08/04/03 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG 94 No Pspace CoreWar Hill: Last battle concluded at : Sun Aug 3 21:37:56 EDT 2003 # %W/ %L/ %T Name Author Score Age 1 43/ 41/ 16 Return of Vanquisher Lukasz Grabun 145 578 2 42/ 43/ 15 Toxic Spirit Philip Thorne 142 501 3 45/ 48/ 7 Recon 2 David Moore 142 270 4 42/ 44/ 14 Hazy Test 63 Steve Gunnell 140 591 5 31/ 25/ 44 Thunderstrike Lukasz Grabun 137 421 6 29/ 23/ 49 Son of Vain Oversby/Pihlaja 135 1816 7 39/ 44/ 17 Fuse Myer Bremer 134 57 8 41/ 48/ 11 Jinx 2 Christian Schmidt 134 48 9 32/ 31/ 37 Digitalis 2003 Christian Schmidt 134 98 10 26/ 19/ 55 Yorba Roy van Rijn 133 24 11 29/ 25/ 46 Candy II Lukasz Grabun 133 196 12 29/ 26/ 45 Now you're in trouble!!! John Metcalf 132 184 13 29/ 27/ 43 Reepicheep Grabun/Metcalf 131 1047 14 38/ 47/ 15 Studie 10/3 Sascha Zapf 130 5 15 27/ 24/ 49 Cascade Roy van Rijn 130 2 16 22/ 14/ 64 unheard-of Christian Schmidt 129 147 17 28/ 28/ 44 Numb Roy van Rijn 129 203 18 26/ 25/ 49 Skin TNG V8 bvowk 127 11 19 37/ 48/ 15 test schmoe 126 17 20 29/ 34/ 37 Destiny: Unknown Christian Schmidt 124 1 21 20/ 21/ 60 2334893-3990-xt430-2-eai3 bvowk 118 0 From: Koth Subject: KOTH.ORG: Status - ICWS Experimental 94 08/04/03 Date: 4 Aug 2003 10:30:14 -0400 Message-ID: <200308040406.h74460J0026110@gevjon.ttsg.com> Weekly Status on 08/04/03 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG ICWS Experimental 94 CoreWar Hill: Last battle concluded at : Sun Aug 3 15:44:36 EDT 2003 # %W/ %L/ %T Name Author Score Age 1 42/ 36/ 22 The X Machine Zul Nadzri 149 9 2 45/ 43/ 12 Fire and Ice II David Moore 146 98 3 27/ 8/ 65 Evol Cap 4 X John Wilkinson 146 267 4 42/ 38/ 20 Eliminator X Zul Nadzri 146 10 5 41/ 37/ 22 Black Moods Ian Oversby 144 194 6 27/ 10/ 63 Denial David Moore 144 139 7 38/ 34/ 28 Trefoil F 13 Steve Gunnell 143 81 8 40/ 39/ 21 Giant Hazy Test 13 Steve Gunnell 141 25 9 38/ 35/ 27 Controlled Aggression Ian Oversby 141 198 10 29/ 18/ 53 Katafutr Michal Janeczek 139 138 11 31/ 25/ 44 Venom v0.2b Christian Schmidt 138 220 12 32/ 27/ 41 Olivia X Ben Ford 138 79 13 22/ 8/ 70 Evolve X v4.0 John Wilkinson 136 215 14 26/ 17/ 56 Kin John Metcalf 136 106 15 31/ 28/ 41 KAT v5 Dave Hillis 135 130 16 29/ 24/ 47 Glenstorm John Metcalf 135 60 17 36/ 39/ 25 Ogre Christian Schmidt 134 146 18 33/ 35/ 32 Big Pspacer G.Labarga 132 5 19 39/ 46/ 16 Kenshin X 45 Steve Gunnell 132 41 20 37/ 44/ 19 Piltdown (2003.8) Philip Thorne 129 1 21 2/ 98/ 0 _ _ 7 0 From: Koth Subject: KOTH.ORG: Status - MultiWarrior 94 08/04/03 Date: 4 Aug 2003 10:30:18 -0400 Message-ID: <200308040403.h74430iL026039@gevjon.ttsg.com> Weekly Status on 08/04/03 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG Multiwarrior 94 CoreWar Hill: Last battle concluded at : Wed Jul 30 19:34:10 EDT 2003 # Name Author Score Age 1 Her Majesty P.Kline 25 310 2 D-clearM Ken Espiritu 16 291 3 Blowtorch Test B 41 Steve Gunnell 16 7 4 not king of the hill FatalC 14 36 5 hawk John Metcalf 12 34 6 Dettol Test 26 Steve Gunnell 12 71 7 Djinn Test 13 Steve Gunnell 10 27 8 my new tiny warrior John Metcalf 7 82 9 Bugtown test C 57 Steve Gunnell 5 11 10 NewsPaper Test A 25 Steve Gunnell 0 1 11 Spray 'n Wipe 4a 25 Steve Gunnell 0 0 From: Koth Subject: KOTH.ORG: Status - Standard 08/04/03 Date: 4 Aug 2003 10:36:29 -0400 Message-ID: <200308040400.h744008M025982@gevjon.ttsg.com> Weekly Status on 08/04/03 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG Standard KotH CoreWar Hill : Last battle concluded at : Sun Jun 22 07:22:28 EDT 2003 # %W/ %L/ %T Name Author Score Age 1 38/ 22/ 40 Quicksilver '88 Michal Janeczek 154 8 2 44/ 38/ 17 Tangle Trap 3 David Moore 150 1 3 35/ 22/ 43 Freight Train David Moore 147 173 4 34/ 22/ 44 Test Alexander (Sasha) Wa 145 112 5 33/ 23/ 44 Guardian Ian Oversby 143 172 6 41/ 41/ 19 My 1st try Christian Schmidt 140 4 7 43/ 45/ 12 vm5 Michal Janeczek 140 7 8 36/ 32/ 32 vala John Metcalf 139 95 9 43/ 50/ 7 Scan Test C 6 Steve Gunnell 137 11 10 30/ 24/ 46 Pixie 88 Lukasz Grabun 136 2 11 36/ 36/ 29 Gymnosperm trickery Dave Hillis 135 59 12 40/ 47/ 13 Blur '88 Anton Marsden 134 210 13 27/ 20/ 53 Test I Ian Oversby 134 229 14 37/ 41/ 22 PacMan David Moore 134 202 15 41/ 48/ 12 Foggy Swamp Beppe Bezzi 133 169 16 38/ 43/ 18 '88 test IV John Metcalf 133 66 17 26/ 20/ 54 EV Paper John K Wilkinson 132 186 18 29/ 26/ 46 Shish-Ka-Bob Ben Ford 131 128 19 30/ 29/ 41 sIMPly.Red v0.95 Leonardo Humberto 130 130 20 37/ 47/ 16 Stasis David Moore 126 280 21 16/ 57/ 27 Rubber Duck Roy van Rijn 76 0 From: "Joshua Hudson" Subject: Re: Redcoders Frenzy Date: 5 Aug 2003 10:09:02 -0400 Message-ID: Accidently deleted my link to Redcoder's Frenzy. Care to resend? _________________________________________________________________ STOP MORE SPAM with the new MSN 8 and get 2 months FREE* http://join.msn.com/?page=features/junkmail From: fizmo_master@yahoo.com (Fizmo) Subject: Re: Redcoders Frenzy Date: 6 Aug 2003 12:02:59 -0700 Message-ID: <9f53b5fb.0308061102.35e1e6d3@posting.google.com> Yes of course :) The new tournament page is: http://www.corewar.info/tournament/cwt.htm but I'll try to keep the fizmo_master page updated "Joshua Hudson" wrote in message news:... > Accidently deleted my link to Redcoder's Frenzy. Care to resend? > > _________________________________________________________________ > STOP MORE SPAM with the new MSN 8 and get 2 months FREE* > http://join.msn.com/?page=features/junkmail From: fizmo_master@yahoo.com (Fizmo) Subject: Re: Redcoders Frenzy 12: The Limited Distance Round ***Update / new Deadline**** Date: 6 Aug 2003 12:12:51 -0700 Message-ID: <9f53b5fb.0308061112.58c5e3ef@posting.google.com> ................................................................... . . . _____ _ _ . . | __ \ | | | | . . | |__) |___ __| | ___ ___ __| | ___ _ __ ___ . . | _ // _ \/ _` |/ __/ _ \ / _` |/ _ \ '__/ __| . . | | \ \ __/ (_| | (_| (_) | (_| | __/ | \__ \ . . |_| \_\___|\__,_|\___\___/ \__,_|\___|_| |___/ . . . . ______ . . | ____| . . | |__ _ __ ___ _ __ _____ _ . . | __| '__/ _ \ '_ \|_ / | | | . . | | | | | __/ | | |/ /| |_| | . . |_| |_| \___|_| |_/___|\__, | . . __/ | . . |___/ . ................................................................... The ongoing corewar tournament __ ___ /_ |__ \ | | ) | | | / / | |/ /_ |_|____| .............................. . . . The Limited Distance Round . . . .............................. Detailed information are available on the new The Corewar Info Page: http://www.corewar.info/tournament/cwt.htm I've added also a small hint for a better understanding of the rules: http://www.corewar.info/tournament/12.htm ................................................................... . _ _ _ _ . . __| |___ __ _ __| | (_)_ _ ___ . . / _` / -_) _` / _` | | | ' \/ -_) . . \__,_\___\__,_\__,_|_|_|_||_\___| . . . ................................................................... NEW NEW: August 17, 2003 -------------------------------------------------------------- Please notify: You have to send your entries to me -------------------------------------------------------------- From: fizmo_master@yahoo.com (Fizmo) Subject: Venomous Philtre Date: 6 Aug 2003 23:24:15 -0700 Message-ID: <9f53b5fb.0308062224.469e5cef@posting.google.com> Hi all, here is another interesting piece of code. It's basically an unheard-of clone but instead of paper/imps it uses a 'Moore-style' paper as found in Sunset's stone/paper component. I've optimized the constants to give this warrior a good killing rate against highly optimized anti-imp papers and coreclear papers. The anti-imp bomb gives also additional wins against stone/imps. However, it is quite vulnerable against oneshots and blur-style scanner. ;redcode-94nop ;name Venomous Philtre ;author Christian Schmidt ;strategy using magic ingredients ;strategy lets paper burn and iron rust ;assert 1 ;kill test sAway equ 955 pAway equ 5041 pStep equ 558 sStep equ 2579 xStep equ 1729 dStep equ 5789 pGo spl 2, }qC qTab2 spl 1, }qD spl 1, }qE mov.i -1 spl #sStep, >-sStep mov {sStep, {-sStep+1 add -2, -1 pEnd djn.f @0, {-2 for 11 dat 0, 0 rof pNext spl xStep, {pThis mov }pThis, }pNext mov pDat, >dStep pThis mov pNext+6, }pNext jmz.f pNext, *pThis pDat dat <2667, <5334 for 10 dat 0, 0 rof dat 0, }qA qTab1 dat 0, }qB for 27 dat 0, 0 rof qX equ 3080 qA equ 3532 qB equ 2051 qC equ 6177 qD equ 4696 qE equ 3215 qF equ 583 qStep equ 7 qTime equ 16 qOff equ 87 qBomb dat {qOff, qF qGo sne qPtr+qX*qE, qPtr+qX*qE+qE seq Here's my first real attempt at a warrior. Could people please tell me how this is? ;redcode-94 ;name Divide and Conquer ;author Endersdouble ;strategy Many, many, widely spaced imps. Wipes (hopefully) enemies, impgates kill ;assert CORESIZE==8000 start spl aaa bimp: mov.i impkill,-1 jmp: bimp imp: mov.i 0,1 impkill: dat 0,0 offset: dat 4000,-4000 reset: dat 4000,-4000 min: dat 9,-9 aaa: spl impp impgen: mov.i imp,*offset mov.i: imp, @offset div.f: #2, -3 slt: offset, min jmp: impgen sub.f: #1,reset mov: reset, offset jmp: impgen impp: mov.i imp,2 jmp: -1 end If I have done this right, what it should do is: create an imp gate at rear create an imp gen at front start loop at center, which places imp bombs at opposite side of core, followed by halfway across on both sides, and so on, and so on. When it would hit the warrior, it resets, first slightly offsetting the attack positions. Will this work at all? Also, minor question: dat 5,5 div #2,-1 will this produce dat 2,2 or dat 3,3 From: waknuk@yahoo.com (Philip Thorne) Subject: Re: Beginner Warrior...help? Date: 7 Aug 2003 22:40:00 -0700 Message-ID: <4ee41bd6.0308072140.ffe8edc@posting.google.com> wackoyacko2000@yahoo.com (Andrew Hunter) wrote in message news:<112f3b73.0308071103.178d50c2@posting.google.com>... > Here's my first real attempt at a warrior. Could people please tell > me how this is? Welcome, > ;redcode-94 > ;name Divide and Conquer > ;author Endersdouble > ;strategy Many, many, widely spaced imps. Wipes (hopefully) enemies, > impgates kill > ;assert CORESIZE==8000 > start spl aaa > bimp: mov.i impkill,-1 > jmp: bimp > imp: mov.i 0,1 > impkill: dat 0,0 > offset: dat 4000,-4000 > reset: dat 4000,-4000 > min: dat 9,-9 > aaa: spl impp > impgen: mov.i imp,*offset > mov.i: imp, @offset > div.f: #2, -3 > slt: offset, min > jmp: impgen > sub.f: #1,reset > mov: reset, offset > jmp: impgen > impp: mov.i imp,2 > jmp: -1 > end > If I have done this right, what it should do is: > create an imp gate at rear > create an imp gen at front > start loop at center, which places imp bombs at opposite side of core, > followed by halfway across on both sides, and so on, and so on. When > it would hit the warrior, it resets, first slightly offsetting the > attack positions. > Will this work at all? > Also, minor question: > > dat 5,5 > div #2,-1 > will this produce > dat 2,2 > or > dat 3,3 Easy one first. Simplist is to try it in MARS. Here I use pmars from the command line: === start === pbt@waknuk:~/corewar/bench$ pmars -e - dat 5,5 div #2,-1 end 1 Program "Unknown" (length 2) by "Anonymous" ORG START DAT.F $ 5, $ 5 START DIV.AB # 2, $ -1 00001 DIV.AB # 2, $ -1 (cdb) s 00002 (cdb) l 0,2 00000 DAT.F $ 5, $ 2 00001 DIV.AB # 2, $ -1 00002 === end === The "end 1" is to let pmars know to start executing at the second instruction (0 is the first). After "end 1" you need type either CTRL-Z (Windows) or CTRL-D (if using UNIX, linux etc). Notice how pmars translates the input. In particular "div" is short for "DIV.AB" which is why this line divides the B operand of the "dat 5,5" instruction (i.e. 5) by the A operand of the "div" instruction (i.e. 2). As pmars math integer division is used so 5/2 = 2. To divide both the A & B operands use "div.f" instead - if you're surprised by the result recall that .f acts on both target operands using both source operands. Divide and Conquer splits core once but then bombs one-half linearly in a Dwarf-like fashion while clearing backwards through the other half. Try running it through one of the graphical MARS's e.g. (after removing most or all of the ':'s) pmars from http://www.koth.org/pmars/ or the newer and friendlier but not yet mature Corewin http://www.geocities.com/corewin2/ I recommend Ilmari's beginner's guide http://www.sci.fi/~iltzu/corewar/ Phil B. Message-ID: From: anton@paradise.net.nz (Anton Marsden) Subject: Core War Frequently Asked Questions (rec.games.corewar FAQ) Date: 09 Aug 2003 10:12:53 GMT Archive-name: games/corewar-faq Last-Modified: September 4, 1999 Version: 4.2 URL: http://homepages.paradise.net.nz/~anton/cw/corewar-faq.html Copyright: (c) 1999 Anton Marsden Maintainer: Anton Marsden Posting-Frequency: once every 2 weeks Core War Frequently Asked Questions (rec.games.corewar FAQ) These are the Frequently Asked Questions (and answers) from the Usenet newsgroup rec.games.corewar. A plain text version of this document is posted every two weeks. The latest hypertext version is available at http://homepages.paradise.net.nz/~anton/cw/corewar-faq.html and the latest plain text version is available at http://homepages.paradise.net.nz/~anton/cw/corewar-faq.txt. This document is currently being maintained by Anton Marsden (anton@paradise.net.nz). Last modified: Sat Sep 4 00:22:22 NZST 1999 ------------------------------------------------------------------------ To Do * Add the new No-PSpace '94 hill location * Add online location of Dewdney's articles * Make question 17 easier to understand. Add a state diagram? * Add info about infinite hills, related games (C-Robots, Tierra?, ...) * New question: How do I know if my warrior is any good? Refer to beginners' benchmarks, etc. * Add a Who's Who list? * Would very much like someone to compile a collection of the "revolutionary" warriors so that beginners can see how the game has developed over the years. Mail me if interested. ------------------------------------------------------------------------ What's New * Changed primary location of FAQ (again!) * Changed Philip Kendall's home page address. * Updated list server information * Changed primary location of FAQ * Vector-launching code was fixed thanks to Ting Hsu. * Changed the location of Ryan Coleman's paper (LaunchPad -> Launchpad) * Changed pauillac.inria.fr to para.inria.fr ------------------------------------------------------------------------ Table of Contents 1. What is Core War 2. Is it "Core War" or "Core Wars"? 3. Where can I find more information about Core War? 4. Core War has changed since Dewdney's articles. Where do I get a copy of the current instruction set? 5. What is ICWS'94? Which simulators support ICWS'94? 6. What is the ICWS? 7. What is Core Warrior? 8. Where are the Core War archives? 9. Where can I find a Core War system for ...? 10. Where can I find warrior code? 11. I do not have FTP. How do I get all this great stuff? 12. I do not have access to Usenet. How do I post and receive news? 13. Are there any Core War related WWW sites? 14. What is KotH? How do I enter? 15. Is it DAT 0, 0 or DAT #0, #0? How do I compare to core? 16. How does SLT (Skip if Less Than) work? 17. What is the difference between in-register and in-memory evaluation? 18. What is P-space? 19. What does "Missing ;assert .." in my message from KotH mean? 20. How should I format my code? 21. Are there any other Core War related resources I should know about? 22. What does (expression or term of your choice) mean? 23. Other questions? ------------------------------------------------------------------------ 1. What is Core War? Core War is a game played by two or more programs (and vicariously by their authors) written in an assembly language called Redcode and run in a virtual computer called MARS (for Memory Array Redcode Simulator). The object of the game is to cause all processes of the opposing program to terminate, leaving your program in sole posession of the machine. There are Core War systems available for most computer platforms. Redcode has been standardised by the ICWS, and is therefore transportable between all standard Core War systems. The system in which the programs run is quite simple. The core (the memory of the simulated computer) is a continuous array of instructions, empty except for the competing programs. The core wraps around, so that after the last instruction comes the first one again. There are no absolute addresses in Core War. That is, the address 0 doesn't mean the first instruction in the memory, but the instruction that contains the address 0. The next instruction is 1, and the previous one obviously -1. However, all numbers are treated as positive, and are in the range 0 to CORESIZE-1 where CORESIZE is the amount of memory locations in the core - this means that -1 would be treated as CORESIZE-1 in any arithmetic operations, eg. 3218 + 7856 = (3218 + 7856) mod CORESIZE. Many people get confused by this, and it is particularly important when using the SLT instruction. Note that the source code of a program can still contain negative numbers, but if you start using instructions like DIV #-2, #5 it is important to know what effect they will have when executed. The basic unit of memory in Core War is one instruction. Each Redcode instruction contains three parts: * the opcode * the source address (a.k.a. the A-field) * the destination address (a.k.a. the B-field) The execution of the programs is equally simple. The MARS executes one instruction at a time, and then proceeds to the next one in the memory, unless the instruction explicitly tells it to jump to another address. If there is more than one program running, (as is usual) the programs execute alternately, one instruction at a time. The execution of each instruction takes the same time, one cycle, whether it is MOV, DIV or even DAT (which kills the process). Each program may have several processes running. These processes are stored in a task queue. When it is the program's turn to execute an instruction it dequeues a process and executes the corresponding instruction. Processes that are not killed during the execution of the instruction are put back into the task queue. Processes created by a SPL instruction are added to the task queue after the creating process is put back into the task queue. [ToC] ------------------------------------------------------------------------ 2. Is it "Core War" or "Core Wars"? Both terms are used. Early references were to Core War. Later references seem to use Core Wars. I prefer "Core War" to refer to the game in general, "core wars" to refer to more than one specific battle. [ToC] ------------------------------------------------------------------------ 3. Where can I find more information about Core War? Core War was first described in the Core War Guidelines of March, 1984 by D. G. Jones and A. K. Dewdney of the Department of Computer Science at The University of Western Ontario (Canada). Dewdney wrote several "Computer Recreations" articles in Scientific American which discussed Core War, starting with the May 1984 article. Those articles are contained in two anthologies: Library of Author Title Published ISBN Congress Call Number The Armchair Dewdney, Universe: An New York: W. QA76.6 .D517 A. K. Exploration of H. Freeman �0-7167-1939-8 1988 Computer Worlds 1988 The Magic 0-7167-2125-2 Dewdney, Machine: A New York: W.(Hardcover), QA76.6 A. K. Handbook of H. Freeman �0-7167-2144-9 .D5173 1990 Computer Sorcery 1990 (Paperback) A.K. Dewdney's articles are still the most readable introduction to Core War, even though the Redcode dialect described in there is no longer current. For those who are interested, Dewdney has a home page at http://www.csd.uwo.ca/faculty/akd/. [ToC] ------------------------------------------------------------------------ 4. Core War has changed since Dewdney's articles. Where do I get a copy of the current instruction set? A draft of the official standard (ICWS'88) is available as ftp://www.koth.org/corewar/documents/standards/redcode-icws-88.Z. This document is formatted awkwardly and contains ambiguous statements. For a more approachable intro to Redcode, take a look at Mark Durham's tutorials, ftp://www.koth.org/corewar/documents/tutorial.1.Z and ftp://www.koth.org/corewar/documents/tutorial.2.Z. Steven Morrell has prepared a more practically oriented Redcode tutorial that discusses different warrior classes with lots of example code. This and various other tutorials can be found at http://www.koth.org/papers.html. Even though ICWS'88 is still the "official" standard, you will find that most people are playing by ICWS'94 draft rules and extensions. [ToC] ------------------------------------------------------------------------ 5. What is ICWS'94? Which simulators support ICWS'94? There is an ongoing discussion about future enhancements to the Redcode language. A proposed new standard, dubbed ICWS'94, is currently being evaluated. A major change is the addition of "instruction modifiers" that allow instructions to modify A-field, B-field or both. Also new is a new addressing modes and unrestricted opcode and addressing mode combination ("no illegal instructions"). ICWS'94 is backwards compatible; i.e. ICWS'88 warriors will run correctly on an ICWS'94 system. Take a look at the ICWS'94 draft at ftp://www.koth.org/corewar/documents/icws94.0202.Z for more information. There is a HTML version of this document available at http://www.koth.org/info/icws94.html. You can try out the new standard by submitting warriors to the '94 hills of the KotH servers. Two corewar systems currently support ICWS'94, pMARS (many platforms) and Redcoder (Mac), both available at ftp://www.koth.org/corewar. Note that Redcoder only supports a subset of ICWS'94. [ToC] ------------------------------------------------------------------------ 6. What is the ICWS? About one year after Core War first appeared in Scientific American, the "International Core War Society" (ICWS) was established. Since that time, the ICWS has been responsible for the creation and maintenance of Core War standards and the running of Core War tournaments. There have been six annual tournaments and two standards (ICWS'86 and ICWS'88). The ICWS is no longer active. [ToC] ------------------------------------------------------------------------ 7. What is Core Warrior? Following in the tradition of the Core War News Letter, Push Off, and The 94 Warrior, Core Warrior is a newsletter about strategies and current standings in Core War. Started in October 1995, back issues of Core Warrior (and the other newsletters) are available at http://para.inria.fr/~doligez/corewar/. There is also a Core Warrior index page at http://www.kendalls.demon.co.uk/pak21/corewar/warrior.html which has a summary of the contents of each issue of Core Warrior. Many of the earlier issues contain useful information for beginners. [ToC] ------------------------------------------------------------------------ 8. Where are the Core War archives? Many documents such as the guidelines and the ICWS standards along with previous tournament Redcode entries and complete Core War systems are available via anonymous ftp from ftp://ftp.csua.berkeley.edu/pub/corewar. Also, most of past rec.games.corewar postings (including Redcode source listings) are archived there. Jon Blow (blojo@csua.berkeley.edu) is the archive administrator. When uploading to /pub/corewar/incoming, ask Jon to move your upload to the appropriate directory and announce it on the net. This site is mirrored at: * http://www.koth.org/corewar/ * ftp://www.koth.org/corewar/ * ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/mirror The plain text version of this FAQ is automatically archived by news.answers (but this version is probably out-of-date). [ToC] ------------------------------------------------------------------------ 9. Where can I find a Core War system for . . . ? Core War systems are available via anonymous FTP from www.koth.org in the corewar/systems directory. Currently, there are UNIX, IBM PC-compatible, Macintosh, and Amiga Core War systems available there. It is a good idea to check ftp://www.koth.org/corewar/incoming for program updates first. CAUTION! There are many, many Core War systems available which are NOT ICWS'88 (or even ICWS'86) compatible available at various archive sites other than www.koth.org. Generally, the older the program - the less likely it will be ICWS compatible. If you are looking for an ICWS'94 simulator, get pMARS, which is available for many platforms and can be downloaded from: * ftp://ftp.csua.berkeley.edu/pub/corewar (original site) * ftp://www.koth.org/corewar (koth.org mirror) * ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/mirror (Planar mirror) * http://www.nc5.infi.net/~wtnewton/corewar/ (Terry Newton) * ftp://members.aol.com/ofechner/corewar (Fechter) Notes: * If you have trouble running pMARS with a graphical display under Win95 then check out http://www.koth.org/pmars.html which should have a pointer to the latest compilation of pMARS for this environment. * RPMs for the Alpha, PowerPC, Sparc and i386 can be found at ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/pmars-rpm/ Reviews of Core War systems would be greatly appreciated in the newsgroup and in the newsletter. Below is a not necessarily complete or up-to-date list of what's available at www.koth.org: MADgic41.lzh corewar for the Amiga, v4.1 MAD4041.lzh older version? MAD50B.lha corewar for the Amiga, beta version 5.0 Redcoder-21.hqx corewar for the Mac, supports ICWS'88 and '94 (without extensions) core-11.hqx corewar for the Mac core-wars-simulator.hqx same as core-11.hqx? corewar_unix_x11.tar.Z corewar for UNIX/X-windows, ICWS'86 but not ICWS'88 compatible koth31.tar.Z corewar for UNIX/X-windows. This program ran the former KotH server at intel.com koth.shar.Z older version kothpc.zip port of older version of KotH to the PC deluxe20c.tar.Z corewar for UNIX (broken X-windows or curses) and PC mars.tar.Z corewar for UNIX, likely not ICWS'88 compatible icons.zip corewar icons for MS-Windows macrored.zip a redcode macro-preprocessor (PC) c88v49.zip PC corewar, textmode display mars88.zip PC corewar, graphics mode display corwp302.zip PC corewar, textmode display, slowish mercury2.zip PC corewar written in assembly, fast! mtourn11.zip tournament scheduler for mercury (req. 4DOS) pmars08s.zip portable system, ICWS'88 and '94, runs on UNIX, PC, Mac, Amiga. C source archive pmars08s.tar.Z same as above pmars08.zip PC executables with graphics display, req 386+ macpmars02.sit.hqx pMARS executable for Mac (port of version 0.2) buggy, no display MacpMARS1.99a.cpt.hqx port of v0.8 for the Mac, with display and debugger MacpMARS1.0s.cpt.hqx C source (MPW, ThinkC) for Mac frontend pvms08.zip pMARS v0.8 for VMS build files/help (req. pmars08s.zip) ApMARS03.lha pMARS executable for Amiga (port of version 0.3.1) wincor11.zip MS-Windows system, shareware ($15) [ToC] ------------------------------------------------------------------------ 10. Where can I find warrior code? To learn the game, it is a good idea to study previously posted warrior code. The FTP archives have code in the ftp://www.koth.org/corewar/redcode directory. A clearly organized on-line warrior collection is available at the Core War web sites (see below). [ToC] ------------------------------------------------------------------------ 11. I do not have FTP. How do I get all this great stuff? There is an FTP email server at bitftp@pucc.princeton.edu. This address may no longer exist. I haven't tested it yet. Send email with a subject and body text of "help" (without the quotes) for more information on its usage. Note that many FTP email gateways are shutting down due to abuse. To get a current list of FTP email servers, look at the Accessing the Internet by E-mail FAQ posted to news.answers. If you don't have access to Usenet, you can retrieve this FAQ one of the following ways: * Send mail to mail-server@rtfm.mit.edu with the body containing "send usenet/news.answers/internet-services/access-via-email". * Send mail to mailbase@mailbase.ac.uk with the body containing "send lis-iis e-access-inet.txt". [ToC] ------------------------------------------------------------------------ 12. I do not have access to Usenet. How do I post and receive news? To receive rec.games.corewar articles by email, join the COREWAR-L list run on the Koth.Org list processor. To join, send the message SUB COREWAR-L FirstName LastName to listproc@koth.org. You can send mail to corewar-l@koth.org to post even if you are not a member of the list. Responsible for the listserver is Scott J. Ellentuch (ttsg@ttsg.com). Servers that allow you to post (but not receive) articles are available. Refer to the Accessing the Internet by E-Mail FAQ for more information. [ToC] ------------------------------------------------------------------------ 13. Are there any Core War related WWW sites? You bet. Each of the two KotH sites sport a world-wide web server. Stormking's Core War page is http://www.koth.org; pizza's is http://www.ecst.csuchico.edu/~pizza/koth . Damien Doligez (a.k.a. Planar) has a web page that features convenient access to regular newsletters (Push Off, The '94 Warrior, Core Warrior) and a well organized library of warriors: http://para.inria.fr/~doligez/corewar/. Convenient for U.S. users, this site is also mirrored at koth.org. [ToC] ------------------------------------------------------------------------ 14. What is KotH? How do I enter? King Of The Hill (KotH) is an ongoing Core War tournament available to anyone with email. You enter by submitting via email a Redcode program (warrior) with special comment lines. You will receive a reply indicating how well your program did against the current top programs "on the hill". There are two styles of KotH tournaments, "classical" and "multi-warrior". The "classical" KotH is a one-on-one tournament, that is your warrior will play 100 battles against each of the 20 other programs currently on the Hill. You receive 3 points for each win and 1 point for each tie. (The existing programs do not replay each other, but their previous battles are recalled.) All scores are updated to reflect your battles and all 21 programs are ranked from high to low. If you are number 21 you are pushed off the Hill, if you are higher than 21 someone else is pushed off. In "multi-warrior" KotH, all warriors on the hill fight each other at the same time. Score calculation is a bit more complex than for the one-on-one tournament. Briefly, points are awarded based on how many warriors survive until the end of a round. A warrior that survives by itself gets more points than a warrior that survives together with other warriors. Points are calculated from the formula (W*W-1)/S, where W is the total number of warriors and S the number of surviving warriors. The pMARS documentation has more information on multi-warrior scoring. The idea for an email-based Core War server came from David Lee. The original KotH was developed and run by William Shubert at Intel starting in 1991, and discontinued after almost three years of service. Currently, KotHs based on Bill's UNIX scripts but offering a wider variety of hills are are running at two sites: koth@koth.org is maintained by Scott J. Ellentuch (tuc@ttsg.com) and pizza@ecst.csuchico.edu by Thomas H. Davies (sd@ecst.csuchico.edu). Up until May '95, the two sites provided overlapping services, i.e. the some of the hill types were offered by both "pizza" and "stormking". To conserve resources, the different hill types are now divided up among the sites. The way you submit warriors to both KotHs is pretty much the same. Therefore, the entry rules described below apply to both "pizza" and "stormking" unless otherwise noted. Entry Rules for King of the Hill Corewar * Write a corewar program. KotH is fully ICWS '88 compatible, EXCEPT that a comma (",") is required between two arguments. * Put a line starting with ";redcode" (or ";redcode-94", etc., see below) at the top of your program. This MUST be the first line. Anything before it will be lost. If you wish to receive mail on every new entrant, use ";redcode verbose". Otherwise you will only receive mail if a challenger makes it onto the hill. Use ";redcode quiet" if you wish to receive mail only when you get shoved off the hill. Additionally, adding ";name " and ";author " will be helpful in the performance reports. Do NOT have a line beginning with ";address" in your code; this will confuse the mail daemon and you won't get mail back. Using ";name" is mandatory on the Pizza hills. In addition, it would be nice if you have lines beginning with ";strategy" that describe the algorithm you use. There are currently seven separate hills you can select by starting your program with ;redcode-94, ;redcode-b, ;redcode-lp, ;redcode-x, ;redcode, ;redcode-94x or ;redcode-94m. The former four run at "pizza", the latter three at "stormking". More information on these hills is listed below. * Mail this file to koth@koth.org or pizza@ecst.csuchico.edu. "Pizza" requires a subject of "koth" (use the -s flag on most mailers). * Within a few minutes you should get mail back telling you whether your program assembled correctly or not. If it did assemble correctly, sit back and wait; if not, make the change required and re-submit. * In an hour or so you should get more mail telling you how your program performed against the current top 20 (or 10) programs. If no news arrives during that time, don't worry; entries are put in a queue and run through the tournament one at a time. A backlog may develop. Be patient. If your program makes it onto the hill, you will get mail every time a new program makes it onto the hill. If this is too much mail, you can use ";redcode[-??] quiet" when you first mail in your program; then you will only get mail when you make it on the top 25 list or when you are knocked off. Using ";redcode[-??] verbose" will give you even more mail; here you get mail every time a new challenger arrives, even if they don't make it onto the top 25 list. Often programmers want to try out slight variations in their programs. If you already have a program named "foo V1.0" on the hill, adding the line ";kill foo" to a new program will automatically bump foo 1.0 off the hill. Just ";kill" will remove all of your programs when you submit the new one. The server kills programs by assigning an impossibly low score; it may therefore take another successful challenge before a killed program is actually removed from the hill. Sample Entry ;redcode ;name Dwarf ;author A. K. Dewdney ;strategy Throw DAT bombs around memory, hitting every 4th memory cell. ;strategy This program was presented in the first Corewar article. bomb DAT #0 dwarf ADD #4, bomb MOV bomb, @bomb JMP dwarf END dwarf ; Programs start at the first line unless ; an "END start" pseudo-op appears to indicate ; the first logical instruction. Also, nothing ; after the END instruction will be assembled. Duration Max. Hill Name Hill Core Max. Before Entry Min. Rounds Instr. Size Size Processes Distance Fought Set Tie Length Pizza's ICWS '94 Draft Hill Extended (Accessed with 25 8000 8000 80000 100 100 200 ICWS '94 ";redcode-94") Draft Pizza's Beginner's Extended Hill (Accessed 25 8000 8000 80000 100 100 200 ICWS '94 with ";redcode-b") Draft Pizza's Experimental Extended (Small) Hill 25 800 800 8000 20 20 200 ICWS '94 (Accessed with Draft ";redcode-x") Pizza's Limited Process (LP) Hill Extended (Accessed with 25 8000 8 80000 200 200 200 ICWS '94 ";redcode-lp") Draft Stormking's ICWS '88 Standard Hill (Accessed with 20 8000 8000 80000 100 100 250 ICWS '88 ";redcode") Stormking's ICWS '94 No Pspace Hill (Accessed with 20 8000 8000 80000 100 100 250 ICWS '94 ";redcode-94nop") Stormking's ICWS '94 Experimental Extended (Big) Hill 20 55440 55440 500000 200 200 250 ICWS '94 (Accessed with Draft ";redcode-94x") Stormking's ICWS '94 Multi-Warrior Extended Hill (Accessed 10 8000 8000 80000 100 100 200 ICWS '94 with Draft ";redcode-94m") Note: Warriors on the beginner's hill are retired at age 100. If you just want to get a status report without actually challenging the hills, send email with ";status" as the message body (and don't forget "Subject: koth" for "pizza"). If you send mail to "pizza" with "Subject: koth help" you will receive instructions that may be more up to date than those contained in this document. At "stormking", a message body with ";help" will return brief instructions. If you submit code containing a ";test" line, your warrior will be assembled but not actually pitted against the warriors on the hill. At "pizza", you can use ";redcode[-??] test" to do a test challenge of the Hill without affecting the status of the Hill. These challenges can be used to see how well your warrior does against the current Hill warriors. All hills run portable MARS (pMARS) version 0.8, a platform-independent Core War system available at www.koth.org. The '94 and '94x hills allow five experimental opcodes and three experimental addressing modes currently not covered in the ICWS'94 draft document: * LDP - Load P-Space * STP - Store P-Space * SEQ - Skip if EQual (synonym for CMP) * SNE - Skip if Not Equal * NOP - (No OPeration) * * - indirect using A-field as pointer * { - predecrement indirect using A-field * } - postincrement indirect using A-field [ToC] ------------------------------------------------------------------------ 15. Is it DAT 0, 0 or DAT #0, #0? How do I compare to core? Core is initialized to DAT 0, 0. This is an illegal instruction (in source code) under ICWS'88 rules and strictly compliant assemblers (such as KotH or pmars -8) will not let you have a DAT 0, 0 instruction in your source code - only DAT #0, #0. So this begs the question, how to compare something to see if it is empty core. The answer is, most likely the instruction before your first instruction and the instruction after your last instruction are both DAT 0, 0. You can use them, or any other likely unmodified instructions, for comparison. Note that under ICWS'94, DAT 0, 0 is a legal instruction. [ToC] ------------------------------------------------------------------------ 16. How does SLT (Skip if Less Than) work? SLT gives some people trouble because of the way modular arithmetic works. It is important to note that all negative numbers are converted to positive numbers before a battles begins. Example: -1 becomes M-1 where M is the memory size (core size). Once you realize that all numbers are treated as positive, it is clear what is meant by "less than". It should also be clear that no number is less than zero. [ToC] ------------------------------------------------------------------------ 17. What is the difference between in-register and in-memory evaluation? These terms refer to the way instruction operands are evaluated. The '88 Redcode standard ICWS'88 is unclear about whether a simulator should "buffer" the result of A-operand evaluation before the B-operand is evaluated. Simulators that do buffer are said to use in-register evaluation, those that don't, in-memory evaluation. ICWS'94 clears this confusion by mandating in-register evaluation. Instructions that execute differently under these two forms of evaluation are MOV, ADD, SUB, MUL, DIV and MOD where the effective address of the A-operand is modified by evaluation of the B-operand. This is best illustrated by an example: L1 mov L2, mov.i #0, impsize Bootstrapping Strategy of copying the active portion of the program away from the initial location, leaving a decoy behind and making the relocated program as small as possible. B-Scanners Scanners which only recognize non-zero B-fields. example add #10, scan scan jmz example, 10 c Measure of speed, equal to one location per cycle. Speed of light. CMP-Scanner A Scanner which uses a CMP instruction to look for opponents. example add step, scan scan cmp 10, 30 jmp attack jmp example step dat #20, #20 Colour Property of bombs making them visible to scanners, causing them to attack useless locations, thus slowing them down. example dat #100 Core-Clear Code that sequentially overwrites core with DAT instructions; usually the last part of a program. Decoys Bogus or unused instructions meant to slow down scanners. Typically, DATs with non-zero B-fields. Decrement Resistant Property of warriors making them functional (or at least partially functional) when overrun by a DJN-stream. DJN-Stream (also DJN-Train) Using a DJN command to rapidly decrement core locations. example ... ... djn example, <4000 Dwarf The prototypical small bomber. Gate-busting (also gate-crashing) technique to "interweave" a decrement-resistant imp-spiral (e.g. MOV 0, 2668) with a standard one to overrun imp-gates. Hybrids warriors that combine two or more of the basic strategies, either in sequence (e.g. stone->paper) or in parallel (e.g. imp/stone). Imp Program which only uses the MOV instruction. example mov 0, 1 or example mov 0, 2 mov 0, 2 Imp-Gate A location in core which is bombed or decremented continuously so that an Imp can not pass. Also used to describe the program-code which maintains the gate. example ... ... spl 0, mov.i #0,IMPSIZE Mirror see reflection. On-axis/off-axis On-axis scanners compare two locations M/2 apart, where M is the memory size. Off-axis scanners use some other separation. Optimal Constants (also optima-type constants) Bomb or scan increments chosen to cover core most effectively, i.e. leaving gaps of uniform size. Programs to calculate optimal constants and lists of optimal numbers are available at www.koth.org. Paper A Paper-like program is one which replicates itself many times. Part of the Scissors (beats) Paper (beats) Stone (beats Scissors) analogy. P-Warrior A warrior which uses the results of previous round(s) in order to determine which strategy it will use. Pit-Trapper (also Slaver, Vampire). A program which enslaves another. Usually accomplished by bombing with JMPs to a SPL 0 pit with an optional core-clear routine. Q^2 Scan A modern version of the Quick Scan where anything found is attacked almost immediately. Quick Scan 2c scan of a set group of core locations with bombing if anything is found. Both of the following codes snips scan 16 locations and check for a find. If anything is found, it is attacked, otherwise 16 more locations are scanned. Example: start s1 for 8 ;'88 scan cmp start+100*s1, start+100*s1+4000 ;check two locations mov #start+100*s1-found, found ;they differ so set pointer rof jmn attack, found ;if we have something, get it s2 for 8 cmp start+100*(s2+6), start+100*(s2+6)+4000 mov #start+100*(s2+6)-found, found rof found jmz moveme, #0 ;skip attack if qscan found nothing attack cmp @found, start-1 ;does found points to empty space? add #4000, found ;no, so point to correct location mov start-1, @found ;move a bomb moveme jmp 0, 0 In ICWS'94, the quick scan code is more compact because of the SNE opcode: start ;'94 scan s1 for 4 sne start+400*s1, start+400*s1+100 ;check two locations seq start+400*s1+200, start+400*s1+300 ;check two locations mov #start+400*s1-found, found ;they differ so set pointer rof jmn which, found ;if we have something, get it s2 for 4 sne start+400*(s2+4), start+400*(s2+4)+100 seq start+400*(s2+4)+200, start+400*(s2+4)+300 mov #start+400*(s2+4)-found-100, found rof found jmz moveme, #0 ;skip attack if qscan found nothing add #100, -1 ;increment pointer till we get the which jmn -1, @found ;right place mov start-1, @found ;move a bomb moveme jmp 0, 0 Reflection Copy of a program or program part, positioned to make the active program invisible to a CMP-scanner. Replicator Generic for Paper. A program which makes many copies of itself, each copy also making copies. Self-Splitting Strategy of amplifying the number of processes executing a piece of code. example spl 0 loop add #10, example mov example, @example jmp loop Scanner A program which searches through core for an opponent rather than bombing blindly. Scissors A program designed to beat replicators, usually a (B-field scanning) vampire. Part of the Paper-Scissors-Stone analogy. Self-Repair Ability of a program to fix it's own code after attack. Silk A replicator which splits off a process to each new copy before actually copying the code. This allows it to replicate extremely quickly. This technique is only possible under the '94 draft, because it requires post-increment indirect addressing. Example: spl 1 mov -1, 0 spl 1 ;generate 6 consecutive processes silk spl 3620, #0 ;split to new copy mov >-1, }-1 ;copy self to new location mov bomb, >2000 ;linear bombing mov bomb, }2042 ;A-indirect bombing for anti-vamp jmp silk, {silk ;reset source pointer, make new copy bomb dat >2667, >5334 ;anti-imp bomb Slaver see Pit-Trapper. Stealth Property of programs, or program parts, which are invisible to scanners, accomplished by using zero B-fields and reflections. Stone A Stone-like program designed to be a small bomber. Part of the Paper-Scissors-Stone analogy. Stun A type of bomb which makes the opponent multiply useless processes, thus slowing it down. Example is referred to as a SPL-JMP bomb. example spl 0 jmp -1 Two-Pass Core-Clear (also SPL/DAT Core-Clear) core clear that fills core first with SPL instructions, then with DATs. This is very effective in killing paper and certain imp-spiral variations. Vampire see Pit-Trapper. Vector Launch one of several means to start an imp-spiral running. As fast as Binary Launch, but requiring much less code. See also JMP/ADD Launch and Binary Launch. This example is one form of a Vector Launch: sz EQU 2667 spl 1 spl 1 jmp @vt, }0 vt dat #0, imp+0*sz ; start of vector table dat #0, imp+1*sz dat #0, imp+2*sz dat #0, imp+3*sz ; end of vector table imp mov.i #0, sz [ToC] ------------------------------------------------------------------------ 23. Other questions? Just ask in the rec.games.corewar newsgroup or contact me. If you are shy, check out the Core War archives first to see if your question has been answered before. [ToC] ------------------------------------------------------------------------ Credits Additions, corrections, etc. to this document are solicited. Thanks in particular to the following people who have contributed major portions of this document: * Mark Durham (wrote the original version of the FAQ) * Paul Kline * Randy Graham * Stefan Strack (maintained a recent version of the FAQ) ------------------------------------------------------------------------ Copyright � 1999 Anton Marsden. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ------------------------------------------------------------------------ From: Koth Subject: KOTH.ORG: Status - 94 No Pspace 08/11/03 Date: 11 Aug 2003 10:05:57 -0400 Message-ID: <200308110409.h7B491fh002093@gevjon.ttsg.com> Weekly Status on 08/11/03 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG 94 No Pspace CoreWar Hill: Last battle concluded at : Sun Aug 10 20:17:07 EDT 2003 # %W/ %L/ %T Name Author Score Age 1 33/ 25/ 42 Thunderstrike Lukasz Grabun 141 445 2 45/ 49/ 6 Recon 2 David Moore 141 294 3 31/ 21/ 48 badness bvowk 141 1 4 41/ 43/ 16 Return of Vanquisher Lukasz Grabun 139 602 5 28/ 19/ 53 Yorba Roy van Rijn 138 48 6 30/ 22/ 47 Son of Vain Oversby/Pihlaja 138 1840 7 41/ 44/ 15 Toxic Spirit Philip Thorne 137 525 8 31/ 26/ 43 Reepicheep Grabun/Metcalf 137 1071 9 31/ 26/ 43 Now you're in trouble!!! John Metcalf 136 208 10 33/ 30/ 37 Digitalis 2003 Christian Schmidt 136 122 11 30/ 24/ 46 Candy II Lukasz Grabun 135 220 12 30/ 27/ 43 Massive Attack Roy van Rijn 132 6 13 39/ 47/ 14 Hazy Test 63 Steve Gunnell 132 615 14 38/ 45/ 17 Fuse Myer Bremer 131 81 15 29/ 28/ 43 Numb Roy van Rijn 131 227 16 22/ 14/ 65 unheard-of Christian Schmidt 129 171 17 27/ 26/ 47 Cascade Roy van Rijn 128 5 18 37/ 48/ 15 Studie 10/3 Sascha Zapf 125 29 19 37/ 50/ 13 Ikarus Christian Schmidt 124 10 20 38/ 52/ 10 Jinx 2 Christian Schmidt 124 72 21 26/ 30/ 44 devilish 2.00 test David Houston 122 0 From: Koth Subject: KOTH.ORG: Status - ICWS Experimental 94 08/11/03 Date: 11 Aug 2003 10:06:03 -0400 Message-ID: <200308110406.h7B461w7002074@gevjon.ttsg.com> Weekly Status on 08/11/03 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG ICWS Experimental 94 CoreWar Hill: Last battle concluded at : Fri Aug 8 15:37:59 EDT 2003 # %W/ %L/ %T Name Author Score Age 1 40/ 37/ 23 The X Machine Zul Nadzri 143 10 2 43/ 45/ 13 Fire and Ice II David Moore 141 99 3 40/ 40/ 21 Eliminator X Zul Nadzri 140 11 4 22/ 8/ 70 Evol Cap 4 X John Wilkinson 136 268 5 22/ 10/ 68 Denial David Moore 134 140 6 36/ 39/ 25 Black Moods Ian Oversby 133 195 7 34/ 35/ 32 Trefoil F 13 Steve Gunnell 133 82 8 24/ 19/ 57 Katafutr Michal Janeczek 130 139 9 33/ 37/ 29 Controlled Aggression Ian Oversby 129 199 10 35/ 42/ 23 Giant Hazy Test 13 Steve Gunnell 128 26 11 27/ 25/ 49 Venom v0.2b Christian Schmidt 128 221 12 28/ 27/ 45 Olivia X Ben Ford 128 80 13 17/ 8/ 75 Evolve X v4.0 John Wilkinson 126 216 14 22/ 17/ 61 Kin John Metcalf 126 107 15 19/ 12/ 69 Blotter X J. Pohjalainen 126 1 16 27/ 29/ 44 KAT v5 Dave Hillis 125 131 17 25/ 24/ 51 Glenstorm John Metcalf 125 61 18 32/ 41/ 28 Ogre Christian Schmidt 123 147 19 29/ 36/ 35 Big Pspacer G.Labarga 122 6 20 34/ 45/ 21 Piltdown (2003.8) Philip Thorne 122 2 21 34/ 46/ 20 Kenshin X 45 Steve Gunnell 121 42 From: Koth Subject: KOTH.ORG: Status - Standard 08/11/03 Date: 11 Aug 2003 10:06:11 -0400 Message-ID: <200308110400.h7B401v5001958@gevjon.ttsg.com> Weekly Status on 08/11/03 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG Standard KotH CoreWar Hill : Last battle concluded at : Sun Jun 22 07:22:28 EDT 2003 # %W/ %L/ %T Name Author Score Age 1 38/ 22/ 40 Quicksilver '88 Michal Janeczek 154 8 2 44/ 38/ 17 Tangle Trap 3 David Moore 150 1 3 35/ 22/ 43 Freight Train David Moore 147 173 4 34/ 22/ 44 Test Alexander (Sasha) Wa 145 112 5 33/ 23/ 44 Guardian Ian Oversby 143 172 6 41/ 41/ 19 My 1st try Christian Schmidt 140 4 7 43/ 45/ 12 vm5 Michal Janeczek 140 7 8 36/ 32/ 32 vala John Metcalf 139 95 9 43/ 50/ 7 Scan Test C 6 Steve Gunnell 137 11 10 30/ 24/ 46 Pixie 88 Lukasz Grabun 136 2 11 36/ 36/ 29 Gymnosperm trickery Dave Hillis 135 59 12 40/ 47/ 13 Blur '88 Anton Marsden 134 210 13 27/ 20/ 53 Test I Ian Oversby 134 229 14 37/ 41/ 22 PacMan David Moore 134 202 15 41/ 48/ 12 Foggy Swamp Beppe Bezzi 133 169 16 38/ 43/ 18 '88 test IV John Metcalf 133 66 17 26/ 20/ 54 EV Paper John K Wilkinson 132 186 18 29/ 26/ 46 Shish-Ka-Bob Ben Ford 131 128 19 30/ 29/ 41 sIMPly.Red v0.95 Leonardo Humberto 130 130 20 37/ 47/ 16 Stasis David Moore 126 280 21 16/ 57/ 27 Rubber Duck Roy van Rijn 76 0 From: Koth Subject: KOTH.ORG: Status - MultiWarrior 94 08/11/03 Date: 11 Aug 2003 10:06:07 -0400 Message-ID: <200308110403.h7B431ql002028@gevjon.ttsg.com> Weekly Status on 08/11/03 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG Multiwarrior 94 CoreWar Hill: Last battle concluded at : Sun Aug 10 12:17:52 EDT 2003 # Name Author Score Age 1 Her Majesty P.Kline 20 316 2 not king of the hill FatalC 19 42 3 D-clearM Ken Espiritu 17 297 4 hawk John Metcalf 14 40 5 Dettol Test 26 Steve Gunnell 13 77 6 pre75-z47a John Metcalf 11 6 7 my new tiny warrior John Metcalf 10 88 8 Self Titled FatalC 10 1 9 Bugtown test C 57 Steve Gunnell 9 17 10 Djinn Test 13 Steve Gunnell 7 33 11 Self Titled FatalC 0 2 From: bvowk@math.ualberta.ca (Barkley Vowk) Subject: 100% Evolved warrior on 94-nop Date: 11 Aug 2003 13:26:48 -0700 Message-ID: I'm sorry everyone, but this post is purely for the benefit of my ego :) I just submitted my first 100% evolved warrior that stuck on the hill (actually, not true, I had one stick earlier, but it disappeared with the next challenge). Its sitting in 16th place right now, which I'm hoping will allow it to hang on for at least a few challenges. Its a completely evolved paper, from start to finish, it took (very) approximately 30 billion tries to get this warrior. I've had an (very approx) average of 8 1Ghz Athlon CPU's working on this batch for about the last 2.5-3 months (athough I peaked at about 60 ~1Ghz CPU's at one point). Anyways, I'd like to thank Joonas for his work on exhaust (and for tweaking it constantly at my request), Wil for the evolver arms race and many others from irc.koth.org for their help. Your overall score: 128.723810 Ikarus has been pushed off the ICWS '94 No Pspace hill. The current ICWS '94 No Pspace hill: Last battle concluded at : Mon Aug 11 15:53:48 EDT 2003 # %W/ %L/ %T Name Author Score Age 1 42/ 43/ 15 Toxic Spirit Philip Thorne 141 526 2 45/ 49/ 7 Recon 2 David Moore 141 295 3 30/ 21/ 49 badness bvowk 140 2 4 41/ 42/ 17 Return of Vanquisher Lukasz Grabun 139 603 5 32/ 25/ 44 Thunderstrike Lukasz Grabun 138 446 6 27/ 18/ 54 Yorba Roy van Rijn 137 49 7 29/ 22/ 49 Son of Vain Oversby/Pihlaja 136 1841 8 30/ 25/ 44 Now you're in trouble!!! John Metcalf 135 209 9 30/ 25/ 45 Reepicheep Grabun/Metcalf 135 1072 10 31/ 30/ 39 Digitalis 2003 Christian Schmidt 133 123 11 29/ 27/ 44 Massive Attack Roy van Rijn 131 7 12 29/ 27/ 44 Candy II Lukasz Grabun 131 221 13 38/ 45/ 18 Fuse Myer Bremer 131 82 14 28/ 27/ 44 Numb Roy van Rijn 130 228 15 21/ 14/ 65 unheard-of Christian Schmidt 129 172 16 23/ 18/ 59 869211-5957-xt430-10-eai3 bvowk 129 1 17 38/ 48/ 14 Hazy Test 63 Steve Gunnell 128 616 18 37/ 47/ 16 Studie 10/3 Sascha Zapf 126 30 19 38/ 51/ 11 Jinx 2 Christian Schmidt 125 73 20 27/ 28/ 46 Cascade Roy van Rijn 125 6 21 37/ 49/ 14 Ikarus Christian Schmidt 125 11 From: dhillismail@netscape.net (Dave Hillis) Subject: Re: 100% Evolved warrior on 94-nop Date: 11 Aug 2003 18:49:00 -0700 Message-ID: <5d6847b2.0308111749.77a646f7@posting.google.com> bvowk@math.ualberta.ca (Barkley Vowk) wrote in message > > I just submitted my first 100% evolved warrior that stuck on the hill > Your overall score: 128.723810 Congrats! (I've never come at all close to that.) Dave From: elmartinos@eml.cc (Martinus) Subject: Re: 100% Evolved warrior on 94-nop Date: 12 Aug 2003 10:28:21 -0700 Message-ID: <7024f804.0308120928.721a9c51@posting.google.com> Wow, this is really amazing. Will the sourcecode of your program be available? :-) martin From: =?iso-8859-1?q?will?= Subject: Re: 100% Evolved warrior on 94-nop Date: 12 Aug 2003 12:45:59 -0400 Message-ID: <20030812095211.30833.qmail@web60002.mail.yahoo.com> --- Barkley Vowk wrote: > I just submitted my first 100% evolved warrior that > stuck on the hill wow!!! Congrats Barkley this is like sputnik; now we race to the moon! /Will __________________________________________________ Yahoo! Plus - For a better Internet experience http://uk.promotions.yahoo.com/yplus/yoffer.html From: fizmo_master@yahoo.com (Fizmo) Subject: Redcoders Frenzy 12: The Limited Distance Round ***Reminder / Update!!!**** Date: 13 Aug 2003 11:10:44 -0700 Message-ID: <9f53b5fb.0308131010.7425479f@posting.google.com> ................................................................... . . . _____ _ _ . . | __ \ | | | | . . | |__) |___ __| | ___ ___ __| | ___ _ __ ___ . . | _ // _ \/ _` |/ __/ _ \ / _` |/ _ \ '__/ __| . . | | \ \ __/ (_| | (_| (_) | (_| | __/ | \__ \ . . |_| \_\___|\__,_|\___\___/ \__,_|\___|_| |___/ . . . . ______ . . | ____| . . | |__ _ __ ___ _ __ _____ _ . . | __| '__/ _ \ '_ \|_ / | | | . . | | | | | __/ | | |/ /| |_| | . . |_| |_| \___|_| |_/___|\__, | . . __/ | . . |___/ . ................................................................... The ongoing corewar tournament __ ___ /_ |__ \ | | ) | | | / / | |/ /_ |_|____| .............................. . . . The Limited Distance Round . . . .............................. Detailed information are available on the new The Corewar Info Page: http://www.corewar.info/tournament/cwt.htm I've added a zip-file containing very interesting past warriors from the former write-limited hill. Thanks to Roy van Roijn who collected and shared them. Check Out: http://www.corewar.info/tournament/12.htm ................................................................... . _ _ _ _ . . __| |___ __ _ __| | (_)_ _ ___ . . / _` / -_) _` / _` | | | ' \/ -_) . . \__,_\___\__,_\__,_|_|_|_||_\___| . . . ................................................................... August 17, 2003 -------------------------------------------------------------- Please notify: You have to send your entries to me -------------------------------------------------------------- From: wackoyacko2000@yahoo.com (Andrew Hunter) Subject: Newb needs help Date: 16 Aug 2003 23:03:04 -0700 Message-ID: <112f3b73.0308162203.123fb413@posting.google.com> I'm trying to make a silkless paper. Why? Because. Well, I think it'll be a good way to learn...plus, less vulnerable to spl 0. what I have so far. mov 0,-8 add.f #1,-1 djn -2,1 spl -12,8 add.f #-8,-4 add.b #1000,-5 add.b #8,-3 jmp -7,0 This, obviously since I wouldn't be asking otherwise, doesn't work. Namely: I can't get the add to work right. I tried to use postincrement addressing, but nothing worked out right. How can I use postincrement here? Can I? Also, is it possible to use add here, instead? What I want to do is have instruction 2 say: Add the number 1 to both fields of the previous instruction. How is this possible? Is it? Somebody please help me. From: wackoyacko2000@yahoo.com (Andrew Hunter) Subject: Re: Newb needs help Date: 17 Aug 2003 05:52:48 -0700 Message-ID: <112f3b73.0308170452.5e34d180@posting.google.com> Thanks! That seems like it will work. By the way, do you know how to do it with indirect postincrement addressing, or the like? From: Lukasz Grabun Subject: Re: Newb needs help Date: 17 Aug 2003 08:52:50 GMT Message-ID: On 16 Aug 2003 23:03:04 -0700, Andrew Hunter wrote: > mov 0,-8 > add.f #1,-1 Presumably this one does not work. Why? Have you looked at the core in xpmars? The problem is with immediate mode *and* .f modifier. .f acts on both fields of the cell (this one you do know, I presume). The immediate mode "tells" the instruction to the argument from the instrunction's cell, like mov #2232, 1 acts like mov 0, 1 (hint: imps). Anyway, the thing you're doing with add.f #1, -1 is increasing A-field of mov instruction by 1 and decreasing B-field by the same value. After add.f is executed, mov line looks like mov 1 , -9. Is this what you tried to achieve? (wild guess: no :-). This simple copy loop can be programmed following way add.f #1 , 1 mov -1 , destination ; <-start here djn.b -2 , #nnn If you had any further questions, feel free to ask. And - welcome! Do not be discouraged with very first attepmts. :-) -- Lukasz Grabun (My CW page: http://www.astercity.net/~grabek) (reply-to field is fake, use grabek (at) acn dot waw dot pl to reply) From: wackoyacko2000@yahoo.com (Andrew Hunter) Subject: Re: Newb needs help Date: 17 Aug 2003 09:42:31 -0700 Message-ID: <112f3b73.0308170842.28957d2@posting.google.com> Thanks. I got it to work thusly: ;redcode-94 start mov.i 0,3620 add.f 9,-1 djn.b -2,1 spl 3617,11 mov.a 4,-4 add.f 4,-2 add.ab 3,-6 jmp -7,11 dat -0,-11 dat 50,11 dat 1,1 But I'd like to save instructions, by using postincrements instead of add instructions. I tried: start mov.i }10,>10 nop 0,0 ;don't ask...felt like not changing all relative nums, so just spliced djn.b -2,1 spl 3617,11 mov.a 4,-4 add.f 4,-2 add.ab 3,-6 jmp -7,11 dat -0,-11 dat 50,11 dat 0,3620 And this almost works...the problem is, dat 0,3620 gets changed before it is copied, and so the new copies don't work right. I'd like to be able to do something like mov.i }0,>3620 where it moves instruction 0 to 3620, then increments both numbers, but it doesn't work right. Any help coming? From: Lukasz Grabun Subject: Re: Newb needs help Date: 17 Aug 2003 12:58:25 GMT Message-ID: On 17 Aug 2003 08:52:50 GMT, Lukasz Grabun wrote: > immediate mode "tells" the instruction to the argument from the > instrunction's cell, like mov #2232, 1 acts like mov 0, 1 (hint: > imps). Anyway, the thing you're doing with add.f #1, -1 is increasing > A-field of mov instruction by 1 and decreasing B-field by the same After pre-lunch walk in Warsaw Lazienki Park I've figured that I had omitted most important part of this explanation, namely the way that add.f #1, -1 works (I showed the result but it is not what I mean here). #1 (which is interpreted as $0) means that the instruction that will be *added* is the add instruction itself (or rather, arguments of this instruction I hope you still follow). $-1 means that the instruction which is *added to* lays one instruction behind add line. However, .f does not care about addressing modes, which means that arguments #1, $1 or *1, @1 or >1, {1 are the same for *.f* operand. Therefore add.f #1, $-1 adds a [1,-1] to the cells that lays behind the add (one instrunction, relatively). Damn, I have to learn that Englishy thing. -- Lukasz Grabun (My CW page: http://www.astercity.net/~grabek) (reply-to field is fake, use grabek (at) acn dot waw dot pl to reply) From: Paul-V Khuong Subject: Re: Newb needs help Date: 17 Aug 2003 14:40:42 -0400 Message-ID: <20030817170215.5843.qmail@web41502.mail.yahoo.com> --- Andrew Hunter wrote: > Thanks! That seems like it will work. By the way, > do you know how to > do it with indirect postincrement addressing, or the like? I gather you mean making a paper with post-increment AND a djn-loop? The problem with post-increment is that, not only would you need to add a mov *, @ instruction (or else the pointer would point to nowhere), but additionally, that last instruction would have to be a jmp to the beginning of the warrior, wasting two cycles and two cells. __________________________________ Do you Yahoo!? Yahoo! SiteBuilder - Free, easy-to-use web site design software http://sitebuilder.yahoo.com From: Koth Subject: KOTH.ORG: Status - ICWS Experimental 94 08/18/03 Date: 18 Aug 2003 10:21:42 -0400 Message-ID: <200308180406.h7I461pO020982@gevjon.ttsg.com> Weekly Status on 08/18/03 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG ICWS Experimental 94 CoreWar Hill: Last battle concluded at : Sun Aug 17 16:02:51 EDT 2003 # %W/ %L/ %T Name Author Score Age 1 46/ 42/ 13 Fire and Ice II David Moore 150 99 2 41/ 36/ 23 The X Machine Zul Nadzri 146 10 3 41/ 39/ 20 Eliminator X Zul Nadzri 143 11 4 31/ 25/ 45 KAT v5 Dave Hillis 137 131 5 35/ 33/ 32 Trefoil F 13 Steve Gunnell 136 82 6 37/ 39/ 25 Black Moods Ian Oversby 135 195 7 26/ 19/ 55 Katafutr Michal Janeczek 134 139 8 21/ 8/ 71 Evol Cap 4 X John Wilkinson 133 268 9 36/ 41/ 23 Giant Hazy Test 13 Steve Gunnell 131 26 10 20/ 10/ 70 Denial David Moore 131 140 11 33/ 36/ 31 Controlled Aggression Ian Oversby 129 199 12 36/ 43/ 21 Piltdown (2003.8) Philip Thorne 128 2 13 33/ 39/ 27 Ogre Christian Schmidt 127 147 14 26/ 26/ 48 Olivia X Ben Ford 127 80 15 25/ 23/ 52 Venom v0.2b Christian Schmidt 126 221 16 17/ 8/ 75 Evolve X v4.0 John Wilkinson 126 216 17 20/ 15/ 65 Kin John Metcalf 126 107 18 23/ 22/ 55 Glenstorm John Metcalf 125 61 19 18/ 12/ 70 Blotter X J. Pohjalainen 124 1 20 28/ 35/ 36 Big Pspacer G.Labarga 122 6 21 7/ 49/ 45 Afternoon nap... John Metcalf 65 0 From: Koth Subject: KOTH.ORG: Status - MultiWarrior 94 08/18/03 Date: 18 Aug 2003 10:21:52 -0400 Message-ID: <200308180403.h7I4312O020954@gevjon.ttsg.com> Weekly Status on 08/18/03 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG Multiwarrior 94 CoreWar Hill: Last battle concluded at : Sun Aug 17 15:38:21 EDT 2003 # Name Author Score Age 1 Her Majesty P.Kline 28 324 2 not king of the hill FatalC 14 50 3 D-clearM Ken Espiritu 11 305 4 like a passing sunbeam John Metcalf 11 4 5 Lazy Afternoon... John Metcalf 11 1 6 hawk John Metcalf 10 48 7 Djinn Test 13 Steve Gunnell 8 41 8 Dettol Test 26 Steve Gunnell 6 85 9 Below the Hill FatalC 3 5 10 Self Titled FatalC 2 6 11 Afternoon nap... John Metcalf 0 0 From: Koth Subject: KOTH.ORG: Status - 94 No Pspace 08/18/03 Date: 18 Aug 2003 10:21:28 -0400 Message-ID: <200308180409.h7I491Mk021027@gevjon.ttsg.com> Weekly Status on 08/18/03 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG 94 No Pspace CoreWar Hill: Last battle concluded at : Sun Aug 17 17:02:42 EDT 2003 # %W/ %L/ %T Name Author Score Age 1 35/ 23/ 42 Thunderstrike Lukasz Grabun 148 463 2 46/ 48/ 6 Recon 2 David Moore 145 312 3 43/ 41/ 16 Toxic Spirit Philip Thorne 145 543 4 35/ 26/ 39 Digitalis 2003 Christian Schmidt 144 140 5 34/ 24/ 43 devilish 2.02 test David Houston 144 5 6 42/ 41/ 17 Return of Vanquisher Lukasz Grabun 143 620 7 41/ 40/ 19 Fuse Myer Bremer 143 99 8 29/ 16/ 55 Mordred's Son Christian Schmidt 143 6 9 31/ 22/ 47 Son of Vain Oversby/Pihlaja 140 1858 10 32/ 25/ 42 Reepicheep Grabun/Metcalf 139 1089 11 31/ 24/ 45 Candy II Lukasz Grabun 139 238 12 32/ 26/ 42 Now you're in trouble!!! John Metcalf 138 226 13 41/ 44/ 15 Hazy Test 63 Steve Gunnell 138 633 14 38/ 40/ 21 CrazyShot 3 Christian Schmidt 136 12 15 29/ 22/ 49 badness bvowk 135 19 16 31/ 27/ 42 Numb Roy van Rijn 134 245 17 27/ 21/ 52 Yorba Roy van Rijn 134 66 18 41/ 48/ 10 Kenshin X test 71 Steve Gunnell 134 1 19 24/ 14/ 62 unheard-of Christian Schmidt 134 189 20 30/ 27/ 42 Massive Attack Roy van Rijn 133 24 21 2/ 98/ 0 0 0 7 0 From: Koth Subject: KOTH.ORG: Status - Standard 08/18/03 Date: 18 Aug 2003 10:22:00 -0400 Message-ID: <200308180400.h7I401xk020896@gevjon.ttsg.com> Weekly Status on 08/18/03 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG Standard KotH CoreWar Hill : Last battle concluded at : Sun Jun 22 07:22:28 EDT 2003 # %W/ %L/ %T Name Author Score Age 1 38/ 22/ 40 Quicksilver '88 Michal Janeczek 154 8 2 44/ 38/ 17 Tangle Trap 3 David Moore 150 1 3 35/ 22/ 43 Freight Train David Moore 147 173 4 34/ 22/ 44 Test Alexander (Sasha) Wa 145 112 5 33/ 23/ 44 Guardian Ian Oversby 143 172 6 41/ 41/ 19 My 1st try Christian Schmidt 140 4 7 43/ 45/ 12 vm5 Michal Janeczek 140 7 8 36/ 32/ 32 vala John Metcalf 139 95 9 43/ 50/ 7 Scan Test C 6 Steve Gunnell 137 11 10 30/ 24/ 46 Pixie 88 Lukasz Grabun 136 2 11 36/ 36/ 29 Gymnosperm trickery Dave Hillis 135 59 12 40/ 47/ 13 Blur '88 Anton Marsden 134 210 13 27/ 20/ 53 Test I Ian Oversby 134 229 14 37/ 41/ 22 PacMan David Moore 134 202 15 41/ 48/ 12 Foggy Swamp Beppe Bezzi 133 169 16 38/ 43/ 18 '88 test IV John Metcalf 133 66 17 26/ 20/ 54 EV Paper John K Wilkinson 132 186 18 29/ 26/ 46 Shish-Ka-Bob Ben Ford 131 128 19 30/ 29/ 41 sIMPly.Red v0.95 Leonardo Humberto 130 130 20 37/ 47/ 16 Stasis David Moore 126 280 21 16/ 57/ 27 Rubber Duck Roy van Rijn 76 0 From: Lukasz Grabun Subject: Re: Newb needs help Date: 18 Aug 2003 20:39:39 GMT Message-ID: On 17 Aug 2003 09:42:31 -0700, Andrew Hunter wrote: > Thanks. I got it to work thusly: > ;redcode-94 > start mov.i 0,3620 > add.f 9,-1 > djn.b -2,1 add.f #1, 1 x mov.i -1, 3620 djn.b -2, #number_of_lines does the same *without* extra increment line :-) > spl 3617,11 This one works; alternatively you can copy "backwards" and than jump indirectly like spl @x, ... B-cell of x line would point on the start of warrior. > mov.a 4,-4 > add.f 4,-2 > add.ab 3,-6 > jmp -7,11 > dat -0,-11 > dat 50,11 > dat 1,1 I think you should read Steve's tutorial (this one from koth.org, not the one about stones and imps but that for beginers - he has described hoppers there; have I mentioned you try to create a kind of hopper? :-) > But I'd like to save instructions, by using postincrements instead of > add instructions. > I tried: > > start mov.i }bbb,>bbb <- use labels, dude :-) ... > bbb dat 0,3620 This one does not work. It could have worked however if bbb would be written as follows bbb dat start, 3620 (= bbb dat -10, 3620) Remember, } addresses indirectly and relatively. This means that } takes A number and points to a cell that lays ten cells behind it. Which is cell /start/ in this case. Or... you can do it following way (more classical, I'd say, you'll learn why :-) start mov {bbb, Subject: Decoy Signal Date: 19 Aug 2003 18:26:43 -0400 Message-ID: >From: "Roy van Rijn" >To: fordbc@hotmail.com >Subject: Hi fellow redcoder >Date: Tue, 19 Aug 2003 17:59:08 +0200 > >Hello, > >I have been coding for a while now, and I'm very intrested in seeing Decoy >Signals code... >I've been discussing it for a while, and we really (still!!) can't figure >out what it is, and why it had such an amazing low amount of losses! > >Could you explain what it is, or maybe submit it to koenigstuhl? > >Hope you could ;-) > >Cheers! ;redcode-94nop ;name Decoy Signal ;author Ben Ford ;strategy q^4 -> silk, imps ;assert (CORESIZE==8000) ; ----- paper ----- pimp equ (2667) plen equ ( 8) pend equ (pap1+plen) pgo0 equ (4868+pend) ; 240 4868 pgo1 equ (1100) ; 1880 1100 pgo2 equ (1373) ; 2050 1373 boot spl $ 1, > qC qtb2 spl $ 1, > qD spl $ 1, > qE mov < 1, { 1 pap0 spl pgo0, pend pap1 spl pgo1, $ 0 mov >pap1, }pap1 pap2 spl pgo2, $ 0 mov >pap2, }pap2 pap3 spl @ 0, pap3 mov.i #pgo1*2,}-pgo1 mov.i #pgo2, pimp ; ----- filler ----- for 59 dat $ 0, $ 0 rof qbmb dat {qoff, $ qF ; ----- q-scan decoder ----- qdec mul.b * 2, qptr sne {qtb1, @qptr add.b qtb2, qptr ; ----- q-scan bomber ----- qinc equ ( 7) qclk equ ( 13) qoff equ ( 60) qloo mov qbmb, @qptr qptr mov qbmb, } qX sub #qinc, @qloo djn qloo, #qclk djn.f boot, # 0 ; ----- q-scan scan ----- qX equ (6012) qI equ (7091) ; (qX-1)*qI == 1 mod 8000 qA equ (((qX-1+(qtb1-1-qptr))*qI)%CORESIZE) qB equ (((qX-1+(qtb1-0-qptr))*qI)%CORESIZE) qC equ (((qX-1+(qtb2-1-qptr))*qI)%CORESIZE) qD equ (((qX-1+(qtb2-0-qptr))*qI)%CORESIZE) qE equ (((qX-1+(qtb2+1-qptr))*qI)%CORESIZE) qF equ (((qX-1+(qbmb-0-qptr))*qI)%CORESIZE) qscn sne qptr+qX*qE , qptr+qX*qE+qE seq Get MSN 8 and help protect your children with advanced parental controls. http://join.msn.com/?page=features/parental From: Lukasz Adamowski Subject: Re: Newb needs help Date: 20 Aug 2003 16:11:08 -0400 Message-ID: According to Grabun's explanation I'd like to add, that you can make a little trick with your warrior (I mean the first version of it you've sent to the newsgroup). As Lukasz said, ADD.F #1, $-1 changes the first line of it to MOV.I $1, $-9, because A- and B-fields are added. But remember: adding a number can be replaced by subtracting negative number. I mean that -8+1 eqauls -8-(-1), right? Writing it in RedCode we will have: mov 0,-8 sub.f #-1,-1 djn -2,1 instead of mov 0,-8 add.f #1,-1 djn -2,1 which doesn't work, as you mentioned. This way both A- and B-field will be subtracted, but with negative numbers, ergo incremented as you wished. It's just a trick, nothing more. In your warrior it is better to use incremented and decremented addressing modes, I think, because tricks like this rarely will make warrior shorter or/and faster. Nevertheless tricks can help you to understand RedCode better. Greetings Lukasz Adamowski P.S. Oh, yes! Version with SUB will work slower than version proposed by Grabun. Why? Because it takes one executed instruction more to get out of the loop. Can you see it? Grabun's starts in the second line, this one in the first, so has one instruction more to pass. One instruction isn't much, you can say, but sometimes it matters. From: wackoyacko2000@yahoo.com (Andrew Hunter) Subject: Re: Newb needs help Date: 20 Aug 2003 18:00:28 -0700 Message-ID: <112f3b73.0308201700.31374e52@posting.google.com> Sounds good, thanks. I actually figured the sub trick out eventually...but whatever. I think I got that warrior to the best it will ever be. It scored 30 on the main hill on KOTH. Not very good, so I tried something else. This is my best yet. gate1 equ (gate-5) paper spl 1 mov -1,0 spl 1 mov -1,0 spl @0,3620 mov }-1, >-1 djn 2,#10 jmp st dat -5, 100 gate dat -5, jump-gate1+5 dat #-5, jump-gate1+5 st mov @jump,>gate1 mov @jump,>gate1 jump djn -2,{gate+1 jmp st This is a combination of a simple silk and a slightly modified clear labeled "c-c2" from an old Core Warrior. I removed the spl clear, so each copy copies itself once, removes all but one of the processes, and runs a dat clear. To start with, a few questions. (Like, is this a workable idea at all?) 1. Is there any simple addition/change I can make to make it more effective without changing the main code flow? 2. Is there a better clear to use? 3. I was thinking of somehow making the clear split into 2 which clear back+ forward simultainiously. a. Is this a good idea? b. What's the most effective way of doing it? 4. Lastly, since it's really short, I was thinking of adding a q^2 or other quickscan. I was looking through Core Warrior (as I do to find references for almost everything :) ) and found this q^2 in issue 37 QBASE equ (tab+100) QS1 equ (100) QS2 equ (3*QS1) QS3 equ (6*QS2) QP01 equ (0*QS2) QP02 equ (1*QS2) QP03 equ (2*QS2) QP04 equ (3*QS2) QP05 equ (4*QS2) QP06 equ (5*QS2) HOP01 equ jmp SIG01 equ a01 HOP02 equ jmp SIG02 equ {a01 HOP03 equ jmp SIG03 equ }a01 HOP04 equ jmp SIG04 equ >a01 HOP05 equ jmp SIG05 equ step ;very nice against papers (yes?) ... spl 0,-step+1 ;but not much use against anything else OR mov step,>step ... spl 0,-step+1 jmp -(step+1) ;perhaps better against those which start with 1 process coming in. Some help please? From: fizmo_master@yahoo.com (Fizmo) Subject: Redcoders Frenzy 12: The Limited Distance Round ***Results*** Date: 21 Aug 2003 03:25:43 -0700 Message-ID: <9f53b5fb.0308210225.1deeb74c@posting.google.com> .................................................................... ********************* * Redcoder's Frenzy * ********************* The ongoing corewar tournament /^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ | The Limited Distance Round | \________________________________/ This is the 12th round of the ongoing corewar tournament. Detailed information are available on Fizmo's Corewar Information Page: http://www.corewar.info/tournament/cwt.htm *********** * Results * *********** Altogether, 9 authors enter a total of 14 warriors. (_v_) _|_ | | |-----+-----| ___________ .-=========-. | {{1}} | '._==_==_=_.' \'-=======-'/ | \=/ | .-\: /-. _| .=. |_ '---------' | (|:.{3} |) | ((| {{2}} |)) \ / '-|:. |-' \| /|\ |/ '. .' \::. / \__ '`' __/ | | '::. .' _`) (`_ .' '. ) ( _/_______\_ _|___|_ _.' '._ /___________\ [_______] [_______] 2nd place Winner 3rd place ********************* **************** ****************** * Christian Schmidt * * Roy van Rijn * * David Houston * ********************* **************** ****************** Roy van Rijn's non-standard paper Sunrise claims first place followed by Christian Schmidt with a similar non-standard paper and David Houston with a silk-style paper. Zul Nadzri send the only p-warrior in this round while Christian Schmidt the only scanner hopper and Dave Hillis the only two evovled warriors. ----------------------------------------------------------------- # Name Author W L T Pts % ----------------------------------------------------------------- 1 Sunrise Roy van Rijn 1035 0 1565 179.62 100.0 2 Orc C. Schmidt 746 4 1850 157.23 87.5 3 rerun David Houston 833 388 1379 149.15 83.0 4 U-Lat II Zul Nadzri 583 2 2015 144.77 80.6 5 Sleep all day... John Metcalf 538 29 2033 140.27 78.1 6 D-Clear reGen Roy van Rijn 652 341 1607 137.04 76.3 7 Trauma Zul Nadzri 540 465 1595 123.65 68.8 8 rdrc: Hermetic Visit.Dave Hillis 615 758 1227 118.15 65.8 9 Sprite C. Schmidt 265 128 2207 115.46 64.3 10 rdrc: Eric Devour Dave Hillis 238 134 2228 113.15 63.0 11 Thirty Second Philip Thorne 446 625 1529 110.27 61.4 12 Twenty One of... Will Varfar 424 701 1475 105.65 58.5 13 Clearly Ineffective! John Metcalf 259 1621 720 57.58 32.1 14 Followimp FatalC 8 1986 606 24.23 13.5 ================================================================= More detailed informations and all entries will be available soon on the Limited Distance Round webpage: http://www.corewar.info/tournament/12.htm Congratulations to everyone who has taken part this round. I hope to see more participants in future. Round 13 will be hosted by Michal Janeczek. Rules and deadline will be posted soon on r.g.c. *********** * Ranking * *********** Roy van Rijn cemented his first place followed by Christian Schmidt who climbs 6 places and German Labarga. Zul Nadzri enters the Top 10 jumping up 6 places. Welcome to FatalC, the only newcomers this round. Sadly 6 players left the ranking. # Author Score R7 R8 R9 R10 R11 R12 ------------------------------------------------------------------- 1 (1) Roy van Rijn 383.9 72.6 88.4 71.0 95.5 100.0 100.0 2 (8) Christian Schmidt 348.4 * 100.0 * 98.4 62.5 87.5* 3 (2) German Labarga 334.3 100.0 x 75.4 97.6 61.3 x 4 (5) John Metcalf 307.9 68.4 81.9 79.5 * x 78.1 5 (6) Dave Hillis 295.0 x 71.4 57.8 100.0 x 65.8 6 (3) Simon Duff 292.4 66.1 75.9 86.8 63.6 x x 7 (4) Philip Thorne 283.6 x 80.6 69.2 72.4 x 61.4 8 (14) Zul Nadzri 268.0 x x 75.3 89.7 22.4 80.6 9 (7) Jakub Kozisek 267.5 x 78.4 100.0 89.1 x x 10 (10) Lukasz Adamowski 229.4 43.0 37.4 85.5 63.5 32.5 x 11 (15) Ben Ford 169.9 x 87.6 x 82.3 x x 12 (16) David Moore 167.9 x 69.8 x 98.1 x x 13 (9) Michal Janeczek 165.7 70.4 95.3 x x x x 14 (20) David Houston 158.6 x x x 75.6 x 83.0 15 (13) Sascha Zapf 157.8 64.6 * x 93.2 x x 16 (17) Will Varfar 155.4 x x 36.2 60.7 * 58.5 17 (11) Joshua Hudson 150.9 x 44.5 55.4 x 51.0 x 18 (12) Simon Wainwright 148.6 59.5 x x 89.1 x x 19 (19) Joonas Pihlaja 85.6 x x x 85.6 x x 20 (18) B. Cook 50.0 x x 50.0 x x x 21 (21) Darek Leniowski 35.9 x 35.9 x x x x 22 (22) Arivaalli 24.0 x 24.0 x x x x 23 (-) FatalC 13.5 x x x x x 13.5 out(22) Ilmari Karonen out(23) Steve Gunnell out(24) Paul Khuong out(25) Lukasz Grabun out(27) christian m. out(28) Harbinger Of Doom ------------------------------------------------------------------- * organizer ................................................................... From: wackoyacko2000@yahoo.com (Andrew Hunter) Subject: Re: Newb needs help Date: 21 Aug 2003 10:55:52 -0700 Message-ID: <112f3b73.0308210955.6aa8cf9b@posting.google.com> While I'm at it, one more question: I know of a few constant optimizers, but (correct me if I'm wrong) they only see how well they cover the core evenly. Has anyone written a program to which you can feed a warrior, tell it to change around this/these equ value(s) and have it pop out which gives best benchmark or whatever? If so, someone please link it to me. If not...well, nuts. That'd be nice. Maybe I'll write one :) From: Lukasz Grabun Subject: Re: Newb needs help Date: 21 Aug 2003 16:46:12 GMT Message-ID: On 20 Aug 2003 18:00:28 -0700, Andrew Hunter wrote: > spl @0,3620 > mov }-1, >-1 > djn 2,#10 What is djn 2 #10 intended to do? (oh, you kill a number of processes leaving just one?). You don't have to do this, in fact I'd rather leave all processes to perform a better coreclear. > jmp st > dat -5, 100 > gate dat -5, jump-gate1+5 > dat #-5, jump-gate1+5 > st mov @jump,>gate1 > mov @jump,>gate1 > jump djn -2,{gate+1 > jmp st Ok, this particular clear as for paper module is *way* too big. I'd rather use mov 2, <1 jmp -1, -10 or something. Clear you implemented is kind of d-clear - good against imps. Paper itself is intended to kill imps, however your paper does not carry a single bomb; I'd add, if I were you, a mov dat_bomb, >hit line or something. Check out all papers (Reepicheep's is good example and its paper is not too complicated) > This is a combination of a simple silk and a slightly modified clear > labeled "c-c2" from an old Core Warrior. I removed the spl clear, so > each copy copies itself once, removes all but one of the processes, > and runs a dat clear. > To start with, a few questions. (Like, is this a workable idea at > all?) > 1. Is there any simple addition/change I can make to make it more > effective without changing the main code flow? > 2. Is there a better clear to use? This idea has been implemented before in CCPaper by Franz (?). You could browse older CW issues or check out Kendall's page for CW index - he "labeled" all issues, you will easily find where CCP was described. As I said, I'd drop the large d-clear for smaller mov/jmp, add few (two maybe) bombing lines, optimize the constants against current hill et voila. There're smarter paper makers than me. Fizmo... > 3. I was thinking of somehow making the clear split into 2 which > clear back+ forward simultainiously. > a. Is this a good idea? > b. What's the most effective way of doing it? Check the page URL is given in my sig. You find there a set of articles, one of them covers clears. > 4. Lastly, since it's really short, I was thinking of adding a q^2 or > other quickscan. I was looking through Core Warrior (as I do to find > references for almost everything :) ) and found this q^2 in issue 37 Q^2 is not effective any longer. I'd rather use Q^3 *or* Q^4. Also, you can find plenty of information in CW issues. > spl 0 ;simple, good stun bomb > jmp -1 This is not that effective against silk papers for basically this is silk engine (silk looks like spl @0, >ptr/mov blah, @-1). So it does not slow paper at all. Modern papers are also optimized in such a way as to kill stunned modules. So, I'd say - drop it. > mov step,>step ;very nice against papers (yes?) > ... > spl 0,-step+1 ;but not much use against anything else Much better. Incendiaries are deadly against papers though they must be shot quick. > mov step,>step > ... > spl 0,-step+1 > jmp -(step+1) ;perhaps better against those which start with 1 > process coming in. I've posted an article about Vanquisher (or Return of Vanquisher, don't remember one) in which I made few statements about bombs. But most of all you can find an article in one of CW issues (he says again). Small index can be found on my page (issue #18). -- Lukasz Grabun (My CW page: http://www.astercity.net/~grabek) (reply-to field is fake, use grabek (at) acn dot waw dot pl to reply) From: dhillismail@netscape.net (Dave Hillis) Subject: Re: Redcoders Frenzy 12: The Limited Distance Round ***Results*** Date: 21 Aug 2003 17:56:51 -0700 Message-ID: <5d6847b2.0308211656.dcc732a@posting.google.com> Congrats Roy! And thanks, Fizmo/Christian for hosting another great round. Dave Hillis From: Lukasz Grabun Subject: Re: Newb needs help Date: 21 Aug 2003 18:31:11 GMT Message-ID: On 21 Aug 2003 10:55:52 -0700, Andrew Hunter wrote: > While I'm at it, one more question: I know of a few constant > optimizers, but (correct me if I'm wrong) they only see how well they > cover the core evenly. Has anyone written a program to which you can > feed a warrior, tell it to change around this/these equ value(s) and > have it pop out which gives best benchmark or whatever? If so, > someone please link it to me. If not...well, nuts. That'd be nice. I was planning a one, written in AWK (which is, I bet, designed for such purposes) but it has never left the planning phase. Basically, it depends on what you want to optimize/bench for. If it is a stone you'd better keep on hand (not-random) designing and bench against a couple of stones/imps and scanners. If it is a paper I'd use DBF. -- Lukasz Grabun (My CW page: http://www.astercity.net/~grabek) (reply-to field is fake, use grabek (at) acn dot waw dot pl to reply) From: Lukasz Adamowski Subject: Re: Newb needs help Date: 21 Aug 2003 19:47:56 -0400 Message-ID: A little optimisation. First of all, you can make your warrior shorter and (because it's silk) faster. Let's see... gate1 equ (gate-5) paper spl 1 mov -1, 0 spl 1 mov -1, 0 spl @0, 3620 mov }-1, >-1 djn 2, #10 jmp st dat -5, 100 gate dat -5, jump-gate1+5 dat #-5, jump-gate1+5 st mov @jump, >gate1 mov @jump, >gate1 jump djn -2, {gate+1 jmp st You wanted only one process to get to clear, so you kill the others using DAT -5, 100 line. OK, but why this one? Any of DATs can kill these processes (even a cell lying outside the code!) so there is no need to use a special DAT for this. I.e. you can use the bomb existing in the code. So cutting DAT -5, 100 we have: gate1 equ (gate-4) paper spl 1 mov -1, 0 mov -1, 0 spl 1 spl @0, 3620 mov }-1, >-1 djn 2, #10 jmp st gate dat -5, jump-gate1+5 dat #-5, jump-gate1+5 st mov @jump, >gate1 mov @jump, >gate1 jump djn -2, {gate+1 jmp st Now we have only two DATs. They looks almost thes same, so maybe we can wipe one more? Perhaps this will work: gate1 equ (gate-3) paper spl 1 mov -1, 0 mov -1, 0 mov -1, 0 spl @0, 3620 mov }-1, >-1 djn 2, #1 gate jmp st dat #-5, jump-gate1+5 st mov @jump, >gate1 mov @jump, >gate1 jump djn -2, {gate+1 jmp st Nobody said gate has to be in DAT cell. Notice I changed DJN 2, #10 to DJN 2, #1. I think there is no difference if process used in clear is the first or last one. Using #1 you can modify warrior without worrying if there is enough processes to push one through the DJN. OK, so now we have only 9 cells to copy. But do we really need DJN in the 'jump' line? Yes, DJN is more hostile than simple JMP, but requires JMP as a safety belt next to it. We can resign either DJN or JMP, but it is less risk if we remove DJN. gate1 equ (gate-3) paper spl 1 spl 1 spl 1 spl @0, 3620 mov }-1, >-1 djn 2, #1 gate jmp st dat #-5, jump-gate1+5 st mov @jump, >gate1 mov @jump, >gate1 jump jmp -2, {gate+1 Actually we saved two cells because the booting part is shorter now. What can we do yet? I think there is another way to separate this one process used in clear. I just don't like jumps that omits single cells. Why don't we move DAT at the end of code and put the 'st' line next to DJN 2, #1: gate1 equ (gate-1) paper spl 1 spl 1 mov -1, 0 spl @0, 3620 gate mov }-1, >-1 djn 4, #1 st mov jump+1, >gate1 mov jump+1, >gate1 jump jmp -2, {gate dat #-5, jump-gate1+5 Well, it changed a lot. You may think that gate like this won't work, but I think it will, because there is DJN 4 before clear that will make possible imp jump to the DAT line (in 7999 of 8000 cases). But remember: gate should be at least one cell before clear code. In this warrrior it can be even closer to the begining of warrior. B-field of 'jump' line doesn't point to bomb now, so I changed both MOV lines. I don't know why DAT has such expression in B-field, but it deosn't matter, warrior works properly. Possible further optimisation can be done by changing distance to the silk copy, but this is the part I really don't like, so I shall leave you now. ;] Greets Lukasz Adamowski From: Paul-V Khuong Subject: Re: Newb needs help Date: 21 Aug 2003 19:47:53 -0400 Message-ID: <20030821180431.58345.qmail@web41508.mail.yahoo.com> --- Lukasz Grabun wrote: > On 20 Aug 2003 18:00:28 -0700, Andrew Hunter wrote: > > > spl @0,3620 > > mov }-1, >-1 > > djn 2,#10 > > What is djn 2 #10 intended to do? (oh, you kill a > number of > processes leaving just one?). You don't have to do > this, in fact I'd > rather leave all processes to perform a better > coreclear. In the event that you did want a single process to survive, it'd be shorter to use a division by zero. FE, div.x #2, #1 This should leave the first process through (rounding .5 to 0), and kill all the following processes. __________________________________ Do you Yahoo!? Yahoo! SiteBuilder - Free, easy-to-use web site design software http://sitebuilder.yahoo.com From: "Roy van Rijn" Subject: Re: Redcoders Frenzy 12: The Limited Distance Round ***Results*** Date: Fri, 22 Aug 2003 13:12:07 +0200 Message-ID: <1061550480.146505@halkan.kabelfoon.nl> Thank you very much. It was actualy just a matter of constants, Chris basicly submitted the same warrior. And I would also like to congratulate you, you beat 5 non evolved warriors...that is again proof the evolved warriors thus evolvers are getting stronger! Roy "Dave Hillis" schreef in bericht news:5d6847b2.0308211656.dcc732a@posting.google.com... > Congrats Roy! > And thanks, Fizmo/Christian for hosting another great round. > Dave Hillis From: Lukasz Grabun Subject: Re: Newb needs help Date: 22 Aug 2003 17:48:55 GMT Message-ID: On 21 Aug 2003 19:47:53 -0400, Paul-V Khuong wrote: > In the event that you did want a single process to > survive, it'd be shorter to use a division by zero. > > FE, div.x #2, #1 > > This should leave the first process through (rounding > .5 to 0), and kill all the following processes. Oh, that is nice. Thanks. Problem: six parallel processes, you want 2 to jump into label1, remaining four into label2. I know John and Joonas know the anwser. Anyone cares to `solve' the problem? :-) -- Lukasz Grabun (My CW page: http://www.astercity.net/~grabek) (reply-to field is fake, use grabek (at) acn dot waw dot pl to reply) From: Lukasz Grabun Subject: Re: Decoy Signal Date: 22 Aug 2003 18:00:38 GMT Message-ID: On 19 Aug 2003 18:26:43 -0400, Benjamin Ford wrote: > ;name Decoy Signal Thanks for sharing the code with us. Heh, when I get myself to program this source beautifier there would definitely be an option --ford-style. -- Lukasz Grabun (My CW page: http://www.astercity.net/~grabek) (reply-to field is fake, use grabek (at) acn dot waw dot pl to reply) From: Ian Oversby Subject: Re: Newb needs help Date: Fri, 22 Aug 2003 23:12:35 +0100 Message-ID: Lukasz Grabun wrote: > On 21 Aug 2003 19:47:53 -0400, Paul-V Khuong wrote: > > >>In the event that you did want a single process to >>survive, it'd be shorter to use a division by zero. >> >>FE, div.x #2, #1 >> >>This should leave the first process through (rounding >>.5 to 0), and kill all the following processes. > > > Oh, that is nice. Thanks. > > Problem: six parallel processes, you want 2 to jump into label1, > remaining four into label2. I know John and Joonas know the anwser. > Anyone cares to `solve' the problem? :-) > Something like: org start start jmn.f label1, {label1 label2 jmp.b #0, 1 label1 jmp.b #0 Ian P.S. Hi Lukasz From: Lukasz Grabun Subject: Re: Newb needs help Date: 23 Aug 2003 06:31:25 GMT Message-ID: On Fri, 22 Aug 2003 23:12:35 +0100, Ian Oversby wrote: > P.S. Hi Lukasz Sorry, I changed the text allignment. Hi Ian (welcome back even if it is just for a moment, hopefuly not!). >> Problem: six parallel processes, you want 2 to jump into label1, >> remaining four into label2. I know John and Joonas know the anwser. >> Anyone cares to `solve' the problem? :-) > Something like: > > org start > > start jmn.f label1, {label1 > > label2 jmp.b #0, 1 > label1 jmp.b #0 Somehow I get this to split processes into two groups: 1-5. But it does not matter, the idea is *very* nice but it is code allignment dependand, no? Also, there were no assumptions of what label[1,2] can be alike. Re-problem ========== Six parallel processes, one needs to split them as mentioned before. The label1 and label2 instructions are located anywhere in the *core*. -- Lukasz Grabun (My CW page: http://www.astercity.net/~grabek) (reply-to field is fake, use grabek (at) acn dot waw dot pl to reply) Message-ID: From: anton@paradise.net.nz (Anton Marsden) Subject: Core War Frequently Asked Questions (rec.games.corewar FAQ) Date: 23 Aug 2003 10:35:59 GMT Archive-name: games/corewar-faq Last-Modified: September 4, 1999 Version: 4.2 URL: http://homepages.paradise.net.nz/~anton/cw/corewar-faq.html Copyright: (c) 1999 Anton Marsden Maintainer: Anton Marsden Posting-Frequency: once every 2 weeks Core War Frequently Asked Questions (rec.games.corewar FAQ) These are the Frequently Asked Questions (and answers) from the Usenet newsgroup rec.games.corewar. A plain text version of this document is posted every two weeks. The latest hypertext version is available at http://homepages.paradise.net.nz/~anton/cw/corewar-faq.html and the latest plain text version is available at http://homepages.paradise.net.nz/~anton/cw/corewar-faq.txt. This document is currently being maintained by Anton Marsden (anton@paradise.net.nz). Last modified: Sat Sep 4 00:22:22 NZST 1999 ------------------------------------------------------------------------ To Do * Add the new No-PSpace '94 hill location * Add online location of Dewdney's articles * Make question 17 easier to understand. Add a state diagram? * Add info about infinite hills, related games (C-Robots, Tierra?, ...) * New question: How do I know if my warrior is any good? Refer to beginners' benchmarks, etc. * Add a Who's Who list? * Would very much like someone to compile a collection of the "revolutionary" warriors so that beginners can see how the game has developed over the years. Mail me if interested. ------------------------------------------------------------------------ What's New * Changed primary location of FAQ (again!) * Changed Philip Kendall's home page address. * Updated list server information * Changed primary location of FAQ * Vector-launching code was fixed thanks to Ting Hsu. * Changed the location of Ryan Coleman's paper (LaunchPad -> Launchpad) * Changed pauillac.inria.fr to para.inria.fr ------------------------------------------------------------------------ Table of Contents 1. What is Core War 2. Is it "Core War" or "Core Wars"? 3. Where can I find more information about Core War? 4. Core War has changed since Dewdney's articles. Where do I get a copy of the current instruction set? 5. What is ICWS'94? Which simulators support ICWS'94? 6. What is the ICWS? 7. What is Core Warrior? 8. Where are the Core War archives? 9. Where can I find a Core War system for ...? 10. Where can I find warrior code? 11. I do not have FTP. How do I get all this great stuff? 12. I do not have access to Usenet. How do I post and receive news? 13. Are there any Core War related WWW sites? 14. What is KotH? How do I enter? 15. Is it DAT 0, 0 or DAT #0, #0? How do I compare to core? 16. How does SLT (Skip if Less Than) work? 17. What is the difference between in-register and in-memory evaluation? 18. What is P-space? 19. What does "Missing ;assert .." in my message from KotH mean? 20. How should I format my code? 21. Are there any other Core War related resources I should know about? 22. What does (expression or term of your choice) mean? 23. Other questions? ------------------------------------------------------------------------ 1. What is Core War? Core War is a game played by two or more programs (and vicariously by their authors) written in an assembly language called Redcode and run in a virtual computer called MARS (for Memory Array Redcode Simulator). The object of the game is to cause all processes of the opposing program to terminate, leaving your program in sole posession of the machine. There are Core War systems available for most computer platforms. Redcode has been standardised by the ICWS, and is therefore transportable between all standard Core War systems. The system in which the programs run is quite simple. The core (the memory of the simulated computer) is a continuous array of instructions, empty except for the competing programs. The core wraps around, so that after the last instruction comes the first one again. There are no absolute addresses in Core War. That is, the address 0 doesn't mean the first instruction in the memory, but the instruction that contains the address 0. The next instruction is 1, and the previous one obviously -1. However, all numbers are treated as positive, and are in the range 0 to CORESIZE-1 where CORESIZE is the amount of memory locations in the core - this means that -1 would be treated as CORESIZE-1 in any arithmetic operations, eg. 3218 + 7856 = (3218 + 7856) mod CORESIZE. Many people get confused by this, and it is particularly important when using the SLT instruction. Note that the source code of a program can still contain negative numbers, but if you start using instructions like DIV #-2, #5 it is important to know what effect they will have when executed. The basic unit of memory in Core War is one instruction. Each Redcode instruction contains three parts: * the opcode * the source address (a.k.a. the A-field) * the destination address (a.k.a. the B-field) The execution of the programs is equally simple. The MARS executes one instruction at a time, and then proceeds to the next one in the memory, unless the instruction explicitly tells it to jump to another address. If there is more than one program running, (as is usual) the programs execute alternately, one instruction at a time. The execution of each instruction takes the same time, one cycle, whether it is MOV, DIV or even DAT (which kills the process). Each program may have several processes running. These processes are stored in a task queue. When it is the program's turn to execute an instruction it dequeues a process and executes the corresponding instruction. Processes that are not killed during the execution of the instruction are put back into the task queue. Processes created by a SPL instruction are added to the task queue after the creating process is put back into the task queue. [ToC] ------------------------------------------------------------------------ 2. Is it "Core War" or "Core Wars"? Both terms are used. Early references were to Core War. Later references seem to use Core Wars. I prefer "Core War" to refer to the game in general, "core wars" to refer to more than one specific battle. [ToC] ------------------------------------------------------------------------ 3. Where can I find more information about Core War? Core War was first described in the Core War Guidelines of March, 1984 by D. G. Jones and A. K. Dewdney of the Department of Computer Science at The University of Western Ontario (Canada). Dewdney wrote several "Computer Recreations" articles in Scientific American which discussed Core War, starting with the May 1984 article. Those articles are contained in two anthologies: Library of Author Title Published ISBN Congress Call Number The Armchair Dewdney, Universe: An New York: W. QA76.6 .D517 A. K. Exploration of H. Freeman �0-7167-1939-8 1988 Computer Worlds 1988 The Magic 0-7167-2125-2 Dewdney, Machine: A New York: W.(Hardcover), QA76.6 A. K. Handbook of H. Freeman �0-7167-2144-9 .D5173 1990 Computer Sorcery 1990 (Paperback) A.K. Dewdney's articles are still the most readable introduction to Core War, even though the Redcode dialect described in there is no longer current. For those who are interested, Dewdney has a home page at http://www.csd.uwo.ca/faculty/akd/. [ToC] ------------------------------------------------------------------------ 4. Core War has changed since Dewdney's articles. Where do I get a copy of the current instruction set? A draft of the official standard (ICWS'88) is available as ftp://www.koth.org/corewar/documents/standards/redcode-icws-88.Z. This document is formatted awkwardly and contains ambiguous statements. For a more approachable intro to Redcode, take a look at Mark Durham's tutorials, ftp://www.koth.org/corewar/documents/tutorial.1.Z and ftp://www.koth.org/corewar/documents/tutorial.2.Z. Steven Morrell has prepared a more practically oriented Redcode tutorial that discusses different warrior classes with lots of example code. This and various other tutorials can be found at http://www.koth.org/papers.html. Even though ICWS'88 is still the "official" standard, you will find that most people are playing by ICWS'94 draft rules and extensions. [ToC] ------------------------------------------------------------------------ 5. What is ICWS'94? Which simulators support ICWS'94? There is an ongoing discussion about future enhancements to the Redcode language. A proposed new standard, dubbed ICWS'94, is currently being evaluated. A major change is the addition of "instruction modifiers" that allow instructions to modify A-field, B-field or both. Also new is a new addressing modes and unrestricted opcode and addressing mode combination ("no illegal instructions"). ICWS'94 is backwards compatible; i.e. ICWS'88 warriors will run correctly on an ICWS'94 system. Take a look at the ICWS'94 draft at ftp://www.koth.org/corewar/documents/icws94.0202.Z for more information. There is a HTML version of this document available at http://www.koth.org/info/icws94.html. You can try out the new standard by submitting warriors to the '94 hills of the KotH servers. Two corewar systems currently support ICWS'94, pMARS (many platforms) and Redcoder (Mac), both available at ftp://www.koth.org/corewar. Note that Redcoder only supports a subset of ICWS'94. [ToC] ------------------------------------------------------------------------ 6. What is the ICWS? About one year after Core War first appeared in Scientific American, the "International Core War Society" (ICWS) was established. Since that time, the ICWS has been responsible for the creation and maintenance of Core War standards and the running of Core War tournaments. There have been six annual tournaments and two standards (ICWS'86 and ICWS'88). The ICWS is no longer active. [ToC] ------------------------------------------------------------------------ 7. What is Core Warrior? Following in the tradition of the Core War News Letter, Push Off, and The 94 Warrior, Core Warrior is a newsletter about strategies and current standings in Core War. Started in October 1995, back issues of Core Warrior (and the other newsletters) are available at http://para.inria.fr/~doligez/corewar/. There is also a Core Warrior index page at http://www.kendalls.demon.co.uk/pak21/corewar/warrior.html which has a summary of the contents of each issue of Core Warrior. Many of the earlier issues contain useful information for beginners. [ToC] ------------------------------------------------------------------------ 8. Where are the Core War archives? Many documents such as the guidelines and the ICWS standards along with previous tournament Redcode entries and complete Core War systems are available via anonymous ftp from ftp://ftp.csua.berkeley.edu/pub/corewar. Also, most of past rec.games.corewar postings (including Redcode source listings) are archived there. Jon Blow (blojo@csua.berkeley.edu) is the archive administrator. When uploading to /pub/corewar/incoming, ask Jon to move your upload to the appropriate directory and announce it on the net. This site is mirrored at: * http://www.koth.org/corewar/ * ftp://www.koth.org/corewar/ * ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/mirror The plain text version of this FAQ is automatically archived by news.answers (but this version is probably out-of-date). [ToC] ------------------------------------------------------------------------ 9. Where can I find a Core War system for . . . ? Core War systems are available via anonymous FTP from www.koth.org in the corewar/systems directory. Currently, there are UNIX, IBM PC-compatible, Macintosh, and Amiga Core War systems available there. It is a good idea to check ftp://www.koth.org/corewar/incoming for program updates first. CAUTION! There are many, many Core War systems available which are NOT ICWS'88 (or even ICWS'86) compatible available at various archive sites other than www.koth.org. Generally, the older the program - the less likely it will be ICWS compatible. If you are looking for an ICWS'94 simulator, get pMARS, which is available for many platforms and can be downloaded from: * ftp://ftp.csua.berkeley.edu/pub/corewar (original site) * ftp://www.koth.org/corewar (koth.org mirror) * ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/mirror (Planar mirror) * http://www.nc5.infi.net/~wtnewton/corewar/ (Terry Newton) * ftp://members.aol.com/ofechner/corewar (Fechter) Notes: * If you have trouble running pMARS with a graphical display under Win95 then check out http://www.koth.org/pmars.html which should have a pointer to the latest compilation of pMARS for this environment. * RPMs for the Alpha, PowerPC, Sparc and i386 can be found at ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/pmars-rpm/ Reviews of Core War systems would be greatly appreciated in the newsgroup and in the newsletter. Below is a not necessarily complete or up-to-date list of what's available at www.koth.org: MADgic41.lzh corewar for the Amiga, v4.1 MAD4041.lzh older version? MAD50B.lha corewar for the Amiga, beta version 5.0 Redcoder-21.hqx corewar for the Mac, supports ICWS'88 and '94 (without extensions) core-11.hqx corewar for the Mac core-wars-simulator.hqx same as core-11.hqx? corewar_unix_x11.tar.Z corewar for UNIX/X-windows, ICWS'86 but not ICWS'88 compatible koth31.tar.Z corewar for UNIX/X-windows. This program ran the former KotH server at intel.com koth.shar.Z older version kothpc.zip port of older version of KotH to the PC deluxe20c.tar.Z corewar for UNIX (broken X-windows or curses) and PC mars.tar.Z corewar for UNIX, likely not ICWS'88 compatible icons.zip corewar icons for MS-Windows macrored.zip a redcode macro-preprocessor (PC) c88v49.zip PC corewar, textmode display mars88.zip PC corewar, graphics mode display corwp302.zip PC corewar, textmode display, slowish mercury2.zip PC corewar written in assembly, fast! mtourn11.zip tournament scheduler for mercury (req. 4DOS) pmars08s.zip portable system, ICWS'88 and '94, runs on UNIX, PC, Mac, Amiga. C source archive pmars08s.tar.Z same as above pmars08.zip PC executables with graphics display, req 386+ macpmars02.sit.hqx pMARS executable for Mac (port of version 0.2) buggy, no display MacpMARS1.99a.cpt.hqx port of v0.8 for the Mac, with display and debugger MacpMARS1.0s.cpt.hqx C source (MPW, ThinkC) for Mac frontend pvms08.zip pMARS v0.8 for VMS build files/help (req. pmars08s.zip) ApMARS03.lha pMARS executable for Amiga (port of version 0.3.1) wincor11.zip MS-Windows system, shareware ($15) [ToC] ------------------------------------------------------------------------ 10. Where can I find warrior code? To learn the game, it is a good idea to study previously posted warrior code. The FTP archives have code in the ftp://www.koth.org/corewar/redcode directory. A clearly organized on-line warrior collection is available at the Core War web sites (see below). [ToC] ------------------------------------------------------------------------ 11. I do not have FTP. How do I get all this great stuff? There is an FTP email server at bitftp@pucc.princeton.edu. This address may no longer exist. I haven't tested it yet. Send email with a subject and body text of "help" (without the quotes) for more information on its usage. Note that many FTP email gateways are shutting down due to abuse. To get a current list of FTP email servers, look at the Accessing the Internet by E-mail FAQ posted to news.answers. If you don't have access to Usenet, you can retrieve this FAQ one of the following ways: * Send mail to mail-server@rtfm.mit.edu with the body containing "send usenet/news.answers/internet-services/access-via-email". * Send mail to mailbase@mailbase.ac.uk with the body containing "send lis-iis e-access-inet.txt". [ToC] ------------------------------------------------------------------------ 12. I do not have access to Usenet. How do I post and receive news? To receive rec.games.corewar articles by email, join the COREWAR-L list run on the Koth.Org list processor. To join, send the message SUB COREWAR-L FirstName LastName to listproc@koth.org. You can send mail to corewar-l@koth.org to post even if you are not a member of the list. Responsible for the listserver is Scott J. Ellentuch (ttsg@ttsg.com). Servers that allow you to post (but not receive) articles are available. Refer to the Accessing the Internet by E-Mail FAQ for more information. [ToC] ------------------------------------------------------------------------ 13. Are there any Core War related WWW sites? You bet. Each of the two KotH sites sport a world-wide web server. Stormking's Core War page is http://www.koth.org; pizza's is http://www.ecst.csuchico.edu/~pizza/koth . Damien Doligez (a.k.a. Planar) has a web page that features convenient access to regular newsletters (Push Off, The '94 Warrior, Core Warrior) and a well organized library of warriors: http://para.inria.fr/~doligez/corewar/. Convenient for U.S. users, this site is also mirrored at koth.org. [ToC] ------------------------------------------------------------------------ 14. What is KotH? How do I enter? King Of The Hill (KotH) is an ongoing Core War tournament available to anyone with email. You enter by submitting via email a Redcode program (warrior) with special comment lines. You will receive a reply indicating how well your program did against the current top programs "on the hill". There are two styles of KotH tournaments, "classical" and "multi-warrior". The "classical" KotH is a one-on-one tournament, that is your warrior will play 100 battles against each of the 20 other programs currently on the Hill. You receive 3 points for each win and 1 point for each tie. (The existing programs do not replay each other, but their previous battles are recalled.) All scores are updated to reflect your battles and all 21 programs are ranked from high to low. If you are number 21 you are pushed off the Hill, if you are higher than 21 someone else is pushed off. In "multi-warrior" KotH, all warriors on the hill fight each other at the same time. Score calculation is a bit more complex than for the one-on-one tournament. Briefly, points are awarded based on how many warriors survive until the end of a round. A warrior that survives by itself gets more points than a warrior that survives together with other warriors. Points are calculated from the formula (W*W-1)/S, where W is the total number of warriors and S the number of surviving warriors. The pMARS documentation has more information on multi-warrior scoring. The idea for an email-based Core War server came from David Lee. The original KotH was developed and run by William Shubert at Intel starting in 1991, and discontinued after almost three years of service. Currently, KotHs based on Bill's UNIX scripts but offering a wider variety of hills are are running at two sites: koth@koth.org is maintained by Scott J. Ellentuch (tuc@ttsg.com) and pizza@ecst.csuchico.edu by Thomas H. Davies (sd@ecst.csuchico.edu). Up until May '95, the two sites provided overlapping services, i.e. the some of the hill types were offered by both "pizza" and "stormking". To conserve resources, the different hill types are now divided up among the sites. The way you submit warriors to both KotHs is pretty much the same. Therefore, the entry rules described below apply to both "pizza" and "stormking" unless otherwise noted. Entry Rules for King of the Hill Corewar * Write a corewar program. KotH is fully ICWS '88 compatible, EXCEPT that a comma (",") is required between two arguments. * Put a line starting with ";redcode" (or ";redcode-94", etc., see below) at the top of your program. This MUST be the first line. Anything before it will be lost. If you wish to receive mail on every new entrant, use ";redcode verbose". Otherwise you will only receive mail if a challenger makes it onto the hill. Use ";redcode quiet" if you wish to receive mail only when you get shoved off the hill. Additionally, adding ";name " and ";author " will be helpful in the performance reports. Do NOT have a line beginning with ";address" in your code; this will confuse the mail daemon and you won't get mail back. Using ";name" is mandatory on the Pizza hills. In addition, it would be nice if you have lines beginning with ";strategy" that describe the algorithm you use. There are currently seven separate hills you can select by starting your program with ;redcode-94, ;redcode-b, ;redcode-lp, ;redcode-x, ;redcode, ;redcode-94x or ;redcode-94m. The former four run at "pizza", the latter three at "stormking". More information on these hills is listed below. * Mail this file to koth@koth.org or pizza@ecst.csuchico.edu. "Pizza" requires a subject of "koth" (use the -s flag on most mailers). * Within a few minutes you should get mail back telling you whether your program assembled correctly or not. If it did assemble correctly, sit back and wait; if not, make the change required and re-submit. * In an hour or so you should get more mail telling you how your program performed against the current top 20 (or 10) programs. If no news arrives during that time, don't worry; entries are put in a queue and run through the tournament one at a time. A backlog may develop. Be patient. If your program makes it onto the hill, you will get mail every time a new program makes it onto the hill. If this is too much mail, you can use ";redcode[-??] quiet" when you first mail in your program; then you will only get mail when you make it on the top 25 list or when you are knocked off. Using ";redcode[-??] verbose" will give you even more mail; here you get mail every time a new challenger arrives, even if they don't make it onto the top 25 list. Often programmers want to try out slight variations in their programs. If you already have a program named "foo V1.0" on the hill, adding the line ";kill foo" to a new program will automatically bump foo 1.0 off the hill. Just ";kill" will remove all of your programs when you submit the new one. The server kills programs by assigning an impossibly low score; it may therefore take another successful challenge before a killed program is actually removed from the hill. Sample Entry ;redcode ;name Dwarf ;author A. K. Dewdney ;strategy Throw DAT bombs around memory, hitting every 4th memory cell. ;strategy This program was presented in the first Corewar article. bomb DAT #0 dwarf ADD #4, bomb MOV bomb, @bomb JMP dwarf END dwarf ; Programs start at the first line unless ; an "END start" pseudo-op appears to indicate ; the first logical instruction. Also, nothing ; after the END instruction will be assembled. Duration Max. Hill Name Hill Core Max. Before Entry Min. Rounds Instr. Size Size Processes Distance Fought Set Tie Length Pizza's ICWS '94 Draft Hill Extended (Accessed with 25 8000 8000 80000 100 100 200 ICWS '94 ";redcode-94") Draft Pizza's Beginner's Extended Hill (Accessed 25 8000 8000 80000 100 100 200 ICWS '94 with ";redcode-b") Draft Pizza's Experimental Extended (Small) Hill 25 800 800 8000 20 20 200 ICWS '94 (Accessed with Draft ";redcode-x") Pizza's Limited Process (LP) Hill Extended (Accessed with 25 8000 8 80000 200 200 200 ICWS '94 ";redcode-lp") Draft Stormking's ICWS '88 Standard Hill (Accessed with 20 8000 8000 80000 100 100 250 ICWS '88 ";redcode") Stormking's ICWS '94 No Pspace Hill (Accessed with 20 8000 8000 80000 100 100 250 ICWS '94 ";redcode-94nop") Stormking's ICWS '94 Experimental Extended (Big) Hill 20 55440 55440 500000 200 200 250 ICWS '94 (Accessed with Draft ";redcode-94x") Stormking's ICWS '94 Multi-Warrior Extended Hill (Accessed 10 8000 8000 80000 100 100 200 ICWS '94 with Draft ";redcode-94m") Note: Warriors on the beginner's hill are retired at age 100. If you just want to get a status report without actually challenging the hills, send email with ";status" as the message body (and don't forget "Subject: koth" for "pizza"). If you send mail to "pizza" with "Subject: koth help" you will receive instructions that may be more up to date than those contained in this document. At "stormking", a message body with ";help" will return brief instructions. If you submit code containing a ";test" line, your warrior will be assembled but not actually pitted against the warriors on the hill. At "pizza", you can use ";redcode[-??] test" to do a test challenge of the Hill without affecting the status of the Hill. These challenges can be used to see how well your warrior does against the current Hill warriors. All hills run portable MARS (pMARS) version 0.8, a platform-independent Core War system available at www.koth.org. The '94 and '94x hills allow five experimental opcodes and three experimental addressing modes currently not covered in the ICWS'94 draft document: * LDP - Load P-Space * STP - Store P-Space * SEQ - Skip if EQual (synonym for CMP) * SNE - Skip if Not Equal * NOP - (No OPeration) * * - indirect using A-field as pointer * { - predecrement indirect using A-field * } - postincrement indirect using A-field [ToC] ------------------------------------------------------------------------ 15. Is it DAT 0, 0 or DAT #0, #0? How do I compare to core? Core is initialized to DAT 0, 0. This is an illegal instruction (in source code) under ICWS'88 rules and strictly compliant assemblers (such as KotH or pmars -8) will not let you have a DAT 0, 0 instruction in your source code - only DAT #0, #0. So this begs the question, how to compare something to see if it is empty core. The answer is, most likely the instruction before your first instruction and the instruction after your last instruction are both DAT 0, 0. You can use them, or any other likely unmodified instructions, for comparison. Note that under ICWS'94, DAT 0, 0 is a legal instruction. [ToC] ------------------------------------------------------------------------ 16. How does SLT (Skip if Less Than) work? SLT gives some people trouble because of the way modular arithmetic works. It is important to note that all negative numbers are converted to positive numbers before a battles begins. Example: -1 becomes M-1 where M is the memory size (core size). Once you realize that all numbers are treated as positive, it is clear what is meant by "less than". It should also be clear that no number is less than zero. [ToC] ------------------------------------------------------------------------ 17. What is the difference between in-register and in-memory evaluation? These terms refer to the way instruction operands are evaluated. The '88 Redcode standard ICWS'88 is unclear about whether a simulator should "buffer" the result of A-operand evaluation before the B-operand is evaluated. Simulators that do buffer are said to use in-register evaluation, those that don't, in-memory evaluation. ICWS'94 clears this confusion by mandating in-register evaluation. Instructions that execute differently under these two forms of evaluation are MOV, ADD, SUB, MUL, DIV and MOD where the effective address of the A-operand is modified by evaluation of the B-operand. This is best illustrated by an example: L1 mov L2, mov.i #0, impsize Bootstrapping Strategy of copying the active portion of the program away from the initial location, leaving a decoy behind and making the relocated program as small as possible. B-Scanners Scanners which only recognize non-zero B-fields. example add #10, scan scan jmz example, 10 c Measure of speed, equal to one location per cycle. Speed of light. CMP-Scanner A Scanner which uses a CMP instruction to look for opponents. example add step, scan scan cmp 10, 30 jmp attack jmp example step dat #20, #20 Colour Property of bombs making them visible to scanners, causing them to attack useless locations, thus slowing them down. example dat #100 Core-Clear Code that sequentially overwrites core with DAT instructions; usually the last part of a program. Decoys Bogus or unused instructions meant to slow down scanners. Typically, DATs with non-zero B-fields. Decrement Resistant Property of warriors making them functional (or at least partially functional) when overrun by a DJN-stream. DJN-Stream (also DJN-Train) Using a DJN command to rapidly decrement core locations. example ... ... djn example, <4000 Dwarf The prototypical small bomber. Gate-busting (also gate-crashing) technique to "interweave" a decrement-resistant imp-spiral (e.g. MOV 0, 2668) with a standard one to overrun imp-gates. Hybrids warriors that combine two or more of the basic strategies, either in sequence (e.g. stone->paper) or in parallel (e.g. imp/stone). Imp Program which only uses the MOV instruction. example mov 0, 1 or example mov 0, 2 mov 0, 2 Imp-Gate A location in core which is bombed or decremented continuously so that an Imp can not pass. Also used to describe the program-code which maintains the gate. example ... ... spl 0, mov.i #0,IMPSIZE Mirror see reflection. On-axis/off-axis On-axis scanners compare two locations M/2 apart, where M is the memory size. Off-axis scanners use some other separation. Optimal Constants (also optima-type constants) Bomb or scan increments chosen to cover core most effectively, i.e. leaving gaps of uniform size. Programs to calculate optimal constants and lists of optimal numbers are available at www.koth.org. Paper A Paper-like program is one which replicates itself many times. Part of the Scissors (beats) Paper (beats) Stone (beats Scissors) analogy. P-Warrior A warrior which uses the results of previous round(s) in order to determine which strategy it will use. Pit-Trapper (also Slaver, Vampire). A program which enslaves another. Usually accomplished by bombing with JMPs to a SPL 0 pit with an optional core-clear routine. Q^2 Scan A modern version of the Quick Scan where anything found is attacked almost immediately. Quick Scan 2c scan of a set group of core locations with bombing if anything is found. Both of the following codes snips scan 16 locations and check for a find. If anything is found, it is attacked, otherwise 16 more locations are scanned. Example: start s1 for 8 ;'88 scan cmp start+100*s1, start+100*s1+4000 ;check two locations mov #start+100*s1-found, found ;they differ so set pointer rof jmn attack, found ;if we have something, get it s2 for 8 cmp start+100*(s2+6), start+100*(s2+6)+4000 mov #start+100*(s2+6)-found, found rof found jmz moveme, #0 ;skip attack if qscan found nothing attack cmp @found, start-1 ;does found points to empty space? add #4000, found ;no, so point to correct location mov start-1, @found ;move a bomb moveme jmp 0, 0 In ICWS'94, the quick scan code is more compact because of the SNE opcode: start ;'94 scan s1 for 4 sne start+400*s1, start+400*s1+100 ;check two locations seq start+400*s1+200, start+400*s1+300 ;check two locations mov #start+400*s1-found, found ;they differ so set pointer rof jmn which, found ;if we have something, get it s2 for 4 sne start+400*(s2+4), start+400*(s2+4)+100 seq start+400*(s2+4)+200, start+400*(s2+4)+300 mov #start+400*(s2+4)-found-100, found rof found jmz moveme, #0 ;skip attack if qscan found nothing add #100, -1 ;increment pointer till we get the which jmn -1, @found ;right place mov start-1, @found ;move a bomb moveme jmp 0, 0 Reflection Copy of a program or program part, positioned to make the active program invisible to a CMP-scanner. Replicator Generic for Paper. A program which makes many copies of itself, each copy also making copies. Self-Splitting Strategy of amplifying the number of processes executing a piece of code. example spl 0 loop add #10, example mov example, @example jmp loop Scanner A program which searches through core for an opponent rather than bombing blindly. Scissors A program designed to beat replicators, usually a (B-field scanning) vampire. Part of the Paper-Scissors-Stone analogy. Self-Repair Ability of a program to fix it's own code after attack. Silk A replicator which splits off a process to each new copy before actually copying the code. This allows it to replicate extremely quickly. This technique is only possible under the '94 draft, because it requires post-increment indirect addressing. Example: spl 1 mov -1, 0 spl 1 ;generate 6 consecutive processes silk spl 3620, #0 ;split to new copy mov >-1, }-1 ;copy self to new location mov bomb, >2000 ;linear bombing mov bomb, }2042 ;A-indirect bombing for anti-vamp jmp silk, {silk ;reset source pointer, make new copy bomb dat >2667, >5334 ;anti-imp bomb Slaver see Pit-Trapper. Stealth Property of programs, or program parts, which are invisible to scanners, accomplished by using zero B-fields and reflections. Stone A Stone-like program designed to be a small bomber. Part of the Paper-Scissors-Stone analogy. Stun A type of bomb which makes the opponent multiply useless processes, thus slowing it down. Example is referred to as a SPL-JMP bomb. example spl 0 jmp -1 Two-Pass Core-Clear (also SPL/DAT Core-Clear) core clear that fills core first with SPL instructions, then with DATs. This is very effective in killing paper and certain imp-spiral variations. Vampire see Pit-Trapper. Vector Launch one of several means to start an imp-spiral running. As fast as Binary Launch, but requiring much less code. See also JMP/ADD Launch and Binary Launch. This example is one form of a Vector Launch: sz EQU 2667 spl 1 spl 1 jmp @vt, }0 vt dat #0, imp+0*sz ; start of vector table dat #0, imp+1*sz dat #0, imp+2*sz dat #0, imp+3*sz ; end of vector table imp mov.i #0, sz [ToC] ------------------------------------------------------------------------ 23. Other questions? Just ask in the rec.games.corewar newsgroup or contact me. If you are shy, check out the Core War archives first to see if your question has been answered before. [ToC] ------------------------------------------------------------------------ Credits Additions, corrections, etc. to this document are solicited. Thanks in particular to the following people who have contributed major portions of this document: * Mark Durham (wrote the original version of the FAQ) * Paul Kline * Randy Graham * Stefan Strack (maintained a recent version of the FAQ) ------------------------------------------------------------------------ Copyright � 1999 Anton Marsden. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ------------------------------------------------------------------------ From: Lukasz Grabun Subject: Re: Newb needs help Date: 23 Aug 2003 11:24:27 GMT Message-ID: On Sat, 23 Aug 2003 12:18:38 +0100, Ian Oversby wrote: > jmz.f label1, jmp.b label2 > Where end is the end of your program Ha! Thank you, this is what I've been asking about. :-) > Alternatively this might work: > slt.ab <0, #2 > jmp.b label2 > jmp.b label1 Three instructions, compared to two... The former has bigger footprint but it does not matter for processes are about to jump into remote parts of core (providing it works :-) Still, this is tricky, thank-you. > I really need to download a mars so I can debug this stuff. Download? Humph. -- Lukasz Grabun (My CW page: http://www.astercity.net/~grabek) (reply-to field is fake, use grabek (at) acn dot waw dot pl to reply) From: Ian Oversby Subject: Re: Newb needs help Date: Sat, 23 Aug 2003 12:18:38 +0100 Message-ID: Lukasz Grabun wrote: > Somehow I get this to split processes into two groups: 1-5. But it > does not matter, the idea is *very* nice but it is code allignment > dependand, no? Also, there were no assumptions of what label[1,2] can > be alike. Well, it depends. I imagine you can do something similar by having a jmz.f label1, Subject: Re: Newb needs help AKA separating processes Date: 24 Aug 2003 10:52:33 -0400 Message-ID: How about this example. Splits (or rather separates, SPL does splits ;) processes (here: eight) into 'many' (here: three) groups in any order you like: many EQU 3 code EQU 1+1*3+0*9+2*27+0*81+2*243+1*729+0*2187 start spl 1 spl 1 spl 1 spl _1 _0 spl _3 _2 mov.ba _3, _5 dat $0, $0 _3 div #many, #code dat $0, $0 _1 spl _5 _4 mod.a #many, _5 dat $0, $0 _5 jmp @0, label_1 dat $0, label_2 dat $0, label_3 ; ... ; dat $0, label_many I don't think it's something really great, it's even worse than simple: start spl 1 spl 1 spl 1 jmp @1, }0 dat $0, label_2 dat $0, label_2 dat $0, label_1 dat $0, label_3 dat $0, label_1 dat $0, label_3 dat $0, label_2 dat $0, label_1 which does the same faster and is smaller, but maybe someone finds out something interesting in that way of separating processes. It's universal, the only limit is the highest number possible to code which is CORESIZE/2, as you know. Greetings Lukasz Adamowski P.S. I really don't know, what am I doing! I should be writing my final master's degree project. ;] From: "A. Pagaltzis" Subject: Re: Joke Date: 24 Aug 2003 10:52:22 -0400 Message-ID: <20030823224607.GA8285@klangraum> * Lukasz Grabun [2003-07-23 23:38]: > - Did you read the paper today? > - Yes. > - Did you see that headline? > - No, what did it say? > - spl @0, >3455. ROTFL -- Regards, Aristotle "If you can't laugh at yourself, you don't take life seriously enough." From: wackoyacko2000@yahoo.com (Andrew Hunter) Subject: Re: Newb needs help Date: 24 Aug 2003 15:31:02 -0700 Message-ID: <112f3b73.0308241431.2484ae73@posting.google.com> Thanks a lot. The optimized version you gave me is shorter and better. As stated once by another, the djn isn't really necessary, and I realized that the number of movs can be changed. I submitted to the No Pspace '94 hill (Where this performs best) and found that out of the possible ways to have or not have a djn and variable numbers of movs, the best was this, with no djn, 3 movs, and cleaned code. boot spl 1 spl 1 mov -1,0 spl @0, 3620 gate mov }-1, >-1 st mov bomb,>bomb for 2 mov bomb,>bomb rof jump jmp st, {gate bomb dat 1,1 I think I'll keep it as is for now, at least. Soon, I might try having it make 2 copies (If I ever get myself to understand how in the world that's done...a little help someone?) but for now it's good. My current q^4 is this. I got it from ROTF, changing a few things, but nothing major--and what I did change, I did (I think) kludgilly. (If that's a word.) ;CHANGE marks changed lines. step equ 6;CHANGE iHOP equ (2667) iINC equ (-iHOP-1) iORG equ (spin+630) iOFF equ (iORG+iINC) qf equ qptr qs1 equ (-120) qs2 equ (-240) qd equ 4000 qi equ 14;CHANGE qr equ 13 qo equ (qi*qr-(qi/2)) mark2 dat 22,22;CHANGE qbmb mov step, >step;CHANGE qbm2 spl 0, -step+1 ;CHANGE dat # 15, # 10 ; A, D qtab dat # 7, # 4 ; B, E dat # 13, # 11 ; C, F dat < 1, < qo qinc dat # qd, # qd qfas mul.f qtab, qptr ; decode qfnd sne *qptr, @qptr add qinc, qptr sne >3456, @qptr mov.x qptr, qptr add.i qptr, mark2;CHANGE qloo mov qbmb, @qptr ; .5c negative bomber mov qbm2, @mark2;CHANGE qptr nop < qs2, @ qs1;CHANGE sub.x # qi, qptr sub.x #qi, mark2;CHANGE djn qloo, # qr jmp boot, >1234 qscan sne qf+ 1*qs2, qf+ 1*qs1 seq qf+ 1*qs2+qd, qf+ 1*qs1+qd ; 1, 1 jmp qfnd, {qf+ 1*qs2+qd+qi sne qf+ 8*qs2, qf+ 4*qs1 seq qf+ 8*qs2+qd, qf+ 4*qs1+qd ; B+1, E jmp qfas, }qtab sne qf+ 7*qs2, qf+ 5*qs1 seq qf+ 7*qs2+qd, qf+ 5*qs1+qd ; B, E+1 jmp qfas, >qtab sne qf+ 6*qs2, qf+ 3*qs1 seq qf+ 6*qs2+qd, qf+ 3*qs1+qd ; B-1, E-1 djn.f qfas, qtab sne qf+13*qs2, qf+11*qs1 seq qf+13*qs2+qd, qf+11*qs1+qd ; C, F jmp qfas, }qfas sne qf+15*qs2, qf+10*qs1 seq qf+15*qs2+qd, qf+10*qs1+qd ; A, D jmp qfas, {qfas sne qf+14*qs2, qf+ 9*qs1 seq qf+14*qs2+qd, qf+ 9*qs1+qd ; A-1, D-1 djn.f qfas, {qfas jmp boot d2 equ 1143 TSTEP equ 1751 bstep equ 1819 ;2283 ;1997 bootto equ 1700-(80+15)*4-1 Basically, I was told that yes, the best bomb here would be an incindiary. So, I added a line mark2 dat 22,22 at the beginning, which had the right numbers in it to point indirectly to the same thing as the line which held the targets, after the target line was added to mark2. I also changed qi, the distance between bomb hits, to 14 (picked out of nowhere) to make sure there was sufficient room 'tween my incindiaries so they didn't overlap. Here's the actual bombing code. qfas mul.f qtab, qptr ; decode qfnd sne *qptr, @qptr add qinc, qptr sne >3456, @qptr mov.x qptr, qptr add.i qptr, mark2;CHANGE qloo mov qbmb, @qptr ; .5c negative bomber mov qbm2, @mark2;CHANGE qptr nop < qs2, @ qs1;CHANGE sub.x # qi, qptr sub.x #qi, mark2;CHANGE djn qloo, # qr jmp boot, >1234 I don't understand the decoding process or pretend to, so I just left it as is. I worked out that after decoding, qptr held the positions to be bombed. So, I added it to mark2, which already held numbers set so that after the add, it pointed to a point step (6) cells after qptr. I added a second bombing line, pointing to mark2, to put in the second part of the incendiary. I then changed qptr to a nop, since a indirect bomb might screw with the incendiaries, but I didn't dare remove it since I don't understand how the q^4 works. This and the other kludges I used means (I think) that this is slow and inefficent. Can anyone help me? From: bvowk@math.ualberta.ca (Barkley Vowk) Subject: Re: 100% Evolved warrior on 94-nop Date: 24 Aug 2003 18:41:54 -0700 Message-ID: elmartinos@eml.cc (Martinus) wrote in message news:<7024f804.0308120928.721a9c51@posting.google.com>... > Wow, this is really amazing. > Will the sourcecode of your program be available? :-) > > martin > You can find it at http://www.expert-sys.com/files/ccai-1.0.tgz It even includes your latest version of exhaust :) BV From: wackoyacko2000@yahoo.com (Andrew Hunter) Subject: question about benchmarking Date: 26 Aug 2003 05:04:52 -0700 Message-ID: <112f3b73.0308260404.26c9e201@posting.google.com> I don't really understand how to benchmark warriors. To be exact, using a program given to me by John Metcalf, I have created 100 warriors with different constants. I'd like to set them all overnight or something to just rip through some test, to figure out what the optimal constant is. Please don't tell me just to "download wilmoo/wilfiz/etc." I have these benches. I just can't use them, because I don't know how. I'm using WinXP, so trying to run Wilmoo doesn't work anyway, since I can't run the basic file. Is there some functionality for doing this (say, make all these warriors challenge these 12 1000 times) in pmars? From: Koth Subject: KOTH.ORG: Status - ICWS Experimental 94 08/25/03 Date: 26 Aug 2003 12:39:38 -0400 Message-ID: <200308250406.h7P460CC015559@gevjon.ttsg.com> Weekly Status on 08/25/03 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG ICWS Experimental 94 CoreWar Hill: Last battle concluded at : Thu Aug 21 12:19:30 EDT 2003 # %W/ %L/ %T Name Author Score Age 1 42/ 36/ 23 The X Machine Zul Nadzri 147 10 2 45/ 43/ 13 Fire and Ice II David Moore 147 99 3 41/ 39/ 21 Eliminator X Zul Nadzri 142 11 4 24/ 8/ 68 Evol Cap 4 X John Wilkinson 141 268 5 36/ 33/ 31 Trefoil F 13 Steve Gunnell 139 82 6 24/ 10/ 66 Denial David Moore 138 140 7 31/ 25/ 44 KAT v5 Dave Hillis 138 131 8 28/ 18/ 54 Katafutr Michal Janeczek 137 139 9 37/ 38/ 25 Black Moods Ian Oversby 136 195 10 25/ 15/ 60 Kin John Metcalf 135 107 11 29/ 23/ 48 Venom v0.2b Christian Schmidt 134 221 12 30/ 26/ 45 Olivia X Ben Ford 134 80 13 28/ 22/ 51 Glenstorm John Metcalf 134 61 14 23/ 12/ 66 Blotter X J. Pohjalainen 133 1 15 20/ 8/ 72 Evolve X v4.0 John Wilkinson 133 216 16 33/ 38/ 29 Controlled Aggression Ian Oversby 129 199 17 35/ 42/ 22 Giant Hazy Test 13 Steve Gunnell 129 26 18 33/ 40/ 27 Ogre Christian Schmidt 126 147 19 30/ 35/ 35 Big Pspacer G.Labarga 126 6 20 35/ 44/ 21 Piltdown (2003.8) Philip Thorne 126 2 21 12/ 87/ 2 Quick Paper Tasvora Kinslye 37 0 From: Koth Subject: KOTH.ORG: Status - 94 No Pspace 08/25/03 Date: 26 Aug 2003 12:39:33 -0400 Message-ID: <200308250409.h7P491Ko015651@gevjon.ttsg.com> Weekly Status on 08/25/03 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG 94 No Pspace CoreWar Hill: Last battle concluded at : Sun Aug 24 21:28:50 EDT 2003 # %W/ %L/ %T Name Author Score Age 1 49/ 45/ 7 Recon 2 David Moore 153 335 2 43/ 39/ 18 Toxic Spirit Philip Thorne 147 566 3 35/ 24/ 41 Digitalis 2003 Christian Schmidt 146 163 4 33/ 21/ 46 devilish 2.02 test David Houston 144 28 5 32/ 20/ 48 Son of Vain Oversby/Pihlaja 144 1881 6 29/ 14/ 56 Mordred's Son Christian Schmidt 144 29 7 33/ 22/ 45 Reepicheep Grabun/Metcalf 144 1112 8 41/ 38/ 22 Fuse Myer Bremer 143 122 9 26/ 13/ 61 D2.4 Roy van Rijn 139 10 10 31/ 23/ 46 Now you're in trouble!!! John Metcalf 139 249 11 29/ 19/ 53 badness bvowk 138 42 12 24/ 11/ 65 unheard-of Christian Schmidt 137 212 13 38/ 40/ 22 CrazyShot 3 Christian Schmidt 136 35 14 29/ 25/ 46 Candy II Lukasz Grabun 134 261 15 30/ 25/ 45 Numb Roy van Rijn 134 268 16 40/ 47/ 13 Dark Energy F^2 134 12 17 38/ 45/ 16 Hazy Test 63 Steve Gunnell 131 656 18 23/ 16/ 61 199868-5604-xt430-15-eve1 bvowk 129 1 19 18/ 30/ 52 Warbringer.t1 Lukasz Grabun 107 5 20 15/ 66/ 19 Paperwiper v2.72 Endersdouble 63 2 21 13/ 66/ 21 Paperwiper v2.70 Endersdouble 61 3 From: Koth Subject: KOTH.ORG: Status - MultiWarrior 94 08/25/03 Date: 26 Aug 2003 12:39:42 -0400 Message-ID: <200308250403.h7P430sr015492@gevjon.ttsg.com> Weekly Status on 08/25/03 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG Multiwarrior 94 CoreWar Hill: Last battle concluded at : Sun Aug 24 17:31:34 EDT 2003 # Name Author Score Age 1 not king of the hill FatalC 23 62 2 Her Majesty P.Kline 20 336 3 D-clearM Ken Espiritu 18 317 4 Dettol Test 26 Steve Gunnell 13 97 5 hawk John Metcalf 12 60 6 Below the Hill FatalC 7 17 7 Third try! Roy van Rijn 6 6 8 Origin of Storms John Metcalf 5 4 9 like a passing sunbeam John Metcalf 4 16 10 devilish 2.02 test David Houston 3 1 11 Sleep All Day Lazy Redcoder 2 2 From: Koth Subject: KOTH.ORG: Status - Standard 08/25/03 Date: 26 Aug 2003 12:45:50 -0400 Message-ID: <200308250400.h7P400R8015457@gevjon.ttsg.com> Weekly Status on 08/25/03 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG Standard KotH CoreWar Hill : Last battle concluded at : Sun Aug 24 05:55:13 EDT 2003 # %W/ %L/ %T Name Author Score Age 1 38/ 22/ 39 Quicksilver '88 Michal Janeczek 154 8 2 36/ 22/ 42 Freight Train David Moore 149 173 3 35/ 22/ 43 Test Alexander (Sasha) Wa 148 112 4 44/ 40/ 16 Tangle Trap 3 David Moore 147 1 5 34/ 23/ 43 Guardian Ian Oversby 146 172 6 41/ 41/ 18 My 1st try Christian Schmidt 141 4 7 36/ 32/ 31 vala John Metcalf 141 95 8 31/ 24/ 45 Pixie 88 Lukasz Grabun 138 2 9 42/ 47/ 11 vm5 Michal Janeczek 138 7 10 42/ 47/ 12 Foggy Swamp Beppe Bezzi 136 169 11 28/ 20/ 52 Test I Ian Oversby 135 229 12 41/ 46/ 13 Blur '88 Anton Marsden 135 210 13 30/ 25/ 45 Shish-Ka-Bob Ben Ford 135 128 14 27/ 20/ 53 EV Paper John K Wilkinson 134 186 15 39/ 44/ 17 '88 test IV John Metcalf 134 66 16 42/ 50/ 8 Scan Test C 6 Steve Gunnell 133 11 17 31/ 29/ 39 sIMPly.Red v0.95 Leonardo Humberto 133 130 18 35/ 37/ 28 Gymnosperm trickery Dave Hillis 133 59 19 37/ 42/ 22 PacMan David Moore 132 202 20 37/ 45/ 18 Stasis David Moore 129 280 21 20/ 66/ 14 LeVamp Matthieu Walraet 75 0 From: fizmo_master@yahoo.com (Fizmo) Subject: Re: question about benchmarking Date: 26 Aug 2003 23:19:29 -0700 Message-ID: <9f53b5fb.0308262219.19ef7391@posting.google.com> Hi, I am using sometimes WinXP too. It should work if you copy gwbasic.exe into your corewar directory. John's programm usually contain a benchmarking at the end of the run. If WinXP is used the dos-windows of the benchmarking will automatically closed if it doesn't have to show more than a screen content. To keep them open even after the end of the run you should create at least 20 warriors. > wilmoo/wilfiz/etc." I have these benches. I just can't use them, > because I don't know how. I'm using WinXP, so trying to run Wilmoo > doesn't work anyway, since I can't run the basic file. Is there some > functionality for doing this (say, make all these warriors challenge > these 12 1000 times) in pmars? From: Paul-V Khuong Subject: Re: question about benchmarking Date: 27 Aug 2003 11:24:32 -0400 Message-ID: <20030827031252.45077.qmail@web41504.mail.yahoo.com> --- Andrew Hunter wrote: > I don't really understand how to benchmark warriors. > To be exact, > using a program given to me by John Metcalf, I have > created 100 > warriors with different constants. I'd like to set > them all overnight > or something to just rip through some test, to > figure out what the > optimal constant is. Please don't tell me just to > "download > wilmoo/wilfiz/etc." I have these benches. I just > can't use them, > because I don't know how. I'm using WinXP, so > trying to run Wilmoo > doesn't work anyway, since I can't run the basic > file. Is there some > functionality for doing this (say, make all these > warriors challenge > these 12 1000 times) in pmars? I believe you are looking for koth.c. Someone else might have an URL - I only have the RH7 executable in an archive, but it probably could be compiled on XP without any problem. __________________________________ Do you Yahoo!? Yahoo! SiteBuilder - Free, easy-to-use web site design software http://sitebuilder.yahoo.com From: =?iso-8859-1?q?will?= Subject: Re: question about benchmarking Date: 27 Aug 2003 12:25:01 -0400 Message-ID: <20030827155335.22682.qmail@web60006.mail.yahoo.com> Slight tangent, but wouldn't '-bench' make a lovely option for pmars? Especially useful in the 'server' build? /Will __________________________________________________ Yahoo! Plus - For a better Internet experience http://uk.promotions.yahoo.com/yplus/yoffer.html From: chipw@mdli.com (Chip Wendell) Subject: Re: question about benchmarking Date: 27 Aug 2003 14:50:24 -0700 Message-ID: will wrote in message news:<20030827155335.22682.qmail@web60006.mail.yahoo.com>... > Slight tangent, but wouldn't '-bench' make a lovely > option for pmars? It would certainly make a great new tournament type for CoreWin. I'll work it into one of the next versions. - Chip From: pak21@cam.ac.uk (Philip Kendall) Subject: Re: question about benchmarking Date: 27 Aug 2003 17:21:04 +0100 Message-ID: In article <20030827031252.45077.qmail@web41504.mail.yahoo.com>, Paul-V Khuong wrote: > >I believe you are looking for koth.c. Someone else >might have an URL Are we still talking about my http://www.srcf.ucam.org/~pak21/corewar/koth.html ? If so, somebody please write something better as that thing's awful :-) I have a vague recollection of somebody doing this in $scripting_language?? Cheers, Phil -- Philip Kendall http://www.srcf.ucam.org/~pak21/ From: "John Metcalf" Subject: Re: question about benchmarking Date: Wed, 27 Aug 2003 20:53:05 +0100 Message-ID: <3f4e6947_2@mk-nntp-2.news.uk.tiscali.com> Hi, I use three simple batch files (shown below), which call MTS to benchmark a number of warriors. Warriors to be benchmarked have a filename with no extension. The benchmark warriors have a filename with a RED extension. All filenames must be less than 8 characters (not including extension). An ordered score report is output the the screen when all tests are complete, and also saved to RESULTS.TXT. I use an assembly program OPT1.ASM to generate a number of warriors with random constants from a template warrior. Previously I used a GwBasic program which performed a similar function. Overall, it seems to work well for me. Regards, John -- TEST.BAT -- @rem ** THIS FILE CALLS TESTXXXX FOR EVERY FILE WITHOUT AN EXTENSION ** @for %%f in (*.) do call testxxxx %%f @scores -- TESTXXXX.BAT -- @rem ** THIS BATCHFILE CALLS MTS TO BENCHMARK THE WARRIOR ** @rem ** YOU CAN CHANGE THE PMARS PARAMETERS HERE (LINE 6) ** @echo off echo f >xxxxxxxx.xxx echo n >>xxxxxxxx.xxx echo pmars -b -F 2713 -r 200 >>xxxxxxxx.xxx echo y >>xxxxxxxx.xxx echo %1.res >>xxxxxxxx.xxx echo xxxxxxxx.xxx >>xxxxxxxx.xxx echo %1 >>xxxxxxxx.xxx for %%f in (*.red) do echo %%f >>xxxxxxxx.xxx mts nul echo Name Author W L T Score >results.txt echo --------------------------------------------------------------------------- >>results.txt find " 1 " xxxxxxxx.xxx |sort /+70 /r >>results.txt erase xxxxxxxx.xxx type results.txt |more From: fizmo_master@yahoo.com (Fizmo) Subject: Redcoders Frenzy 13: The Laughing-Loser Round ***Rules and deadline*** Date: 28 Aug 2003 07:03:27 -0700 Message-ID: <9f53b5fb.0308280603.397bbaac@posting.google.com> ................................................................... . . . _____ _ _ . . | __ \ | | | | . . | |__) |___ __| | ___ ___ __| | ___ _ __ ___ . . | _ // _ \/ _` |/ __/ _ \ / _` |/ _ \ '__/ __| . . | | \ \ __/ (_| | (_| (_) | (_| | __/ | \__ \ . . |_| \_\___|\__,_|\___\___/ \__,_|\___|_| |___/ . . . . ______ . . | ____| . . | |__ _ __ ___ _ __ _____ _ . . | __| '__/ _ \ '_ \|_ / | | | . . | | | | | __/ | | |/ /| |_| | . . |_| |_| \___|_| |_/___|\__, | . . __/ | . . |___/ . ................................................................... The ongoing corewar tournament ___ ______ (___) (_____ \ _ _____) ) | | (_____ ( _| |_ _____) ) (_____|______/ .............................. . . . The Laughing-Loser Round . . . .............................. This is the 13th round of the ongoing corewar tournament. Detailed information are available on Fizmo's Corewar Information Page: http://www.corewar.info/tournament/cwt.htm ................................................................... . _ . . _ _ _ _| |___ ___ . . | '_| || | / -_|_-< . . |_| \_,_|_\___/__/ . . . ................................................................... Each battle will be a fight between two warriors with a neutral program (the counter) present in the core. The first warrior which modifies counter's code before it dies, loses. The first warrior which dies after the counter, wins. If one of competing warriors dies before the counter, or both warriors survive, a tie is declared. The MARS used will be most likely a modified version of exhaust. Coresize: 8000 Max. processes: 8000 Max. cycles: 80000 Max. length: 100 Min. distance: 100 Rounds: 2000 Points per win: 3 Points per tie: 1 Points per loss: 0 ---------- ;redcode ;name counter ;author mj ;assert 1 mov ptr , >ptr mov ptr , {ptr cnt djn -2 , #-5 ptr dat -3 , 2 end The homepage of this round is: http://www.corewar.info/tournament/13.htm Some hints will be added soon. ................................................................... . _ _ _ _ . . __| |___ __ _ __| | (_)_ _ ___ . . / _` / -_) _` / _` | | | ' \/ -_) . . \__,_\___\__,_\__,_|_|_|_||_\___| . . . ................................................................... September 28, 2003 -------------------------------------------------------------- Please notify: You have to send your entries to Michal Janeczek michal (at) v-lo.krakow.pl -------------------------------------------------------------- Good luck, may be the core with you! From: me@127.0.0.1 (Terry Newton) Subject: Re: question about benchmarking Message-ID: <3f4da6f8.3199957@news.east.earthlink.net> Date: Thu, 28 Aug 2003 07:27:30 GMT wackoyacko2000@yahoo.com (Andrew Hunter) wrote: >I don't really understand how to benchmark warriors. To be exact, >using a program given to me by John Metcalf, I have created 100 >warriors with different constants. I'd like to set them all overnight >or something to just rip through some test, to figure out what the >optimal constant is. Please don't tell me just to "download >wilmoo/wilfiz/etc." I have these benches. I just can't use them, >because I don't know how. I'm using WinXP, so trying to run Wilmoo >doesn't work anyway, since I can't run the basic file. Is there some >functionality for doing this (say, make all these warriors challenge >these 12 1000 times) in pmars? Here's a benchmarker for dos/windows that might do the job... http://www.infionline.net/~wtnewton/corewar/evol/test.zip I also have my own testing needs where I need to evaluate hundreds of warriors and create a report to reverse-sort to see which warriors are the strongest. You need either pmars.exe or exhaust.exe in a path directory or the current directory, and warriors. This is new code so it might have bugs, I know it exits if you try to continue a bench run that's already finished. Terry Newton From: Lukasz Grabun Subject: Re: Newb needs help Date: 28 Aug 2003 17:48:51 GMT Message-ID: On 24 Aug 2003 15:31:02 -0700, Andrew Hunter wrote: > I don't understand the decoding process or pretend to, so I just left > it as is. I worked out that after decoding, qptr held the positions > to be bombed. So, I added it to mark2, which already held numbers set > so that after the add, it pointed to a point step (6) cells after > qptr. I added a second bombing line, pointing to mark2, to put in the > second part of the incendiary. I then changed qptr to a nop, since a > indirect bomb might screw with the incendiaries, but I didn't dare > remove it since I don't understand how the q^4 works. This and the > other kludges I used means (I think) that this is slow and inefficent. Hi again, The problem with Q^4 is that constants are code-alignment dependand. Basically this means one has to calculate all q[A-F] with respect to absolute position of qTab1, qTab2 and qBmb (one that holds qF). As for now you should learn that one can't change with location of qTab... just for fun and after doing so constants have to be re-calculated. This is first thing. Second one is that RotF q-scan is not the best one. Preserver (erm, Return of Vanquisher, alas) gained 2 points when I swapped from RotF qscan to Quicksilver's one. The latter has also that advantage that I've programmed (or rather hacked Moore's code) a constant calculator, myfactor. I also described the way it works few months ago (you can easily find the article on google). Third thing is that unless you perform a clear stunning your oponnent during q-scan phase is not a good idea. Paper usually does not have any means of killing (save dat bombs); more precisely: it is difficult for paper to kill a living spl carpet. I'd rather use standard dat bomb. Just my 2 cents. Pennies. Groszes. -- Lukasz Grabun (My CW page: http://www.astercity.net/~grabek) (reply-to field is fake, use grabek (at) acn dot waw dot pl to reply) From: fizmo_master@yahoo.com (Fizmo) Subject: Re: Redcoders Frenzy 13: The Laughing-Loser Round ***Rules and deadline*** Date: 28 Aug 2003 23:15:23 -0700 Message-ID: <9f53b5fb.0308282215.693cb7e1@posting.google.com> Important update of the rules!!!!! ................................................................... . . . _____ _ _ . . | __ \ | | | | . . | |__) |___ __| | ___ ___ __| | ___ _ __ ___ . . | _ // _ \/ _` |/ __/ _ \ / _` |/ _ \ '__/ __| . . | | \ \ __/ (_| | (_| (_) | (_| | __/ | \__ \ . . |_| \_\___|\__,_|\___\___/ \__,_|\___|_| |___/ . . . . ______ . . | ____| . . | |__ _ __ ___ _ __ _____ _ . . | __| '__/ _ \ '_ \|_ / | | | . . | | | | | __/ | | |/ /| |_| | . . |_| |_| \___|_| |_/___|\__, | . . __/ | . . |___/ . ................................................................... The ongoing corewar tournament ___ ______ (___) (_____ \ _ _____) ) | | (_____ ( _| |_ _____) ) (_____|______/ .............................. . . . The Laughing-Loser Round . . . .............................. This is the 13th round of the ongoing corewar tournament. Detailed information are available on Fizmo's Corewar Information Page: http://www.corewar.info/tournament/cwt.htm ................................................................... . _ . . _ _ _ _| |___ ___ . . | '_| || | / -_|_-< . . UPDATE |_| \_,_|_\___/__/ UPDATE . . . ................................................................... ****UPDATE**** ---------- Changed issues: - max. processes (reduced to 8) - point distribution after premature death (loser doesn't get the point) - hopefully more clear ---------- - Each battle will be a fight between two warriors with a neutral program (the counter) present in the core. - The first warrior which modifies counter's code before it (the counter) dies, gets 0 points, and the other warrior gets 3 points. - The first warrior which dies after the counter, gets 3 points, and the other warrior gets 0 points. - If one of warriors happens to be killed before the counter's death, then it will get 0 points, and the other warrior will get 1 point. - If both warriors survive until end of the round, each will get 1 point. Coresize: 8000 Max. processes: 8 Max. cycles: 80000 Max. length: 100 Min. distance: 100 Rounds: 2000 ---------- ;redcode ;name counter ;author mj ;assert 1 mov ptr , >ptr mov ptr , {ptr cnt djn -2 , #-5 ptr dat -3 , 2 end The homepage of this round is: http://www.corewar.info/tournament/13.htm Some hints will be added soon. ................................................................... . _ _ _ _ . . __| |___ __ _ __| | (_)_ _ ___ . . / _` / -_) _` / _` | | | ' \/ -_) . . \__,_\___\__,_\__,_|_|_|_||_\___| . . . ................................................................... September 28, 2003 -------------------------------------------------------------- Please notify: You have to send your entries to Michal Janeczek michal (at) v-lo.krakow.pl -------------------------------------------------------------- Good luck, may be the core with you! From: Lukasz Adamowski Subject: Re: Redcoders Frenzy 13: The Laughing-Loser Round ***Rules and Date: 29 Aug 2003 10:14:13 -0400 Message-ID: On Thu, 28 Aug 2003, Fizmo wrote: > Each battle will be a fight between two warriors with a neutral > program (the counter) present in the core. The first warrior which > modifies counter's code before it dies, loses. The first warrior which > dies after the counter, wins. If one of competing warriors dies before > the counter, or both warriors survive, a tie is declared. > ;redcode > ;name counter > ;author mj > ;assert 1 > > mov ptr , >ptr > mov ptr , {ptr > cnt djn -2 , #-5 > ptr dat -3 , 2 > > end I wonder how would you know if warrior change counter's code, but this is not my problem. It's yours. :] My question is rather technical: does "counter's code" mean only these 4 instructions or maybe whole MAXLENGTH cells block after its' first line? Greetings Lukasz Adamowski P.S. And why to hell the counter does not bomb that one cell after its' code??? It's the safest place in the whole core! Was it planned or is it a mistake? From: "Zul Nadzri" Subject: Re: Redcoders Frenzy 13: The Laughing-Loser Round ***Rules and deadline*** Date: Fri, 29 Aug 2003 14:16:13 +0800 Message-ID: <3f4eefaf_2@news.tm.net.my> > Each battle will be a fight between two warriors with a neutral > program (the counter) present in the core. The first warrior which > modifies counter's code before it dies, loses. The first warrior which > dies after the counter, wins. If one of competing warriors dies before > the counter, or both warriors survive, a tie is declared. > I hope there is no 'noise' warriors such as "dat 0,0". Probably the code should be checked such that submitted warriors are at least not losing against the Counter alone. Otherwise, "dat 0,0" warrior should be able to be at the 50% level... worth 50 (free) points. I am going to submit my warrior later today or early tomorrow. /Zul Nadzri From: neogryzormail@mixmail.com (Neogryzor) Subject: Re: Redcoders Frenzy 13: The Laughing-Loser Round ***Rules and deadline*** Date: 29 Aug 2003 16:46:49 -0700 Message-ID: <242debe4.0308291546.7c7674e6@posting.google.com> A question: How do you decide the order of the warriors when loading? I mean, the one who is executed after the counter has a sligth advantage, specially important if both warriors are counting the time left or checking the counter. what about running every round twice, switching warriors? Another detail: What happens if a warrior stuns accidentally the counter and the other one suicides when time expires? I supouse you can't detect if the counter's code have been modified during battle, only looking previously at the code of the contenders. Very nice round, but quite "problematic" for the organiser. Regards G. Labarga From: Michal Janeczek Subject: Re: Redcoders Frenzy 13: The Laughing-Loser Round ***Rules and Date: Fri, 29 Aug 2003 18:29:47 +0200 Message-ID: > I wonder how would you know if warrior change counter's code, but this is > not my problem. It's yours. :] My question is rather technical: > does "counter's code" mean only these 4 instructions or maybe whole > MAXLENGTH cells block after its' first line? only these 4 lines > P.S. And why to hell the counter does not bomb that one cell after its' > code??? It's the safest place in the whole core! Was it planned or is it a > mistake? Neither planned nor mistake. It's a feature that results from conveniece/lazyness. If you think you can exploit it, go for it. I can imagine two warriors sitting on the same 'jmn 0, -2' line :) Michal From: Michal Janeczek Subject: Re: Redcoders Frenzy 13: The Laughing-Loser Round ***Rules and Date: Sat, 30 Aug 2003 03:46:33 +0200 Message-ID: > A question: > How do you decide the order of the warriors when loading? > I mean, the one who is executed after the counter has a sligth > advantage, specially important if both warriors are counting the time > left or checking the counter. > what about running every round twice, switching warriors? The warrior that start will be changed every round, just like in usual 1v1 fight. > Another detail: > What happens if a warrior stuns accidentally the counter and the other > one > suicides when time expires? The fight is immediately terminated as soon as one of the warriors alters the counter's code. > I supouse you can't detect if the counter's code have been modified > during battle, only looking previously at the code of the contenders. > > Very nice round, but quite "problematic" for the organiser. I'm planning to make an ugly patch to exhaust, and make it available for download sometime in the next week. Michal From: Lukasz Grabun Subject: Hammerhead Date: 30 Aug 2003 09:21:31 GMT Message-ID: This is *slightly* optimised version of Thunderstrike. I tried vortex launcher, linear boot, booted imp and a number of other things. None of them worked as well as original TS but starting a imp a little off from the imp-launcher seems to help a bit. Enjoy. ;redcode-94nop ;author Lukasz Grabun ;assert (CORESIZE==8000) ;name Hammerhead ;strategy Q^4 -> Stone/Imp ;strategy improved version of Thunderstrike orig z for 0 rof ; -- imp constants istep equ (2667) ; 3-point imps ioff equ (2038+orig) ; imp launcher offset iskew equ (imp+250) ; imp offset qBmb DAT.F {qOff , #qF ; -- imp launcher pump SPL.B #iskew , #imp+1 SUB.F #-istep-1, iloop MOV.I imp , }pump iloop JMP.B iskew-2*(istep+1) , >imp+2*istep-1 imp MOV.I #0 , istep ; -- stone constants step equ (3510) hop equ (46) gate equ (inc-6) from equ (0+step) hit equ (loop-step-hop) soff equ (2498+ioff) ; stone offset ; -- stone inc SPL.B #step , <-step MOV.I {from , gate DJN.F -1 , >gate bomb DAT.F <2667 , hop+1 ; -- boot boot MOV.I bomb , soff MOV.I {boot , Subject: Preserver Date: 30 Aug 2003 09:42:13 GMT Message-ID: Here goes next one. It is *slightly* modified version of RoV. First, easy to notice thing is that I switched from Olivia's q-scan to Quicksilver's one. This gives a slight score boost. The other thing is more subtle. Try to find it. All I can say is that now d-clears work more efficiently. ;redcode-94nop ;name Preserver ;assert 1 ;author Lukasz Grabun ;strategy Q^4 -> stun bomber ;strategy improved version of Return of Vanquisher orig z for 0 rof ; bomber constants step equ 1022 len equ 8 ; clear constants gate equ (clear-3) ; boot constants boff equ (5400+orig) ; bomber boot distance doff equ -252 ; offset between bomber & bombs coff equ (step*3+4853) ; offset between spare core clear & bomber ; bomber code bSrc MOV.I {0 , #len-1 sLoo MOV.I ssb+doff-2 , gate DJN.F -1 , >gate dbomb DAT.F <2667 , 2-gate DAT.F 0 , }qC qTab2 DAT.F 0 , }qD DAT.F 0 , }qE ; incendiary bombs sjb JMP.B @step , step-1 ssb SPL.B #1-step , 8 smb MOV.I @0 , bDst , dbomb+1 for 36 DAT.F 0,0 rof qX equ 494 qA equ 1072 qB equ 1429 qC equ 2727 qD equ 3084 qE equ 3441 qF equ 6719 qStep equ 7 qTime equ 16 qOff equ 87 qBomb DAT.F {qOff , #qF qGo seq qPtr+qX , qPtr+qX+qD jmp qSkip , {qPtr+qX+qStep sne qPtr+qX*qE , qPtr+qX*qE+qE seq Subject: Re: Redcoders Frenzy 13: The Laughing-Loser Round ***Rules and deadline*** Date: Sat, 30 Aug 2003 13:49:03 +0800 Message-ID: <3f503ad1_1@news.tm.net.my> You said modify the counter's code... i.e. changing from initial state to another state. I assume that does not include copying the same code (if that could happen) to the counter's code at the same location. I think the patch will work like this if warrior1 turn=yes { if counter code[i]<>originalLine[i] { warrior1=lose Ok, returns to warrior optimisation. See ya at the arena. /Zul Nadzri "Michal Janeczek" wrote in message news:Pine.LNX.4.44.0308300322120.31513-100000@august.V-LO.krakow.pl... > > A question: > > How do you decide the order of the warriors when loading? > > I mean, the one who is executed after the counter has a sligth > > advantage, specially important if both warriors are counting the time > > left or checking the counter. > > what about running every round twice, switching warriors? > > The warrior that start will be changed every round, just like in usual 1v1 > fight. > > > Another detail: > > What happens if a warrior stuns accidentally the counter and the other > > one > > suicides when time expires? > > The fight is immediately terminated as soon as one of the warriors alters the > counter's code. > > > I supouse you can't detect if the counter's code have been modified > > during battle, only looking previously at the code of the contenders. > > > > Very nice round, but quite "problematic" for the organiser. > > I'm planning to make an ugly patch to exhaust, and make it > available for download sometime in the next week. > > Michal > > > From: Lukasz Grabun Subject: myfactor.c -- now with CLI Date: 30 Aug 2003 15:25:32 GMT Message-ID: Usage: myfactor -i pTab1 pTab2 pBmb pPtr The commmand above, where p... is the absolute position of qTab1, qTab2, qBmb and qPtr from Quicksilver's qscan respectively, calculates all possible qX for given constants set. myfactor -x qX pTab1 pTab2 pBbm pPtr calculates qA, ..., qF for given qX and p.... Don't take a closer look at the code. It is ugly. Oh, and it is not foolproof too. #include #include #define CORESIZE 8000 #define MAXLENGTH 100 #define nScans 27 #define nFlags 2 #define pTab1 params[0] #define pTab2 params[1] #define pF params[2] #define pPtr params[3] int main (int argc, char **argv) { int i, x, y; int flag; int qA, qB, qC, qD, qE, qF, qX, qType; int X; int params[4]; int scans[nScans]; int c; int I = 0; while (--argc > 0 && (*++argv)[0] == '-') while (c = *++argv[0]) switch (c) { case 'i': I = 0; for (i = 0; i < 4 && --argc; i++) params[i] = atoi (*++argv); break; case 'x': I = 1; --argc; X = atoi (*++argv); for (i = 0; i < 4 && --argc; i++) params[i] = atoi (*++argv); } for (qX = I * X + (1 - I) * MAXLENGTH; qX < I * (X + 1) + (1 - I) * (CORESIZE - MAXLENGTH); qX += 2) { for (qType = 0, i = 1; i < CORESIZE - MAXLENGTH; i++) if (((qX - 1) * i) % CORESIZE == 1) qType = i; if (qType) { flag = 0; qA = (((qX - 1) + (pTab1 - 1 - pPtr)) * qType) % CORESIZE; qB = (((qX - 1) + (pTab1 - 0 - pPtr)) * qType) % CORESIZE; qC = (((qX - 1) + (pTab2 - 1 - pPtr)) * qType) % CORESIZE; qD = (((qX - 1) + (pTab2 - 0 - pPtr)) * qType) % CORESIZE; qE = (((qX - 1) + (pTab2 + 1 - pPtr)) * qType) % CORESIZE; qF = (((qX - 1) + (pF - 0 - pPtr)) * qType) % CORESIZE; scans[0] = (pPtr + qX) % CORESIZE; scans[1] = (pPtr + qX + qD) % CORESIZE; scans[2] = (pPtr + qX * qE) % CORESIZE; scans[3] = (pPtr + qX * qE + qE) % CORESIZE; scans[4] = ((pTab2 + 1) + (qE - 1)) % CORESIZE; scans[5] = (pPtr + qX * (qE - 1) + (qE - 1)) % CORESIZE; scans[6] = (pPtr + qX * qF) % CORESIZE; scans[7] = (pPtr + qX * qF + qD) % CORESIZE; scans[8] = (pF + (qF - 1)) % CORESIZE; scans[9] = (pPtr + qX * (qF - 1) + qD) % CORESIZE; scans[10] = (pPtr + qX * qA) % CORESIZE; scans[11] = (pPtr + qX * qA + qD) % CORESIZE; scans[12] = ((pTab1 - 1) + (qA - 1)) % CORESIZE; scans[13] = (pPtr + qX * (qA - 1) + qD) % CORESIZE; scans[14] = (pPtr + qX * qB) % CORESIZE; scans[15] = (pPtr + qX * qB + qD) % CORESIZE; scans[16] = (pTab1 + (qB - 1)) % CORESIZE; scans[17] = (pPtr + qX * (qB - 1) + qD) % CORESIZE; scans[18] = (pPtr + qX * qC) % CORESIZE; scans[19] = (pPtr + qX * qC + qC) % CORESIZE; scans[20] = ((pTab2 - 1) + (qC - 1)) % CORESIZE; scans[21] = (pPtr + qX * (qC - 1) + (qC - 1)) % CORESIZE; scans[22] = (pPtr + qX * (qC - 2)) % CORESIZE; scans[23] = (pPtr + qX * (qC - 2) + (qC - 2)) % CORESIZE; scans[24] = (pPtr + qX * qD) % CORESIZE; scans[25] = (pPtr + qX * qD + qD) % CORESIZE; scans[26] = (pTab2 + (qD - 1)) % CORESIZE; if (I) { printf ("qX\tequ %d\n", qX); printf ("qA\tequ %d\n", qA); printf ("qB\tequ %d\n", qB); printf ("qC\tequ %d\n", qC); printf ("qD\tequ %d\n", qD); printf ("qE\tequ %d\n", qE); printf ("qF\tequ %d\n", qF); } for (x = 0; x < nScans - 1; x += 2) { if (I) printf ("%4d %4d", scans[x], scans[x + 1]); if (scans[x] < 2 * MAXLENGTH || scans[x] > CORESIZE - MAXLENGTH || scans[x + 1] < 2 * MAXLENGTH || scans[x + 1] > CORESIZE - MAXLENGTH) { if (I) printf (" (*)\n"); flag++; } else for (i = 1 - I; i < 1; i++) printf ("\n"); } if (I) printf ("%4d", scans[nScans - 1]); if (scans[nScans - 1] < 2 * MAXLENGTH || scans[nScans - 1] > CORESIZE - MAXLENGTH || scans[nScans - 1] < 2 * MAXLENGTH || scans[nScans - 1] > CORESIZE - MAXLENGTH) { if (I) printf (" (*)\n"); flag++; } else for (i = 1 - I; i < 1; i++) printf ("\n"); for (x = 0; x < nScans; x++) for (y = x + 1; y < nScans; y++) { if (scans[x] < scans[y] && scans[y] - scans[x] < MAXLENGTH) { if (I) printf ("(%d, %d) ", scans[x], scans[y]); flag++; } if (scans[y] < scans[x] && scans[x] - scans[y] < MAXLENGTH) { if (I) printf ("(%d, %d) ", scans[y], scans[x]); flag++; } } if (I) printf ("\n"); if (flag < nFlags) printf ("%d flags=%d\n", qX, flag); } else { if (I) printf ("qX-1=%d does not have multiplicative inverse\n", qX - 1); } } } -- Lukasz Grabun (My CW page: http://www.astercity.net/~grabek) (reply-to field is fake, use grabek (at) acn dot waw dot pl to reply) From: Ilmari Karonen Subject: Re: Redcoders Frenzy 13: The Laughing-Loser Round ***Rules and Date: Sat, 30 Aug 2003 16:26:25 +0300 Message-ID: Michal Janeczek wrote: [Neogryzor wrote:] >>I supouse you can't detect if the counter's code have been modified >>during battle, only looking previously at the code of the contenders. > > I'm planning to make an ugly patch to exhaust, and make it > available for download sometime in the next week. I think one could also do it in pMARS with a suitably clever cdb macro. -- Ilmari Karonen (Trying out a new posting address, let's see if this works...) If replying by e-mail, substitute .net for .invalid in address. From: Lukasz Adamowski Subject: Re: Redcoders Frenzy 13: The Laughing-Loser Round ***Rules and Date: 31 Aug 2003 12:20:29 -0400 Message-ID: Oh, yes! The most important thing: how many entries can I send? (I've written about 15 warriors till now ;) Greets Lukasz Adamowski From: Lukasz Adamowski Subject: Re: Redcoders Frenzy 13: The Laughing-Loser Round ***Rules and Date: 31 Aug 2003 12:20:38 -0400 Message-ID: On Fri, 29 Aug 2003, Fizmo wrote: > - The first warrior which modifies counter's code before it (the > counter) dies, gets 0 points, and the other warrior gets 3 points. So modifying counter's code after its' death is allowed? Lukasz From: Lukasz Adamowski Subject: Re: Redcoders Frenzy 13: The Laughing-Loser Round ***Rules and Date: 31 Aug 2003 12:44:55 -0400 Message-ID: On Sat, 30 Aug 2003, Zul Nadzri wrote: > I think the patch will work like this > if warrior1 turn=yes { > if counter code[i]<>originalLine[i] { > warrior1=lose Wrong! Two lines (cnt & ptr) of counter are changed during battle by itself, so they are not equal to "originalLine". This won't work properly. But leave it to Michal, I believe he knows what is he doing. :] Lukasz From: Michal Janeczek Subject: Re: Redcoders Frenzy 13: The Laughing-Loser Round ***Rules and Date: Sun, 31 Aug 2003 21:20:49 +0200 Message-ID: 2 On 31 Aug 2003, Lukasz Adamowski wrote: > > Oh, yes! The most important thing: how many entries can I send? > (I've written about 15 warriors till now ;) > Greets > Lukasz Adamowski > > From: Michal Janeczek Subject: Re: Redcoders Frenzy 13: The Laughing-Loser Round ***Rules and Date: Sun, 31 Aug 2003 21:21:39 +0200 Message-ID: On 31 Aug 2003, Lukasz Adamowski wrote: > On Fri, 29 Aug 2003, Fizmo wrote: > > > - The first warrior which modifies counter's code before it (the > > counter) dies, gets 0 points, and the other warrior gets 3 points. > > So modifying counter's code after its' death is allowed? yes