From: =?ISO-8859-2?Q?=A3ukasz_Adamowski?= Subject: Polish Hill URL update Date: Sat, 2 Jul 2005 09:06:31 -0400 (EDT) Message-ID: <42c6647e75768@wp.pl> Hi! All of you who have link to my website (PZPR aka Polish Hill) on yours please change it to www.wojny.rdzeniowe.prv.pl. The previous one changed slightly, but this one will hopefully be right for a long time. Thanks Lukasz Adamowski -= "War is a problem, never a solution" =- -= "Wojna jest problemem, a nie rozwiazaniem" =- ---------------------------------------------------- Mamo to ja! - Nowy serwis internetowy o Twoim dziecku - Zobacz jak piel�gnowa�, karmi� i wychowywa� bez pora�ek - Kliknij: http://klik.wp.pl/?adr=www.mamotoja.wp.pl&sid=424 From: "Nenad Tomasev" Subject: Re: 94nopspace Date: 3 Jul 2005 13:09:37 -0700 Message-ID: <1120421377.646964.108130@g47g2000cwa.googlegroups.com> Let's make it old, then. :) From: "Nenad Tomasev" Subject: sunday irc tournaments Date: 3 Jul 2005 13:21:10 -0700 Message-ID: <1120422070.782932.312480@o13g2000cwo.googlegroups.com> Hi. I suggest that we reschedule the weekly tournaments. There are seldomly enough people on the channel at sunday night for a tournament (or even a conversation). If there aren't many people interested in coming to compete at sunday nights, then we should pick a different time for these mini tournaments. I suggest friday night. If you have other ideas or if you can't make it on fridays, feel free to post a reply. :). Regards, Nenad From: "sayembara" Subject: Re: sunday irc tournaments Date: 4 Jul 2005 04:02:11 -0700 Message-ID: <1120474931.734230.271190@f14g2000cwb.googlegroups.com> Nenad Tomasev wrote: > Hi. > I suggest that we reschedule the weekly tournaments. There are seldomly > enough people on the channel at sunday night for a tournament (or even > a conversation). If there aren't many people interested in coming to > compete at sunday nights, then we should pick a different time for > these mini tournaments. I suggest friday night. If you have other ideas > or if you can't make it on fridays, feel free to post a reply. :). > Regards, > > Nenad I can see you are very hot now, many ideas to the hill. I think hot people will have an edge during weekly tournament :) /Zul <-- on 'cold' streak, even existing ideas are becoming blurr. Almost black-out on new ideas. From: "sayembara" Subject: Re: sunday irc tournaments Date: 4 Jul 2005 04:03:32 -0700 Message-ID: <1120475012.134200.301660@g14g2000cwa.googlegroups.com> ....I forgot. Keep the warriors coming! It's not much fun watching static hills :) From: "Nenad Tomasev" Subject: An interesting bishot - twoway. Date: 4 Jul 2005 05:47:02 -0700 Message-ID: <1120481222.051247.82150@z14g2000cwz.googlegroups.com> Hi. Since I've started making '88 warriors, and was forced to use backward coreclears, I've wondered if a successfull (equ not too large) twoway bishot can be made. And i've made one. I admit that the clear is a little bigger (but only one instruction) than the ususal one, but it has it's advantages, as well. Most of the todays 94nop warriors are optimized solely against forward clr warriors, and are having troubles with backward oneshots, as well. A combined approach - backward + forward could be a good strategy. This example that I've copy/pasted below uses a standard 0,8c scan engine and scored 118 at 94nop on submission (which is not that bad - the best of my ordinary bishots scores about 126 at the moment). It did very well against the stone/papers on the hill. A qscan might help a little with the score. But I'm thinking of switching it to 0,66c and adding an antistone trick... A 0,66c version of this warrior scored 125,9 at tiny hill and missed the hill by a fraction of a point. The warrior below entered multiwarrior hill today (at the bottom, though). Anyway, I think it's an interesting approach. The only apparent weakness seem to be the imps. Well, I hope that that can be taken care of, as well. You can always pspace it with something else, if everything else fails. I would, of course, appreciate any comments, thoughts... ;redcode-94nop ;name TheWingsOfTheHydra_v1.0 ;author Nenad Tomasev ;assert CORESIZE==8000 ;strategy bishot step equ (-13) org scan gate dat -4052, 4059 b dat -1086, 2 dat -11, 11 poc spl #-11, 11 mov poc, >gate mov poc, {gate djn.a -2, {b for 6 dat 0, 0 rof incr sub.f #-step, step scan sne *gate, @gate sub.f incr, @incr sne *gate, @gate djn.f incr, *gate jmp poc, 0 end Regards, Nenad From: "Nenad Tomasev" Subject: Re: Problems with koth.org Date: 4 Jul 2005 07:51:19 -0700 Message-ID: <1120488679.146840.145500@g47g2000cwa.googlegroups.com> It's not just you. It happend to me many times lately, as well. Sometimes it's ok, and sometimes it gets mixed, so that the strategy fields of one warrior correspond to the other, and there is also the occurence of mistakes in the tables of results for specific warriors, where some warrior names get repeated several times, etc. ... But, the hill itself seems to be working properly, which is the most important thing. :) From: KOTH Subject: KOTH.ORG: Status - 94 No Pspace 07/04/05 Date: Mon, 4 Jul 2005 08:12:24 -0400 (EDT) Message-ID: <200507040409.j64490AT070232@asgard.t-b-o-h.net> Weekly Status on 07/04/05 -=- 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 Jul 3 14:04:23 EDT 2005 # %W/ %L/ %T Name Author Score Age 1 33/ 29/ 38 Borgir Christian Schmidt 138 283 2 32/ 27/ 40 Hullabaloo Roy van Rijn 138 248 3 43/ 48/ 9 Arrow Christian Schmidt 137 451 4 26/ 15/ 59 Maelstrom Roy van Rijn 136 391 5 29/ 23/ 47 New-T Roy van Rijn 135 182 6 32/ 28/ 40 DifferentialOperatorWS Nenad Tomasev 135 77 7 39/ 44/ 17 Beat this Sascha Zapf 133 96 8 26/ 19/ 54 Mk I Military Grade Milk Jens Gutzeit 133 1 9 32/ 31/ 37 107 kHz Sascha Zapf 133 41 10 31/ 29/ 40 The Humanizer bvowk/fiz 133 136 11 37/ 43/ 20 Sharky Christian Schmidt 132 57 12 24/ 17/ 59 S.D.N. Christian Schmidt 132 60 13 31/ 30/ 39 UnderConstruction Roy van Rijn 131 34 14 25/ 19/ 55 Black Knight Christian Schmidt 131 273 15 29/ 28/ 43 false illusion John Metcalf 130 56 16 28/ 27/ 45 Kaiten Nenad Tomasev 130 13 17 36/ 42/ 22 KryneLamiya Nenad Tomasev 129 37 18 26/ 24/ 51 Sinus Tree Christian Schmidt 127 62 19 27/ 28/ 45 PerfectTimev3.4 Nenad Tomasev 126 8 20 35/ 45/ 19 somewhere way underground John Metcalf 125 10 21 36/ 51/ 13 CPScanner Nenad Tomasev 121 0 From: KOTH Subject: KOTH.ORG: Status - MultiWarrior 94 07/04/05 Date: Mon, 4 Jul 2005 08:16:27 -0400 (EDT) Message-ID: <200507040403.j64430F2069951@asgard.t-b-o-h.net> Weekly Status on 07/04/05 -=- 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 : Sat Jul 2 13:48:58 EDT 2005 # Name Author Score Age 1 Mk I Military Grade Milk Jens Gutzeit 47 6 2 careless scanning Simon Wainwright 38 22 3 kingdom of the grasshoppe simon wainwright 37 53 4 KryneLamiya Nenad Tomasev 35 7 5 glow worm John Metcalf 33 11 6 Hiperblast G.Labarga 32 63 7 CPScanner Nenad Tomasev 31 3 8 FishingForPapers Nenad Tomasev 30 4 9 deos Nenad Tomasev 28 1 10 SoulEater Nenad Tomasev 26 2 11 TheWingsOfTheHydra Nenad Tomasev 23 0 From: KOTH Subject: KOTH.ORG: Status - ICWS Experimental 94 07/04/05 Date: Mon, 4 Jul 2005 08:16:26 -0400 (EDT) Message-ID: <200507040406.j64460iZ070039@asgard.t-b-o-h.net> Weekly Status on 07/04/05 -=- 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 : Sat Jul 2 17:46:47 EDT 2005 # %W/ %L/ %T Name Author Score Age 1 44/ 36/ 20 Fatamorgana X Zul Nadzri 152 5 2 42/ 37/ 21 The X Machine Zul Nadzri 147 29 3 31/ 21/ 48 xd100 test David Houston 141 15 4 40/ 40/ 20 Eliminator X Zul Nadzri 141 30 5 42/ 45/ 13 Fire and Ice II David Moore 140 118 6 24/ 9/ 67 Evol Cap 4 X John Wilkinson 138 287 7 25/ 12/ 63 Denial David Moore 137 159 8 38/ 40/ 22 Ogre Christian Schmidt 135 166 9 38/ 42/ 20 Black Moods Ian Oversby 134 214 10 30/ 26/ 43 KAT v5 Dave Hillis 134 150 11 31/ 29/ 40 Olivia X Ben Ford 133 99 12 38/ 44/ 18 Giant Hazy Test 13 Steve Gunnell 133 45 13 39/ 45/ 17 O_Fortuna3X Nenad Tomasev 132 1 14 35/ 38/ 27 Trefoil F 13 Steve Gunnell 131 101 15 36/ 40/ 24 Controlled Aggression Ian Oversby 131 218 16 34/ 39/ 27 Trefoil Test F 14 Steve Gunnell 130 2 17 29/ 29/ 42 Venom v0.2b Christian Schmidt 130 240 18 28/ 26/ 46 Glenstorm John Metcalf 130 80 19 18/ 7/ 75 Evolve X v4.0 John Wilkinson 128 235 20 35/ 42/ 23 Simply Intelligent Zul Nadzri 128 11 21 31/ 48/ 22 YggdrasilX Nenad Tomasev 114 0 From: KOTH Subject: KOTH.ORG: Status - Standard 07/04/05 Date: Mon, 4 Jul 2005 08:16:28 -0400 (EDT) Message-ID: <200507040400.j64400YR069891@asgard.t-b-o-h.net> Weekly Status on 07/04/05 -=- 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 : Sat Jul 2 11:12:48 EDT 2005 # %W/ %L/ %T Name Author Score Age 1 34/ 26/ 40 Test Alexander (Sasha) Wa 143 168 2 41/ 40/ 20 Scan the Can Christian Schmidt 142 9 3 36/ 29/ 35 The Next Step '88 David Houston 142 44 4 33/ 26/ 41 Freight Train David Moore 140 229 5 38/ 37/ 25 Tangle Trap 3 David Moore 139 57 6 25/ 13/ 62 Utterer '88 Christian Schmidt 136 3 7 31/ 27/ 42 The Hurricaner G.Labarga 135 15 8 41/ 46/ 13 Scan Test C 6 Steve Gunnell 135 67 9 39/ 43/ 18 trick shot John Metcalf 135 5 10 37/ 41/ 22 My 1st try Christian Schmidt 134 60 11 31/ 27/ 42 Guardian Ian Oversby 134 228 12 34/ 33/ 33 The Seed Roy van Rijn 134 46 13 37/ 41/ 22 Moonwipe Christian Schmidt 134 25 14 30/ 26/ 44 test G.Labarga 133 11 15 38/ 43/ 20 July Nenad Tomasev 133 1 16 21/ 11/ 67 IMParable G.Labarga 131 16 17 39/ 48/ 13 Speeed 88mph Christian Schmidt 131 28 18 34/ 39/ 27 PacMan David Moore 129 258 19 29/ 31/ 40 A.I.P. Christian Schmidt 126 36 20 34/ 42/ 23 Stasis David Moore 126 336 21 34/ 47/ 19 MyFirst88Warrior.1 Nenad Tomasev 122 2 From: Jens Gutzeit Subject: Problems with koth.org Date: Mon, 04 Jul 2005 16:38:36 +0200 Message-ID: Hi, is it just me or are the strategies of the warriors often mixed after a new one has been submitted to koth.org? - Jens Gutzeit From: Jens Gutzeit Subject: Re: Problems with koth.org Date: Mon, 04 Jul 2005 17:02:04 +0200 Message-ID: The most important part is winning ;-) - Jens Gutzeit Message-ID: From: anton@paradise.net.nz (Anton Marsden) Subject: Core War Frequently Asked Questions (rec.games.corewar FAQ) Date: 05 Jul 2005 04:25:45 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: =?ISO-8859-2?Q?=A3ukasz_Adamowski?= Subject: Odp: sunday irc tournaments Date: Tue, 5 Jul 2005 13:28:57 -0400 (EDT) Message-ID: <42c949dc02843@wp.pl> Dnia 3-07-2005 o godz. 22:51 Nenad Tomasev napisal: > I suggest that we reschedule the weekly tournaments. There are > seldomly enough people on the channel at sunday night for a > tournament (or even a conversation). If there aren't many people > interested in coming to compete at sunday nights, then we should > pick a different time for these mini tournaments. I suggest friday > night. If you have other ideas or if you can't make it on fridays, > feel free to post a reply. :). 30-minutes IRC tournamets are a lot of fun, but right now it's a middle of summer in Poland where I live. I want to spend more time outdoor, I think I sit before my computer (and many others ;) enough to have more than average dose of radiation. ;] So... Any time you choose it will be accepted by me. If I find some time/wish, I may participate. To be honest I'm waiting for another RF round. Any news? Lukasz Adamowski -= "War is a problem, never a solution" =- -= "Wojna jest problemem, a nie rozwiazaniem" =- ---------------------------------------------------- Gwarantowany zysk 10% + iPod mini w prezencie. Sprawd� najlepsz� inwestycj� na rynku i odbierz sw�j upominek. http://klik.wp.pl/?adr=http%3A%2F%2Fadv.reklama.wp.pl%2Fas%2Fopen13.html&sid=419 From: Tuc at Beach House Subject: Re: Problems with koth.org Date: Tue, 5 Jul 2005 13:32:59 -0400 (EDT) Message-ID: <200507051542.j65FgbKO007492@himinbjorg.tucs-beachin-obx-house.com> > > It's not just you. It happend to me many times lately, as well. > Sometimes it's ok, and sometimes it gets mixed, so that the strategy > fields of one warrior correspond to the other, and there is also the > occurence of mistakes in the tables of results for specific warriors, > where some warrior names get repeated several times, etc. ... But, the > hill itself seems to be working properly, which is the most important > thing. :) > If someone or someones can email me with EXACT specifics, I will look into it. You can't just say "The hill is messed", you need to say "I got the following XXXXXXXXXXXXX, and it says that the G is R, but if you look at it closely, it really should be saying P. When I go to X, then it says P.". Thanks, Tuc From: "elkauka" Subject: cw comics: #1 the deeper logic of corewar Date: 6 Jul 2005 05:39:38 -0700 Message-ID: <1120653578.377285.268550@g47g2000cwa.googlegroups.com> hi redcoders, after trying to explain corewar to a friend, i must admid that the corewar-slang is really weird sometimes... (corewar-web-comics are inspired by the great nerd-boy ascii art. www.nerd-boy.net) episode #1: the deeper logic of corewar aaaahhhhh! THOUSENDS v of replicator copies attacking us !!!!!! *flap* \/ '../ oo v /\ /\\ .||. /\ ___________LL_______||_________________ =B0 *zapp* /\ ^ =B0 ..' oo =B0 ^ / \ )) .||> - --^v-=B0-.- - < WOOOM!!! ________> >_________||_________________/ v v =B0 \/ =B0 HELL! what have you done ??? '.. oo <||\ .||. ________||__________||__________________ one shot is quit enough 'xx =F4=F4 <||\ .||. ________||__________||__________________ elkauka From: "CoreChild" Subject: Re: Problems with koth.org Date: 6 Jul 2005 08:42:07 -0700 Message-ID: <1120664527.238215.48120@o13g2000cwo.googlegroups.com> Hi, For an example saved from the '94nop hill see: http://corewar.co.uk/temp/current.htm Some of the strategy lines are duplicated. I have no idea when this happens - often it seems fine a short while afterwards. It only seems to happen on the strategy lines - I haven't seen duplicated names or authors. Regards, John Tuc at the Beach House wrote: > > > > http://www.koth.org/lcgi-bin/list.pl > > > > When submitting a warrior only the first part of it's name is displayed, > > if the name contains a space, e.g. > > > > ;name Test 42 > > > > Displayed is only "Test" before the battles start, but not "Test 42". > > After the battles have started, the complete name is used. > > > Fixed...... > > > > http://www.koth.org/lcgi-bin/current.pl?hill94nop > > > > Having submitted an new Program (name "test") warrior "PerfectTime3.4" > > shows the wrong strategy ""Satellite Defending Network ...". This was > > the strategy line of warrior "S.D.N." > > > Sorry, when I just pulled it up, it shows up properly. PerfectTime3.4 > is showing " stone/paper (a final version?)" and S.D.N. is showing > ""Satellite Defending Network" / a revolutionary strategical concept / which is much faster and less visible / I am still in progress to discover / this new and interesting field of / 'satellite using' warriors / including wipe check of the satellites / optimized test warrior" > > Tuc From: Tuc at the Beach House Subject: Re: Problems with koth.org Date: Wed, 6 Jul 2005 09:05:09 -0400 (EDT) Message-ID: <200507061249.j66CnVa7037289@vjofn.tucs-beachin-obx-house.com> > > http://www.koth.org/lcgi-bin/list.pl > > When submitting a warrior only the first part of it's name is displayed, > if the name contains a space, e.g. > > ;name Test 42 > > Displayed is only "Test" before the battles start, but not "Test 42". > After the battles have started, the complete name is used. > Fixed...... > > http://www.koth.org/lcgi-bin/current.pl?hill94nop > > Having submitted an new Program (name "test") warrior "PerfectTime3.4" > shows the wrong strategy ""Satellite Defending Network ...". This was > the strategy line of warrior "S.D.N." > Sorry, when I just pulled it up, it shows up properly. PerfectTime3.4 is showing " stone/paper (a final version?)" and S.D.N. is showing ""Satellite Defending Network" / a revolutionary strategical concept / which is much faster and less visible / I am still in progress to discover / this new and interesting field of / 'satellite using' warriors / including wipe check of the satellites / optimized test warrior" Tuc From: Tuc at the Beach House Subject: Re: Problems with koth.org Date: Wed, 6 Jul 2005 09:05:08 -0400 (EDT) Message-ID: <200507061255.j66CtA6T037383@vjofn.tucs-beachin-obx-house.com> > > By the way, it would be quite nice, if names longer than 25 chars could > be used in warriors. It is quite dissapointing, that only an incomplete > name of the warrior is used in the hill table (e.g. on > /lcgi-bin/current.pl?hill94nop) when its name is too long. How can I > ever publish my "Mk III Military Grade Milk", if only "Mk III Military > Grade Mil" is displayed. > Its a self imposed limit to prevent the report from getting messed up. # %W/ %L/ %T Name Author Score Age 1 45/ 45/ 10 Arrow Christian Schmidt 145 456 2 34/ 26/ 40 Hullabaloo Roy van Rijn 142 253 3 34/ 28/ 38 Borgir Christian Schmidt 141 288 4 27/ 16/ 57 Maelstrom Roy van Rijn 139 396 5 29/ 19/ 52 Mk I Military Grade Milk Jens Gutzeit 139 6 6 34/ 29/ 37 107 kHz Sascha Zapf 138 46 If we let it go any farther, it might look like : # %W/ %L/ %T Name Author Score Age 1 45/ 45/ 10 Arrow Christian Schmidt 145 456 2 34/ 26/ 40 Whats all this Hullabaloo Roy van Rijn 142 253 3 34/ 28/ 38 Why woulod you want to beat Borgir Christian Schmidt 141 288 4 27/ 16/ 57 This is a really big one called Maelstrom Roy van Rijn 139 396 5 29/ 19/ 52 Mk III Military Grade Milk Jens Gutzeit 139 6 6 34/ 29/ 37 Not 2600 Hz but 107 kHz Sascha Zapf 138 46 > > But that is just my second favorite wish next to beeing KotH on every > hill ;-) > We could arrange that.... :) Tuc From: Jens Gutzeit Subject: Re: Problems with koth.org Date: Wed, 06 Jul 2005 10:19:11 +0200 Message-ID: http://www.koth.org/lcgi-bin/list.pl When submitting a warrior only the first part of it's name is displayed, if the name contains a space, e.g. ;name Test 42 Displayed is only "Test" before the battles start, but not "Test 42". After the battles have started, the complete name is used. http://www.koth.org/lcgi-bin/current.pl?hill94nop Having submitted an new Program (name "test") warrior "PerfectTime3.4" shows the wrong strategy ""Satellite Defending Network ...". This was the strategy line of warrior "S.D.N." - Jens Gutzeit From: Jens Gutzeit Subject: Re: Problems with koth.org Date: Wed, 06 Jul 2005 10:44:15 +0200 Message-ID: By the way, it would be quite nice, if names longer than 25 chars could be used in warriors. It is quite dissapointing, that only an incomplete name of the warrior is used in the hill table (e.g. on /lcgi-bin/current.pl?hill94nop) when its name is too long. How can I ever publish my "Mk III Military Grade Milk", if only "Mk III Military Grade Mil" is displayed. But that is just my second favorite wish next to beeing KotH on every hill ;-) - Jens Gutzeit From: "Nenad Tomasev" Subject: Re: cw comics: #1 the deeper logic of corewar Date: 6 Jul 2005 10:57:11 -0700 Message-ID: <1120672631.498104.47560@o13g2000cwo.googlegroups.com> :) Very nice. You should draw some more. From: "Nenad Tomasev" Subject: Re: Problems with koth.org Date: 6 Jul 2005 11:07:10 -0700 Message-ID: <1120673230.897629.269110@g44g2000cwa.googlegroups.com> Hi. I must correct you, and say that the warrior names tend to get duplicated, as well (sometimes), but not in the table which represents the hill itself. When you look at the warrior details (the detailed results of one warrior fighting other warriors on the hill), some of the opponent names are sometimes duplicated. Regards, Nenad From: Tuc at the Beach House Subject: Re: Problems with koth.org Date: Wed, 6 Jul 2005 13:14:36 -0400 (EDT) Message-ID: <200507061653.j66Grp0P042039@vjofn.tucs-beachin-obx-house.com> > > Hi, > > For an example saved from the '94nop hill see: > > http://corewar.co.uk/temp/current.htm > > Some of the strategy lines are duplicated. I have no > idea when this happens - often it seems fine a short > while afterwards. It only seems to happen on the > strategy lines - I haven't seen duplicated names or > authors. > Ok, thanks. I took a look at the program (I wrote it in 1995.... I had no idea what I did, or what JKW did in 2000. :) )...... It looks like if the hill is in "flux" (There is a fight occuring or its ended) it can happen. To print that out, it opens the same file you see when it mails you the table like : Last battle concluded at : Wed Jul 6 04:15:14 EDT 2005 # %W/ %L/ %T Name Author Score Age 1 45/ 45/ 10 Arrow Christian Schmidt 145 456 2 34/ 26/ 40 Hullabaloo Roy van Rijn 142 253 3 34/ 28/ 38 Borgir Christian Schmidt 141 288 4 27/ 16/ 57 Maelstrom Roy van Rijn 139 396 And then it opens the individual fighter files for the rest of the information. If this information is being written/re-written at the time, it might not be correct. I'm not sure how to fix this off hand..... There is a backup of the hill made during a fight, but if we used that then there is always the possibility the backup will disappear during the program running. I'm again open to suggestions on how to atleast let you know that this is possible. Thanks, Tuc > Regards, > > John > > Tuc at the Beach House wrote: > > > > > > http://www.koth.org/lcgi-bin/list.pl > > > > > > When submitting a warrior only the first part of it's name is displayed, > > > if the name contains a space, e.g. > > > > > > ;name Test 42 > > > > > > Displayed is only "Test" before the battles start, but not "Test 42". > > > After the battles have started, the complete name is used. > > > > > Fixed...... > > > > > > http://www.koth.org/lcgi-bin/current.pl?hill94nop > > > > > > Having submitted an new Program (name "test") warrior "PerfectTime3.4" > > > shows the wrong strategy ""Satellite Defending Network ...". This was > > > the strategy line of warrior "S.D.N." > > > > > Sorry, when I just pulled it up, it shows up properly. PerfectTime3.4 > > is showing " stone/paper (a final version?)" and S.D.N. is showing > > ""Satellite Defending Network" / a revolutionary strategical concept / which is much faster and less visible / I am still in progress to discover / this new and interesting field of / 'satellite using' warriors / including wipe check of the satellites / optimized test warrior" > > > > Tuc > From: Jens Gutzeit Subject: Quickscanners - Part I Date: Thu, 07 Jul 2005 18:30:34 +0200 Message-ID: Hi, I'm still quite new to corewar, but at least I've already managed to enter one or two hills ;-) I find it often very confusing to deal with all the programming techniques, that have accumulated over the last two decades. That's why I thought, I should learn how to make an acceptable quickscanner, not only to use it to improve my warriors, but also to understand how it works. I hope, that other beginners might find my ramblings useful and that all veterans (i.e. everybody, who's name is not Jens ;-) might point out improvements or errors. This posting only deals with simple quickscanners. I intend to post further texts, that deal with the more advanced quickscanners. During the last weeks I've tried to create a successful paper. That's why I'll use yet another paper as a starting point: ;redcode-94nop verbose ;name Yet Another Paper (YAP) ;author Jens Gutzeit ;strategy paper ;assert CORESIZE == 8000 ORG boot pStep1 EQU 3913 pStep2 EQU 3035 boot spl 1 spl 1 silk1 spl @ silk1, < pStep1 mov.i } silk1, > silk1 mov.i { silk1, < silk2 silk2 djn.f @ silk2, < pStep2 END If you don't know what a paper is or how it works, I suggest, that you read the wonderfull paper-tutorial at http://www.corewar.info/lexicon/paper.htm by Christian Schmidt. Don't think, that YAP is a good paper. I simply use it to show the usefulness of a quickscanner. I've chosen the values for pStep1 and pStep2 after a very short session with my optimizer. It scores about 117.7 (W 21.68%, T 52.64%, L 25.68%) against Wilkies and about 110.2 (W 17.04%, T 59.13%, L 23.84%) against WilFiz. That is certainly not enough to enter any hill at koth.org, but it should be enough for the beginner's hill at http://sal.math.ualberta.ca/hill.php?key=94b 1. Try: A first quickscanner ============================ The basic idea of a quickscanner is to scan a few locations quite fast. If the quickscanner finds something it is very likely to be the enemy and we should hit it quite hard. A quickscan simply unrolls a normal scan-loop like this qGo seq.i 100, 200 ; are instructions at 100 and 200 equal? mov # 100, found ; yes -> store 100 seq.i 300, 400 ; are instructions at 300 and 400 equal? mov # 300, found ; yes -> store 3000 seq.i 500, 600 mov # 500, found ... seq.i 7500, 7600 mov # 7500, found seq.i 7700, 7800 mov # 7700, found found jmz boot, # 0 ; start paper, if found nothing :-( attack ... That way we scan scan 2 positions per instruction, i.e. we scan at 2c. Let's see how well this works. Here is YAP with a simple quickscanner: ORG qGo boot ... ; nothing new here ;; ;; quickscan ;; start EQU boot ; first instruction of this warrior qStart EQU (start + 230) ; first scaned position qSpace EQU 7700 ; space to cover with quickscan qNum EQU 25 ; number of scans qStep EQU (qSpace/qNum) ; distance between two scans qHop EQU (qStep/2) ; distance betweens two scan positions ;; put as much space between the paper and the quickscan as possible for (85 - 2 * qNum) dat.f 0, 0 rof qGo i for qNum seq.i qStart+(i-1)*qStep, qStart+(i-1)*qStep+qHop mov.ab # qStart+(i-1)*qStep-found, found rof found jmz boot, # 0 ; B-Field != 0 -> quickscan found sth. qTimes EQU 20 ; number of bombs to throw bDist EQU 80 ; target range qStep2 EQU (bDist/qTimes + 1) ;; choose between the two scan positions find sne.i (start - 1), @ found ; hit first position? add.ab # qHop, found ; use second one add.ab # (bDist/2), found ; start with bombing from above ;; bomb target attack mov.i qBomb, @ found sub.ab # qStep2, found djn attack, # qTimes jmp boot qBomb dat.f # 1, # 1 END If the quickscan finds something, it stores the lower scan position at "found". If the b-field of "found" is non-zero, the attack starts by choosing between the two possible scan positions ("find"). After that the found position is bombed linearly from above with qTimes bombs. There are better methods to bomb the enemy, but this methode is good enought for new. Not counting the attack code, there are 85 instructions left for the quickscan, i.e. there are max. 42 scans possible. Using the Wilkies- benchmark we get the following scores: qTimes Wilkies gain 42 119.35 (W 23.66%, T 48.38%, L 27.97%) + 1.65 41 40 39 38 37 36 35 122.44 (W 24.47%, T 49.02, L 26.51%) + 4.74 34 33 32 31 30 29 28 27 26 127.23 (W 26.10%, T 48.93%, L 24.97%) + 9.53 25 128.68 (W 26.57%, T 48.96%, L 24.47%) +10.98 24 127.61 (W 26.23%, T 48.91%, L 24.86%) + 9.91 23 127.51 (W 26.13%, T 49.11%, L 24.76%) + 9.81 22 125.04 (W 25.41%, T 48.82%, L 25.78%) + 7.34 21 20 127.25 (W 25.89%, T 49.57%, L 24.53%) + 9.55 19 18 17 16 15 14 13 12 11 10 9 122.55 (W 23.80%, T 51.15%, L 25.05%) + 4.85 8 122.61 (W 23.93%, T 50.81%, L 25.26%) + 4.91 7 120.92 (W 23.13%, T 51.52%, L 25.35%) + 3.22 6 121.93 (W 23.57%, T 51.53%, L 25.00%) + 4.23 5 119.79 (W 22.62%, T 51.92%, L 25.46%) + 2.09 4 119.53 (W 22.51%, T 52.01%, L 25.48%) + 1.82 3 119.77 (W 22.50%, T 52.27%, L 25.22%) + 2.07 2 117.31 (W 21.53%, T 52.71%, L 25.76%) - 0.39 1 116.63 (W 21.45%, T 52.28%, L 26.27%) - 1.07 Max. +11 points (qNum EQU 25) is not bad. In order to exclude the possibility, that the quickscan is useless and acts only as a good decoy, using "ORG boot" with the same quickscan results in a score of 116.84 (W 21.16%, T 53.37%, L 25.47%). It seems, that the quickscan does something good. Against Wilfiz we score 100.77 (W 17.29%, T 48.90%, L 33.81%) with qNum EQU 25. Oops! It seems to be, that our opponents find our warrior faster than we do. Using less scans (qNum EQU 15) is better against wilfiz: 111.65 (W 18.86%, T 55.05%, L 26.08%). 2. Problems and even more problems ================================== If the quickscan finds something during its first scans it takes ages to start the attack. Good warriors might already have booted away and we just hit dead code. That's why you should add the possiblity of an early attack, e.g. ... for (83 - 2 * qNum) dat.f 0, 0 rof qGo i for 5 seq.i qStart+(i-1)*qStep, qStart+(i-1)*qStep+qHop mov.ab # qStart+(i-1)*qStep-found, found rof jmn find, found ; attack early, if found sth. i for 5 seq.i qStart+(i+4)*qStep, qStart+(i+4)*qStep+qHop mov.ab # qStart+(i+4)*qStep-found, found rof jmn find, found ; attack early, if found sth. i for (qNum - 10) seq.i qStart+(i+9)*qStep, qStart+(i+9)*qStep+qHop mov.ab # qStart+(i+9)*qStep-found, found rof ... Now YAP scores 129.37 (W 27.21%, T 47.74%, L 25.05%) against Wilkies, only because we have added two lines! Unfortunately we tie less, that's why we only gain about 1 point. You could add even more early attacks to your quickscan. It might increase your score. We've seen, that our quickscan is fast, but unfortunately it adds a lot of code to our warrior (2 lines per scan + attack code). The more positions we scan, the more likely it is, that other quickscanner might find us too. Therefore you should boot away quite fast after the quickscanner is finished. Fortunately our little paper moves away quite fast. Another possiblity is to shorten the scan without reducing the number of scans. How is that done? Here is the answer: ... qGo sne.i # 100, # 200 seq.i # 300, # 400 mov.ab # 100, found sne.i # 500, # 600 seq.i # 700, # 800 mov.ab # 500, found ... found jmz boot, # 0 attack ... What happens, if this quickscanner finds nothing? Positions 100 and 200 are equal. That is why seq.i is executed. Since position 300 and 400 are equal, the mov is skipped. We scan with 2c, but only need 3 instructions/2 scans instead of 4 instructions before. What happens, if this quickscanner finds something? If position 100 and 200 aren't equal, the seq is skipped and the mov is executed. If 100 and 200 are equal and 300 and 400 are not, the mov is executed. Either way, we can start attacking :-) The only problem is, that we don't know, where to hit. 100, 200, 300 oder 400? Before we start the attack, we have to decide which target to use. Here is the new version: ;; ;; quickscan ;; start EQU boot ; first instruction of this warrior qStart EQU (start + 230) ; first scaned position qSpace EQU 7700 ; space to cover with quickscan qNum EQU 9 ; number of scans qStep EQU (qSpace/(2*qNum)); distance between two scans qHop EQU (qStep/2) ; distance betweens two scan positions ;; put as much space between the paper and the quickscan as possible for (83 - 3 * qNum) dat.f 0, 0 rof qGo i for qNum sne.i qStart+(2*i-2)*qStep,qStart+(2*i-2)*qStep+qHop seq.i qStart+(2*i-2)*qStep+2*qHop,qStart+(2*i-2)*qStep+3*qHop mov.ab # qStart+(2*i-2)*qStep-found, found rof found jmz boot, # 0 ; B-Field not 0 -> quickscan found sth. qTimes EQU 20 ; number of bombs to throw bDist EQU 80 ; target range qStep2 EQU (bDist/qTimes + 1) ;; select between the four scan positions find seq.i (start - 1), @ found jmp adjust add.ab # qHop, found djn find, # 4 adjust add.ab # (bDist/2), found ; start with bombing from above ;; bomb target attack ... There (2*qNum) scans now. The attack code is little bit longer due to the fact, that we have to choose between four possible scan positions. If you have a bigger warrior that might be worth the longer reaction time. Setting qNum to 9 results in a score of 127.00 (W 25.68%, T 49.95%, L 24.37%). Our old quickscanner used 50 scan positions to gain a score of 128.7. The new version scans only 36 positions and scores almost quite as good. Now there is only one thing to do: add an early attack :-) ;; ;; quickscan ;; start EQU boot ; first instruction of this warrior qStart EQU (start + 230) ; first scaned position qSpace EQU 7700 ; space to cover with quickscan qNum EQU 10 ; number of scans qStep EQU (qSpace/(2*qNum)); distance between two scans qHop EQU (qStep/2) ; distance betweens two scan positions ;; put as much space between the paper and the quickscan as possible for (81 - 3 * qNum) dat.f 0, 0 rof qGo i for 2 sne.i qStart+(2*i-2)*qStep,qStart+(2*i-2)*qStep+qHop seq.i qStart+(2*i-2)*qStep+2*qHop,qStart+(2*i-2)*qStep+3*qHop mov.ab # qStart+(2*i-2)*qStep-found, found rof jmn find, found ; early attack i for 3 sne.i qStart+(2*i+2)*qStep,qStart+(2*i+2)*qStep+qHop seq.i qStart+(2*i+2)*qStep+2*qHop,qStart+(2*i+2)*qStep+3*qHop mov.ab # qStart+(2*i+2)*qStep-found, found rof jmn find, found ; early attack i for (qNum - 5) sne.i qStart+(2*i+8)*qStep,qStart+(2*i+8)*qStep+qHop seq.i qStart+(2*i+8)*qStep+2*qHop, qStart+(2*i+8)*qStep+3*qHop mov.ab # qStart+(2*i+8)*qStep-found, found rof found ... Now we have 128.63 (W 26.55%, T 48.98%, L 24.47%) against Wilkies. Almost as good as the previous version. 3. Further improvements ======================= Apart from adding further "early attacks", you might want to change the order of the scan positions. Having done that, you shouldn't forget to optimize the paper constants a little bit. A faster or better attack might also result in 1 or 2 more points. Just to see how good YAP is, I have submitted the following version to the biginners hill at SAL. ;redcode-94 ;name Yet Another Paper ;version 1.0.0 ;author Jens Gutzeit ;strategy quickscan -> paper ;assert CORESIZE == 8000 ORG qGo pStep1 EQU 3913 pStep2 EQU 3035 boot spl 1 spl 1 silk1 spl @ silk1, < pStep1 mov.i } silk1, > silk1 mov.i { silk1, < silk2 silk2 djn.f @ silk2, < pStep2 ;; ;; quickscan ;; start EQU boot ; first instruction of this warrior qStart EQU (start + 230) ; first scaned position qSpace EQU 7700 ; space to cover with quickscan qNum EQU 10 ; number of scans qStep EQU (qSpace/(2*qNum)); distance between two scans qHop EQU (qStep/2) ; distance betweens two scan positions ;; put as much space between the paper and the quickscan as possible for (81 - 3 * qNum) dat.f 0, 0 rof qGo i for 2 sne.i qStart+(2*i-2)*qStep,qStart+(2*i-2)*qStep+qHop seq.i qStart+(2*i-2)*qStep+2*qHop,qStart+(2*i-2)*qStep+3*qHop mov.ab # qStart+(2*i-2)*qStep-found, found rof jmn find, found ; early attack i for 3 sne.i qStart+(2*i+2)*qStep,qStart+(2*i+2)*qStep+qHop seq.i qStart+(2*i+2)*qStep+2*qHop,qStart+(2*i+2)*qStep+3*qHop mov.ab # qStart+(2*i+2)*qStep-found, found rof jmn find, found ; early attack i for (qNum - 5) sne.i qStart+(2*i+8)*qStep,qStart+(2*i+8)*qStep+qHop seq.i qStart+(2*i+8)*qStep+2*qHop,qStart+(2*i+8)*qStep+3*qHop mov.ab # qStart+(2*i+8)*qStep-found, found rof found jmz boot, # 0 ; B-Field not 0 -> quickscan found sth. qTimes EQU 20 ; number of bombs to throw bDist EQU 80 ; target range qStep2 EQU (bDist/qTimes + 1) ;; select between the four scan positions find seq.i (start - 1), @ found jmp adjust add.ab # qHop, found djn find, # 4 adjust add.ab # (bDist/2), found ; start with bombing from above ;; bomb target attack mov.i qBomb, @ found sub.ab # qStep2, found djn attack, # qTimes jmp boot qBomb dat.f # 1, # 1 END 4. Usefull links ================ The '94 Warrior #14 http://www.koth.org/planar/94warrior/14.txt CoreWarrior 7 http://pauillac.inria.fr/~doligez/corewar/corewarrior/007.txt (There are more links, but these deal with simple quickscanners.) 5. Preview ========== Make sure you tune in next time to find out how better quickscanner work! Please send all comments/ideas/flames to r.g.c. and keep in mind, that this little text only deals with the basic version of a quickscanner. - Jens Gutzeit From: Jens Gutzeit Subject: Quickscanners - Part II Date: Sat, 09 Jul 2005 00:52:12 +0200 Message-ID: Quickscanners - Part II ======================= This part deals only with the second generation of quickscanners. You have to wait for part III before I try to cover the more recent improvements. 1. Better response time ======================= The main problem, despite the "early attacks", is, that it still takes too many cycles before an attack starts. Why not jump to the attack right after a successful scan? qGo seq.i 100, 200 jmp attack seq.i 300, 400 jmp attack ... jmp boot ; found nothing -> start warrior attack ... The only problem is, that now we don't know where to attack :-( Fortunatly all you need is a little table and some addressing modes. qGo seq.i 100, 200 jmp attack, 0 seq.i 300, 400 jmp attack, { attack seq.i 500, 600 jmp attack, } attack seq.i 700, 800 jmp attack, < attack seq.i 900, 1000 jmp attack, > attack Here is a first version of the new quickscanner together with our beloved YAP. ;redcode-94nop verbose ;name Yet Another Paper (YAP) ;author Jens Gutzeit ;strategy paper ;assert CORESIZE == 8000 ORG qGo pStep1 EQU 3913 pStep2 EQU 3035 boot spl 1 spl 1 silk1 spl @ silk1, < pStep1 mov.i } silk1, > silk1 mov.i { silk1, < silk2 silk2 djn.f @ silk2, < pStep2 ;; ;; quickscanner ;; start EQU boot ; first instruction of warrior qStart EQU (start + 230) ; first scanned position qSpace EQU 7700 ; space to cover with quickscan qNum EQU 6 ; number of scans qStep EQU (qSpace/qNum) ; distance between two scans qHop EQU (qStep/2) for 68 dat.f 0, 0 rof qGo seq.i qStart+0*qStep, qStart+0*qStep+qHop jmp attack, 0 ; A seq.i qStart+1*qStep, qStart+1*qStep+qHop jmp attack, { attack ; B seq.i qStart+2*qStep, qStart+2*qStep+qHop jmp attack, } attack ; C seq.i qStart+3*qStep, qStart+3*qStep+qHop jmp attack, > attack ; D seq.i qStart+4*qStep, qStart+4*qStep+qHop jmp attack, < attack ; E seq.i qStart+5*qStep, qStart+5*qStep+qHop djn.f attack, attack ; F jmp boot ;; choose target qTimes EQU 20 ; number of bombs to throw bDist EQU 80 ; target range qStep2 EQU (bDist/qTimes + 1) dat.f 1*qStep, qStart+4*qStep-found qTab dat.f 0*qStep, qStart+0*qStep-found dat.f 2*qStep, qStart+3*qStep-found attack add.ab qTab, qTab found mov.b @ attack, # 0 ;; choose between the two possible positions sne.i (start - 1), @ found ; use first position? add.ab # qHop, found ; no, use second one add.ab # (bDist/2), found ; start with bombing from above ;; bomb target throw mov.i qBomb, @ found sub.ab # qStep2, found djn throw, # qTimes jmp boot qBomb dat.f # 1, # 1 END How does it work? Let's examine each scan. When the scanner finds something, it jumps at once to "attack" and while jumping, it might change the fields at "attack". The attack-instruction calculates the correct position. The next instruction moves the result into the "found"-field, that we need for our attack. Forget the "...-found"-part in qTab. They are only there to make the result, which is copied to "found", point to the correct position. Using jump A, there are no changes made. The A-field of qTab (0*qStep) is added to the B-field of qTab (qStart+0*qStep), resulting in (qStart+0*qStep). The next instruction moves this result to our old friend "found". And now we have the correct value at the right position. Using jump B, we need the value (qStart+1*qStep). The jump changes our attack-instruction to "add.ab qTab-1, qTab", which adds (1*qStep) to (qStart+0*qStep). After the next instruction, we have (qStart+1*qStep) at "found". Using jump C, we need the value (qStart+2*qStep). The jump changes our attack-instruction to "add.ab qTab+1, qTab", which adds (2*qStep) to (qStart+0*qStep). After the next instruction, we have (qStart+2*qStep) at "found". Using jump D, we need the value (qStart+3*qStep). The jump changes our attack-instruction to "add.ab qTab, qTab+1", which adds (0*qStep) to (qStart+3*qStep). After the next instruction, we have (qStart+3*qStep) at "found". Using jump E, we need the value (qStart+4*qStep). The jump changes our attack-instruction to "add.ab qTab, qTab-1", which adds (0*qStep) to (qStart+4*qStep). After the next instruction, we have (qStart+4*qStep) at "found". Using jump F, we need the value (qStart+5*qStep). The jump changes our attack-instruction to "add.ab qTab-1, qTab-1", which adds (1*qStep) to (qStart+4*qStep). After the next instruction, we have (qStart+5*qStep) at "found". Well, it seems to work. This version of YAP scores 121.97 (W 23.47%, T 51.54%, L 24.98%) against Wilkies with just 6 scans. Our first version with 6 scans (see part I) scored 121.93 (W 23.57%, T 51.53%, L 25.00%) against Wilkies. How long does it take, before the first bomb is thrown? Having found something, we execute a jump to the attack, a possibly changed "add.ab qTab, qTab" and a "mov.b @ attack, # 0". After that, we have to decide, which position to use (1.5 instructions) and change the target-pointer "found". That makes an average of 5.5 instruction before the attack starts. 2. More scans ============= With 6 scans YAP scores only 4 points better than the original version without a quickscanner. As you already know, we can do better. We use the sne/seq-trick introduced in part I. ... ;; ;; quickscanner ;; start EQU boot ; first instruction of warrior qStart EQU (start + 230) ; first scanned position qSpace EQU 7700 ; space to cover with quickscan qNum EQU 12 ; number of scans qStep EQU (qSpace/qNum) ; distance between two scans qHop EQU (qStep/2) for 60 dat.f 0, 0 rof qGo sne.i qStart+0*qStep+0*qHop, qStart+0*qStep+1*qHop seq.i qStart+0*qStep+2*qHop, qStart+0*qStep+3*qHop jmp attack, 0 sne.i qStart+2*qStep+0*qHop, qStart+2*qStep+1*qHop seq.i qStart+2*qStep+2*qHop, qStart+2*qStep+3*qHop jmp attack, { attack sne.i qStart+4*qStep+0*qHop, qStart+4*qStep+1*qHop seq.i qStart+4*qStep+2*qHop, qStart+4*qStep+3*qHop jmp attack, } attack sne.i qStart+6*qStep+0*qHop, qStart+6*qStep+1*qHop seq.i qStart+6*qStep+2*qHop, qStart+6*qStep+3*qHop jmp attack, > attack sne.i qStart+8*qStep+0*qHop, qStart+8*qStep+1*qHop seq.i qStart+8*qStep+2*qHop, qStart+8*qStep+3*qHop jmp attack, < attack sne.i qStart+10*qStep+0*qHop, qStart+10*qStep+1*qHop seq.i qStart+10*qStep+2*qHop, qStart+10*qStep+3*qHop djn.f attack, attack jmp boot ;; choose target qTimes EQU 20 ; number of bombs to throw bDist EQU 80 ; target range qStep2 EQU (bDist/qTimes + 1) dat.f 2*qStep, qStart+8*qStep-found qTab dat.f 0*qStep, qStart+0*qStep-found dat.f 4*qStep, qStart+6*qStep-found attack add.ab qTab, qTab found mov.b @ attack, # 0 ;; choose between the four possible positions find seq.i (start - 1), @ found jmp adjust add.ab # qHop, found djn find, # 4 adjust add.ab # (bDist/2), found ; start with bombing from above ... Apart from using the sne/seq-trick, we have to change qTab and to choose between four values now, but you already know that from part I. Using 12 scans now, YAP scores 124.94 (W 24.93%,T 50.16%, L 24.91%) against Wilkies. The old version with sne/seq-Trick with no early attack and 12 scans scored 125.54 (W 25.12%, T 50.19%, L 24.69%). 3. Even more scans ================== Now you might want to remind me, that in part I we already had a version, that scored 129.37 and our best version so far scores only 124.94. Here is a better version: ;; ;; quickscanner ;; start EQU boot ; first instruction of warrior qStart EQU (start + 230) ; first scanned position qSpace EQU 7700 ; space to cover with quickscan qNum EQU 18 ; number of scans qStep EQU (qSpace/qNum) ; distance between two scans qHop EQU (qStep/2) ; distance between two scan positions for 50 dat.f 0, 0 rof qGo sne.i qStart+0*qStep+0*qHop, qStart+0*qStep+1*qHop seq.i qStart+0*qStep+2*qHop, qStart+0*qStep+3*qHop jmp attack1, 0 sne.i qStart+2*qStep+0*qHop, qStart+2*qStep+1*qHop seq.i qStart+2*qStep+2*qHop, qStart+2*qStep+3*qHop jmp attack1, { attack1 sne.i qStart+4*qStep+0*qHop, qStart+4*qStep+1*qHop seq.i qStart+4*qStep+2*qHop, qStart+4*qStep+3*qHop jmp attack1, } attack1 sne.i qStart+6*qStep+0*qHop, qStart+6*qStep+1*qHop seq.i qStart+6*qStep+2*qHop, qStart+6*qStep+3*qHop jmp attack1, > attack1 sne.i qStart+8*qStep+0*qHop, qStart+8*qStep+1*qHop seq.i qStart+8*qStep+2*qHop, qStart+8*qStep+3*qHop jmp attack1, < attack1 sne.i qStart+10*qStep+0*qHop, qStart+10*qStep+1*qHop seq.i qStart+10*qStep+2*qHop, qStart+10*qStep+3*qHop djn.f attack1, attack1 ;; ;; ---> NEW PART <--- ;; sne.i qStart+12*qStep+0*qHop, qStart+12*qStep+1*qHop seq.i qStart+12*qStep+2*qHop, qStart+12*qStep+3*qHop jmp attack2, 0 sne.i qStart+14*qStep+0*qHop, qStart+14*qStep+1*qHop seq.i qStart+14*qStep+2*qHop, qStart+14*qStep+3*qHop jmp attack2, { attack1 sne.i qStart+16*qStep+0*qHop, qStart+16*qStep+1*qHop seq.i qStart+16*qStep+2*qHop, qStart+16*qStep+3*qHop jmp attack2, } attack1 jmp boot ;; choose target qTimes EQU 20 ; number of bombs to throw bDist EQU 80 ; target range qStep2 EQU (bDist/qTimes + 1) dat.f 2*qStep, qStart+8*qStep-found qTab dat.f 0*qStep, qStart+0*qStep-found dat.f 4*qStep, qStart+6*qStep-found attack2 add.ab # 12*qStep, found ; <--- NEW INSTRUCTION attack1 add.ab qTab, qTab found add.b @ attack1, # 0 ; <--- CHANGED INSTRUCTION ... The first 12 scans work as before. If something is found, they jump to attack1, where the correct position is calculated. The instruction at "found" no longer moves the position to be b-field, but adds the result to zero. Fortunately this has the same effect. I've added 6 scans, that execute only one additional instruction, when they lead to an attack. They jump to "attack2", which adjusts the b-field of "found". It contains now the value (12*qStep), which is the offset of the first new scan. Then the normal decoding is done, the value is added to (12*qStep) and we get the desired position. Using 16, 18 and 20 scans, we score as follows against Wilkies: 16 scans: 126.63 (W 25.43%, T 50.33%, L 24.24%) 18 scans: 129.01 (W 26.38%, T 49.87%, L 23.75%) 20 scans: 128.37 (W 26.29%, T 49.50%, L 24.21%) 4. Links ======== CoreWarrior # 37 - http://pauillac.inria.fr/~doligez/corewar/corewarrior/037.txt The Fugitive by David Moore (simple and quite clear q^2) - http://www.ociw.edu/~birk/COREWAR/94/HILL/fugitive.red 5. The next part ... ==================== ... will deal with better decoding routines for q^2-scanners and maybe with the basics of q^3-scanners. I've already decided to republish all parts once they are finished to correct errors and possibly incorporate more tips. Please send all comments and ideas to r.g.c. - Jens Gutzeit From: "Nenad Tomasev" Subject: anti_A_field_imp coreclear Date: 11 Jul 2005 05:29:30 -0700 Message-ID: <1121084970.010883.286630@g14g2000cwa.googlegroups.com> Hi. I've spoken to Christian yesterday and we were discussing, among other things, ways to attack those nasty imp-papers. I suggested at some point that spl - spl - mov.i #x, {1 - dat coreclear could take care of A field imps and might be a good way to start making new anti-imp coreclears (to use either in oneshots, or as an endgame strategy). Of course, most of todays top imppapers use Bfield imps, but there is plenty of time to make something against those evil Bfield 7point spirals. :) Here is the code of a coreclear, and here are some results (which are, btw, very good in my opinion (Rosebud was annihilated)) of that coreclear (without any other scan component or qscan added) fighting various Afield imp warriors (some papers and some stone/imps). I hope that there will be some comments this time. (usually nobody comments my posts) Here are the results: Summary ======= Challenger Length Score Given W% L% T% ---------- ------ ----- ----- ------ ------ ------ aictest 0,69094 148,9 115,6 37,8 26,7 35,4 Details ======= Opponent Length Score Given W% L% T% -------- ------ ----- ----- ------ ------ ------ airBag 0,38665 163,5 124,5 50,5 37,5 12,0 Fast Action IV 0,64806 139,5 129,0 36,0 32,5 31,5 Candy II 0,58799 137,0 138,5 37,5 38,0 24,5 Blowrag 0,73925 124,5 127,5 25,5 26,5 48,0 Return of the Pendragon 0,71189 114,0 148,5 25,5 37,0 37,5 Ironic Imps 0,71541 104,0 153,5 20,5 37,0 42,5 unheard-of 0,80383 94,5 157,5 15,5 36,5 48,0 Rosebud 0,77741 87,0 183,0 19,0 51,0 30,0 Gigolo 0,84794 76,5 178,5 10,5 44,5 45,0 And here is the code: ;redcode ;name aictest ;author Nenad Tomasev ;assert 1 org clr gate dat 0, 100 dat -100, 0 dat 0, 0 dat 0, 0 dat 0, 0 dat 14, <2667 mov.i #14, {1 clr spl #12, 1 mov clr, }gate mov clr, }gate djn.a -2, {dc dc dat -100, 0 end Regards, Nenad From: "Nenad Tomasev" Subject: Re: Quickscanners - Part II Date: 11 Jul 2005 05:36:03 -0700 Message-ID: <1121085363.037037.250270@z14g2000cwz.googlegroups.com> I think that this is a very informative and good tutorial so far and it will surely make it easier for beginners to grasp the concept of a qscan. It would not be a bad idea to post more tips and tutorials to rec.games.corewar . I know that most of the stuff was already included in previous Corewarrior issues, but that's no excuse. There are certainly enough people who will learn something new this way, and we could also try to organize thematic tournaments, where only the warriors of a certain type will fight among themselves + against a certain previously unknown benchmark. What do you think? Is anyone interested in something like that? From: "Nenad Tomasev" Subject: Re: anti_A_field_imp coreclear Date: 11 Jul 2005 07:00:33 -0700 Message-ID: <1121090433.259056.171170@g44g2000cwa.googlegroups.com> Please, note that the afield of the djn instruction in the above code is NEVER decremented, unlike the usual: dat <2668, 12 clr spl # -100, 12 mov clr, >gate mov clr, >gate djn.a -2, {clr where, after some time it becomes djn.a -4, {clr which is not that good (in my opinion)) From: KOTH Subject: KOTH.ORG: Status - MultiWarrior 94 07/11/05 Date: Mon, 11 Jul 2005 07:19:50 -0400 (EDT) Message-ID: <200507110403.j6B4303T098306@asgard.t-b-o-h.net> Weekly Status on 07/11/05 -=- 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 : Sat Jul 9 12:13:54 EDT 2005 # Name Author Score Age 1 FishingForPapers Nenad Tomasev 26 11 2 KryneLamiya Nenad Tomasev 25 14 3 Testing New Milk ;-) Jens Gutzeit 22 1 4 careless scanning Simon Wainwright 18 29 5 kingdom of the grasshoppe simon wainwright 15 60 6 glow worm John Metcalf 10 18 7 Hiperblast G.Labarga 8 70 8 Mk II Military Grade Milk Jens Gutzeit 6 2 9 Yatima v4.0.4 J.Gutzeit/C.Schmidt 6 5 10 Mk I Military Grade Milk Jens Gutzeit 3 13 11 Return of Test el kauka 2 3 From: KOTH Subject: KOTH.ORG: Status - ICWS Experimental 94 07/11/05 Date: Mon, 11 Jul 2005 07:19:49 -0400 (EDT) Message-ID: <200507110406.j6B460pO098421@asgard.t-b-o-h.net> Weekly Status on 07/11/05 -=- 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 : Sat Jul 2 17:46:47 EDT 2005 # %W/ %L/ %T Name Author Score Age 1 44/ 36/ 20 Fatamorgana X Zul Nadzri 152 5 2 42/ 37/ 21 The X Machine Zul Nadzri 147 29 3 31/ 21/ 48 xd100 test David Houston 141 15 4 40/ 40/ 20 Eliminator X Zul Nadzri 141 30 5 42/ 45/ 13 Fire and Ice II David Moore 140 118 6 24/ 9/ 67 Evol Cap 4 X John Wilkinson 138 287 7 25/ 12/ 63 Denial David Moore 137 159 8 38/ 40/ 22 Ogre Christian Schmidt 135 166 9 38/ 42/ 20 Black Moods Ian Oversby 134 214 10 30/ 26/ 43 KAT v5 Dave Hillis 134 150 11 31/ 29/ 40 Olivia X Ben Ford 133 99 12 38/ 44/ 18 Giant Hazy Test 13 Steve Gunnell 133 45 13 39/ 45/ 17 O_Fortuna3X Nenad Tomasev 132 1 14 35/ 38/ 27 Trefoil F 13 Steve Gunnell 131 101 15 36/ 40/ 24 Controlled Aggression Ian Oversby 131 218 16 34/ 39/ 27 Trefoil Test F 14 Steve Gunnell 130 2 17 29/ 29/ 42 Venom v0.2b Christian Schmidt 130 240 18 28/ 26/ 46 Glenstorm John Metcalf 130 80 19 18/ 7/ 75 Evolve X v4.0 John Wilkinson 128 235 20 35/ 42/ 23 Simply Intelligent Zul Nadzri 128 11 21 31/ 48/ 22 YggdrasilX Nenad Tomasev 114 0 From: KOTH Subject: KOTH.ORG: Status - Standard 07/11/05 Date: Mon, 11 Jul 2005 07:19:51 -0400 (EDT) Message-ID: <200507110400.j6B400gD098228@asgard.t-b-o-h.net> Weekly Status on 07/11/05 -=- 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 : Fri Jul 8 11:10:46 EDT 2005 # %W/ %L/ %T Name Author Score Age 1 35/ 29/ 36 The Next Step '88 David Houston 141 44 2 33/ 25/ 42 Test Alexander (Sasha) Wa 140 168 3 31/ 26/ 43 Freight Train David Moore 137 229 4 31/ 25/ 45 The Hurricaner G.Labarga 137 15 5 38/ 40/ 23 My 1st try Christian Schmidt 136 60 6 38/ 42/ 20 Scan the Can Christian Schmidt 135 9 7 36/ 38/ 26 Tangle Trap 3 David Moore 135 57 8 24/ 14/ 63 Utterer '88 Christian Schmidt 134 3 9 33/ 32/ 35 The Seed Roy van Rijn 134 46 10 29/ 26/ 44 Guardian Ian Oversby 132 228 11 29/ 25/ 46 test G.Labarga 132 11 12 39/ 47/ 13 Scan Test C 6 Steve Gunnell 131 67 13 37/ 42/ 21 July Nenad Tomasev 131 1 14 36/ 41/ 23 Moonwipe Christian Schmidt 131 25 15 37/ 43/ 20 trick shot John Metcalf 130 5 16 39/ 48/ 13 Speeed 88mph Christian Schmidt 129 28 17 34/ 38/ 29 PacMan David Moore 129 258 18 29/ 29/ 42 A.I.P. Christian Schmidt 129 36 19 20/ 12/ 68 IMParable G.Labarga 128 16 20 35/ 41/ 24 Stasis David Moore 128 336 21 25/ 26/ 49 testing nasty things Neo 123 0 From: KOTH Subject: KOTH.ORG: Status - 94 No Pspace 07/11/05 Date: Mon, 11 Jul 2005 07:19:48 -0400 (EDT) Message-ID: <200507110409.j6B490HR098495@asgard.t-b-o-h.net> Weekly Status on 07/11/05 -=- 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 : Sat Jul 9 09:18:24 EDT 2005 # %W/ %L/ %T Name Author Score Age 1 43/ 47/ 10 Arrow Christian Schmidt 139 457 2 33/ 27/ 40 Hullabaloo Roy van Rijn 138 254 3 26/ 16/ 57 Maelstrom Roy van Rijn 137 397 4 32/ 29/ 39 Borgir Christian Schmidt 136 289 5 38/ 40/ 22 KryneLamiya Nenad Tomasev 135 43 6 38/ 42/ 19 Sharky Christian Schmidt 134 63 7 32/ 30/ 38 107 kHz Sascha Zapf 134 47 8 26/ 19/ 54 Mk I Military Grade Milk Jens Gutzeit 133 7 9 31/ 29/ 40 The Humanizer bvowk/fiz 133 142 10 29/ 24/ 47 New-T Roy van Rijn 133 188 11 39/ 45/ 17 Beat this Sascha Zapf 132 102 12 25/ 18/ 57 S.D.N. Christian Schmidt 132 66 13 31/ 30/ 39 UnderConstruction Roy van Rijn 132 40 14 30/ 29/ 40 DifferentialOperatorWS Nenad Tomasev 131 83 15 41/ 51/ 8 Qutrum_v1.0 Peter Minus 131 4 16 29/ 28/ 43 false illusion John Metcalf 130 62 17 25/ 21/ 54 Black Knight Christian Schmidt 129 279 18 28/ 27/ 45 Kaiten Nenad Tomasev 128 19 19 27/ 28/ 45 PerfectTimev3.4 Nenad Tomasev 127 14 20 25/ 24/ 51 Mk II Military Grade Milk Jens Gutzeit 125 1 21 34/ 47/ 19 RF23WaitingStone Nenad Tomasev 121 2 From: Jens Gutzeit Subject: Quickscanners - Part III Date: Thu, 14 Jul 2005 17:07:59 +0200 Message-ID: Quickscanners - Part III ======================== I'm really sorry to say, that I lied. This part won't deal with new quickscanners, but with the questions "Where to scan?" and "Where and how to hit?". There might be logical errors in this text. Please assume, that most of the math is bogus. You have been warned! To decide, how good a quickscanner is, you should fight against a benchmark with all possible positions. Using the the usual settings there are 15602 possible (pmars -P). That would take a lot of time. That is why I'll use the Tiny Hill settings (coresize: 800, max. cycles: 8000, max. length: 20, max. process: 20). Later I'll show, that there are quite good other methods. 1. Where to scan? A practical approach ====================================== Let's take the following enemy: ;redcode-tiny ;name Sitting Duck ;assert CORESIZE == 800 ORG start start nop # 10, # 11 for 18 nop # 10, # 11 rof jmp start END Sitting Duck has a length of 20 instructions, doesn't change the core, i.e. places no decoys, bombs, ... and can be killed with one simple dat-bomb. Now the hero of this part: ;redcode-tiny ;name Killer ;assert CORESIZE == 800 ORG wait wait jmp 0 for 19 dat.f 0, 0 rof END A fight between these two warrior should alway tie. A "pmars -s 800 -c 8000 -l 20 -d 20 -S 20 -b -P Killer.red SittingDuck.red" results in 1522 ties. But why 1522? The size of the core is 800, 760 without our two warriors. That's why there are (760 + 1) different positions of your two warriors. Apart from that you have to decide, who starts and that make 761*2 = 1522. Now we start changing our hero: ... ORG start target EQU 20 start mov.i bomb, target wait jmp 0 bomb dat.f 0, 0 for 17 dat.f 0, 0 rof END Now it hits the first possible enemy position with a bomb. Now Killer wins 2 fights and 1520 ties, because if "Sitting Duck" is at position 20 it is killed regardless of who has executed the first instruction. Using "target EQU 21" results in 4 wins and 1518 ties. If "Sitting Duck" is at position 20 or 21 it gets killed. Using "target EQU 22" results in 6 wins, ..., using "target EQU 25" results in 12 wins, ..., using "target EQU 38" results in 38 wins, using "target EQU 39" results in 40 wins. From now on the value of wins will no longer increase :-( Using "target EQU 781" we have 38 wins and the number of wins starts to decrease. What did we learn? We get the best killing rate, if we throw our bomb somewhere between position 39 and 780. Since "Sittind Duck" dies on being hit by a bomb, we maximize the possibility of finding (!) our enemy with one scan, if the scans somewhere between position 39 and 780. 2. Where to scan? A theoretical approach ======================================== Now it is time to name some variables: s - coresize d - minimal distance between the first instructions of the warriors L - maximal length of a warrior v - number of non-"dat 0, 0"-instruction of the enemy warrior (v <= L) (from now on: number of visible instructions) Let's assume, that d = L (standard setting), the initial position of our warrior is randomly chosen from all possible positions, the visible instructions are equally distributed inside the enemy warrior. Note, that the last assumption is NOT true for normal warriors :-( All positions are our from now on relative from the first instruction of our warrior. Apart from that, let's assume, that the enemy uses the maximal possible length. Then there are (s-2*d+1) different positions of the enemy warrior. We have seen, that our chances of finding a warrior are suboptimal, if we scan the first (d-1) or the last (d-1) positions. For scan positions sPos with d <= sPos <= 2*(d-1) the probability of finding the enemy is (sPos - d + 1)/(s - 2 * d + 1) * v/L v/L is the possibility of finding a visible instruction, IFF (if and only if) the scan position is already inside (!) the enemy warrior. Let's call that value "visibility" from now on. (sPos - d + 1) is the number of scan positions, where we are inside the warrior. That is why the probability of beeing inside the warrior is (sPos - d + 1)/(s - 2 * d + 1). For scan positions sPos with -d + 1 <= sPos <= -1 the probability of finding the enemy is (|sPos|)/(s - 2 * d + 1) * v/L For all other scan positions, i.e. 2*(d-1) < sPos < -d + 1, the probability of finding the enemy is L/(s - 2 * d + 1) * v/L = v/(s - 2 * d + 1) Now we now, where to place the first scan position, but what happens, if the first scan misses? 3. Where to scan next? ====================== We know, that our enemy is L instructions long. Having found nothing, the best guess we can make, is, that we havn't scanned a position inside our opponent. If that is true, the enemy warrior is not inside a radius of L instructions from the scanned position. Let sPos1 be the first scanned position. Then the enemy must be somewhere between (sPos1 + L) and -1. Using the same arguments as in chapter 2, we should scan only the most probable positions, i.e. a position between (sPos1 + d) and (-d + 1). And now for the bad news. We cannot execute enough scans to cover the complete space between (s + 2 * d - 1) and (-d + 1), because there are practical limitations. We have already seen, that making our quickscanner big is a bad idea. For example there 7700 "high-value" position, when using the standard settings. Each scans covers a range of 100 instructions (best case). Then we would need 7700/100 = 77 scans, i.e. about 38 "double-scans" with seq or sne. But we have already seen, that 38 "double-scans" make our warrior to vulnerable to the opponent's scans :-( We can only space our scans among the "high-value" positions. 4. Better cores? ================ The possibility of finding a warrior at a "high-value" position in a normal core is (having a maximal-length opponent): 100/7801 * v/L = 0.0128 * v/L In a tiny core it is: 20/761 * v/L = 0.0263 * v/L In a nano core it is: 5/71 * v/L = 0.0704 * v/L In an experimental core it is: 200/55041 = 0.0036 * v/L It seems, that a quickscanner can find the opponent far more better in nano-cores than in normal cores. 6. Where to hit? ================ Upon a successful scan, all we know is that at the scanned position is a visible instruction. The probability, that this is a yet-to- be-executed enemy instruction is quite high. We should hit that instruction instantly! Apart from that, it is also very probable, that the enemy is inside a radius of L instructions, but hitting an instruction, that is about L instructions away, has a very low chance of killing the enemy. Hitting instructions near to the found instruction has the highest probability of killing the enemy. The further away we hit, the worse the chances of success become. 7. Bombing engines ================== Let's take the best quickscan so far and use it along with different bombing engines. Our warrior won't be our beloved YAP, but a simple "jmp 0". That way, we can be sure, that all kills are done by the quickscanner. Here is the basic version: ;redcode-94nop verbose ;name NYAP (Not YAP) ;assert CORESIZE == 8000 ORG qGo ;; ;; quickscanner ;; start EQU qGo ; first instruction of warrior qStart EQU (start + 200) ; first scanned position qSpace EQU 7700 ; space to cover with quickscan qNum EQU 18 ; number of scans qStep EQU (qSpace/qNum) ; distance between two scans qHop EQU (qStep/2) ; distance between two scan positions qGo sne.i qStart+0*qStep+0*qHop, qStart+0*qStep+1*qHop seq.i qStart+0*qStep+2*qHop, qStart+0*qStep+3*qHop jmp attack1, 0 sne.i qStart+2*qStep+0*qHop, qStart+2*qStep+1*qHop seq.i qStart+2*qStep+2*qHop, qStart+2*qStep+3*qHop jmp attack1, { attack1 sne.i qStart+4*qStep+0*qHop, qStart+4*qStep+1*qHop seq.i qStart+4*qStep+2*qHop, qStart+4*qStep+3*qHop jmp attack1, } attack1 sne.i qStart+6*qStep+0*qHop, qStart+6*qStep+1*qHop seq.i qStart+6*qStep+2*qHop, qStart+6*qStep+3*qHop jmp attack1, > attack1 sne.i qStart+8*qStep+0*qHop, qStart+8*qStep+1*qHop seq.i qStart+8*qStep+2*qHop, qStart+8*qStep+3*qHop jmp attack1, < attack1 sne.i qStart+10*qStep+0*qHop, qStart+10*qStep+1*qHop seq.i qStart+10*qStep+2*qHop, qStart+10*qStep+3*qHop djn.f attack1, attack1 sne.i qStart+12*qStep+0*qHop, qStart+12*qStep+1*qHop seq.i qStart+12*qStep+2*qHop, qStart+12*qStep+3*qHop jmp attack2, 0 sne.i qStart+14*qStep+0*qHop, qStart+14*qStep+1*qHop seq.i qStart+14*qStep+2*qHop, qStart+14*qStep+3*qHop jmp attack2, { attack1 sne.i qStart+16*qStep+0*qHop, qStart+16*qStep+1*qHop seq.i qStart+16*qStep+2*qHop, qStart+16*qStep+3*qHop jmp attack2, } attack1 jmp boot ;; choose target qTimes EQU 20 ; number of bombs to throw bDist EQU 80 ; target range qStep2 EQU (bDist/qTimes + 1) dat.f 2*qStep, qStart+8*qStep-found qTab dat.f 0*qStep, qStart+0*qStep-found dat.f 4*qStep, qStart+6*qStep-found attack2 add.ab # 12*qStep, found attack1 add.ab qTab, qTab found add.b @ attack1, # 0 ;; choose between the four possible positions find seq.i (start - 1), @ found jmp adjust add.ab # qHop, found djn find, # 4 adjust add.ab # (bDist/2), found ; start with bombing from above ;; bombing engine I throw mov.i qBomb, @ found sub.ab # qStep2, found djn throw, # qTimes jmp boot qBomb dat.f # 1, # 1 ;; ;; waiting to die ;-) ;; for 55 dat.f 0, 0 rof boot jmp 0 END How to benchmark it? The quickscan doesn't take long. Let's say, that 3000 cycles are enough, i.e. we use "pmars -c 3000 -b -P". (I've tested it with 500, 1000, 2000, 3000 and 4000 cycles. After about 3000 cycles the number of wins doesn't increase that much any more.) Against Wilkies (quite old warriors) we win in about 4.61052% of all cases, against WilFiz (still quite old warriors ;-) we win in about 3.02467% of all cases. Let's see how to improve these values. Increasing the target range from 80 to 100 instructions (bDist), while using the same number of bombs, results in lower scores against Wilkies (4.399% wins) and WilFiz (2.677% wins). Let's try this variation: ... adjust sub.ab # (bDist/2), found ; start with bombing from above ;; bombing engine II throw mov.i qBomb, @ found add.ab # qStep2, found djn throw, # qTimes jmp boot ... Now we bomb from below the scanned position. Using the old values (qTimes EQU 20, bDist EQU 80) we have 3.50% wins against Wilkies and 2.33% wins against WilFiz. Bad idea! We already know, that we should hit the instruction we have found and all instructions near it. Let's bomb forwards and backwards: ... ;; choose between the four possible positions find seq.i (start - 1), @ found jmp adjust add.ab # qHop, found djn find, # 4 ;; bombing engine III adjust mov.ba found, found throw mov.i qBomb, @ found mov.i qBomb, { found add.f qBomb, found djn.b throw, # 20 jmp boot qBomb dat.f # -3, # 4 ... With this engine, we have 4.56565% wins against Wilkies (quite as good as engine I) and 6.88606% wins against WilFiz :-) And another engine (Tornado?): ... attack2 add.ab # 12*qStep, found attack1 add.ab qTab, qTab add.b @ attack1, found ; <--- CHANGED! ;; choose between the four possible positions find seq.i (start - 1), @ found jmp adjust add.ab # qHop, found djn find, # 4 ;; bombing engine IV qTimes EQU 20 ; number of bombs to throw qStep2 EQU 4 adjust add.ba found, found throw mov.i qBomb, @ found mov.i qBomb, * found found mov.i -qStep2, @ found add.f incr, found djn.b throw, # 20 jmp boot qBomb dat.f # 0, # qStep2 incr dat.f # -qStep2, # 2*qStep2 ... Now we have 4.94274% wins against Wilkies and 7.14943% wins against WilFiz. Yay! 9. Yet Another Paper ==================== You can find YAP now at Koenigstuhl (94nop: 419th, open: 623th) and on the Beginner's hill at SAL (19th). Here is YAP together with the new bombing engine: ;redcode-94nop verbose ;name Yet Another Paper II ;author Jens Gutzeit ;strategy q^2 -> paper ;strategy Better quickscan and bombing engine ;assert CORESIZE == 8000 ORG qGo pStep1 EQU 3913 pStep2 EQU 3035 boot spl 1 spl 1 silk1 spl @ silk1, < pStep1 mov.i } silk1, > silk1 mov.i { silk1, < silk2 silk2 djn.f @ silk2, < pStep2 ;; ;; quickscanner ;; start EQU boot ; first instruction of warrior qStart EQU (start + 200) ; first scanned position qSpace EQU 7700 ; space to cover with quickscan qNum EQU 18 ; number of scans qStep EQU (qSpace/qNum) ; distance between two scans qHop EQU (qStep/2) ; distance between two scan positions for 47 dat.f 0, 0 rof qGo sne.i qStart+0*qStep+0*qHop, qStart+0*qStep+1*qHop seq.i qStart+0*qStep+2*qHop, qStart+0*qStep+3*qHop jmp attack1, 0 sne.i qStart+2*qStep+0*qHop, qStart+2*qStep+1*qHop seq.i qStart+2*qStep+2*qHop, qStart+2*qStep+3*qHop jmp attack1, { attack1 sne.i qStart+4*qStep+0*qHop, qStart+4*qStep+1*qHop seq.i qStart+4*qStep+2*qHop, qStart+4*qStep+3*qHop jmp attack1, } attack1 sne.i qStart+6*qStep+0*qHop, qStart+6*qStep+1*qHop seq.i qStart+6*qStep+2*qHop, qStart+6*qStep+3*qHop jmp attack1, > attack1 sne.i qStart+8*qStep+0*qHop, qStart+8*qStep+1*qHop seq.i qStart+8*qStep+2*qHop, qStart+8*qStep+3*qHop jmp attack1, < attack1 sne.i qStart+10*qStep+0*qHop, qStart+10*qStep+1*qHop seq.i qStart+10*qStep+2*qHop, qStart+10*qStep+3*qHop djn.f attack1, attack1 sne.i qStart+12*qStep+0*qHop, qStart+12*qStep+1*qHop seq.i qStart+12*qStep+2*qHop, qStart+12*qStep+3*qHop jmp attack2, 0 sne.i qStart+14*qStep+0*qHop, qStart+14*qStep+1*qHop seq.i qStart+14*qStep+2*qHop, qStart+14*qStep+3*qHop jmp attack2, { attack1 sne.i qStart+16*qStep+0*qHop, qStart+16*qStep+1*qHop seq.i qStart+16*qStep+2*qHop, qStart+16*qStep+3*qHop jmp attack2, } attack1 jmp boot ;; choose target dat.f 2*qStep, qStart+8*qStep-found qTab dat.f 0*qStep, qStart+0*qStep-found dat.f 4*qStep, qStart+6*qStep-found attack2 add.ab # 12*qStep, found attack1 add.ab qTab, qTab add.b @ attack1, found ;; choose between the four possible positions find seq.i (start - 1), @ found jmp adjust add.ab # qHop, found djn find, # 4 ;; bombing engine IV qTimes EQU 20 ; number of bombs to throw qStep2 EQU 4 adjust add.ba found, found throw mov.i qBomb, @ found mov.i qBomb, * found found mov.i -qStep2, @ found add.f incr, found djn.b throw, # 20 jmp boot qBomb dat.f # 0, # qStep2 incr dat.f # -qStep2, # 2*qStep2 END This version scores 129.52 (W 27.00%, T 48.53%, L 24.47%) against Wilkies and 118.53 (W 22.75%, T 50.28%, L 26.97%) against WilFiz. 8. Contest ========== Let's make a little contest. I want to see how far YAP can be optimized. All you have to do, is to take the basic YAP-engine: ORG boot pStep1 EQU 3913 pStep2 EQU 3035 boot spl 1 spl 1 silk1 spl @ silk1, < pStep1 mov.i } silk1, > silk1 mov.i { silk1, < silk2 silk2 djn.f @ silk2, < pStep2 END and append either a normal quickscanner (see part I) or a q^2-scanner (see part II) and a bombing engine for the quickscanner. The version, that scores best against the WilFiz-benchmark will be published in part III. Rules: - The score of the warrior will be calculated using "pmars -P" - You are only allowed to change the values of pStep1 and pStep2 of the paper. - The bombing engine may throw max. 100 bombs. After that the paper has to be booted, but no stones, scanners, ... (You know, what I'm aiming at.) - One entry per person only. - Only q^1- or q^2-scanners. - I'm the one, who decides. - Deadline: August, 1st 2005 - 00:00 GMT - Send all warriors to jens@jgutzeit.de (Subject: Quickscanners) Good luck! 9. Links ======== CoreWarrior 45 - Qscan bombing engines by M. R. Bremer - http://pauillac.inria.fr/~doligez/corewar/corewarrior/045.txt 10. Preview =========== The next part will deal with new q^2- and q^3-scans. - Jens Gutzeit From: fizmo_master@yahoo.com Subject: Strength of Beginner Hill Date: 15 Jul 2005 01:41:06 -0700 Message-ID: <1121416866.251486.245770@g49g2000cwa.googlegroups.com> Hi all, as all the beginner already recognized the Beginner Hill is going harder and harder to enter. The reason is that the hill is more and more occupied by strong warriors, which didn't perish on such a hill. I would like to initiate a discussion how to solve this dilemma. What are the experiences of the beginners regarding the Beginner Hill? It would be sad if beginners give up just because of a too high entrance barrier of the Beginner Hill. Here are some ideas I collected as a starting point for the discussion: 1. An age limit similar to the past Pizza Beginner Hill. Warriors reaching an age of 100 will be automatically perish. This would prevent for an accumulation of strong warriors but wouldn't keep the entrance barrier of the beginner hill very stable. 2. A sort out of too strong warriors under certain rules. However, this would be frustrating for players who wouldn't enter the Beginner Hill with their best warriors because those entries would be rejected but on the other hand they also don't make it on the pro hills because missing fractions of points for that. However, it would result in a more stable and low entrance barrier for the Beginner Hill. 3. A kind of 'hill wipe' to clean the complete or at least the upper part of the hill after a certain time or under certain rules. This would renew the beginner hill keeping the entrance barrier not very stable but pleasant low. The downside would be that entries could unjustified perish very 'young'. I am looking foward to see your comments and proposals. Greetings, Christian From: "elkauka" Subject: Re: Strength of Beginner Hill Date: 15 Jul 2005 04:19:59 -0700 Message-ID: <1121426399.543056.200570@g43g2000cwa.googlegroups.com> another solution would be running it against a benchmark. if the warrior scores more than 120pts against fsh than it shouldn't enter the hill. but that would slow down the server a lot.... el kauka From: fizmo_master@yahoo.com Subject: Re: History of Koth.org/Corewars Date: 15 Jul 2005 05:11:49 -0700 Message-ID: <1121429509.537454.36710@g43g2000cwa.googlegroups.com> Hi Jens, That's a nice calculation. The average score over time looks very interesting. I think another interesting calculation seems to me: number of warriors at an age of 100+ over time. If the number quickly drops possibly something happens, such as a new quickscanner or something other. I also would expect an average number over the complete time of approximately 8-10 and eveything below 4 seems noticable (not counting right the beginning of the hill). Christian From: "Chip" Subject: Re: Strength of Beginner Hill Date: 15 Jul 2005 07:10:36 -0700 Message-ID: <1121436636.111719.62680@o13g2000cwo.googlegroups.com> elkauka wrote: > another solution would be running it against a benchmark. if the > warrior scores more than 120pts against fsh than it shouldn't enter the > hill. but that would slow down the server a lot.... > > el kauka But again, this might discourage people from submitting their strongest warriors. The problem, I think, is not with the occasional strong warrior; it's with a bunch of strong warriors that hang around too long. I would prefer the age limit solution. But looking at the current beginner hill, there are only 4 warriors over age 100, so that might not be a short enough limit to make a significant difference. How about a max age of 50? That would get rid of 7 warriors, all in the top 11. That's enough to lower the entrance barrier substantially. Whether warriors are retired abruptly or phased out gradually, I don't think makes a difference. From: achillu@tin.it (LAchi) Subject: Redcoder's Frenzy 24: Core Shrinking Knockout Date: 15 Jul 2005 07:50:26 -0700 Message-ID: <1eeccf2e.0507150650.200300a5@posting.google.com> ................................................................... . . . . . | \ | | | | . . | | ) | | | | | . . | // \/ ` |/ / \ / ` |/ \ ' / | . . | | \ \ / ( | | ( | ( ) | ( | | / | \ \ . . | | \ \ |\ , |\ \ / \ , |\ | | | / . . . . . . | | . . | | . . | | ' / \ ' \| / | | | . . | | | | | / | | |/ /| | | | . . | | | | \ | | | / |\ , | . . / | . . | / . . . . . . | \ /| . . / / / | . . / / / | . . / | | . . . ................................................................... .............................. . . . Core Shrinking Knockout . . . .............................. It's time for the next round of the Redcoder's Frenzy! This is the 24th round of the ongoing corewar tournament. Detailed information is available on Fizmo's Corewar Info Page: http://www.corewar.info/tournament/cwt.htm The Core Shrinking Knockout Round homepage is: http://www.corewar.info/tournament/24.htm ................................................................... . . . | | . . | ' | || | / - | -< . . | | \ , | \ / / . . . ................................................................... Your duel-warriors use to fight in a 8,000 core against their opponents, that means 4,000 cells per warrior; this is why they feel uncomfortable when fighting in a multi-warrior arena! Time has come to give your warriors the space they need: let them fight in a core providing 4,000 cells per warrior! There is only one drawback: your warriors will not know how many challengers there are, and so they will not know which will be the actual core size; will they be smart enough to survive the challenge? Actually, this Redcoders Frenzy Round realizes the same rules of IRC#35 except in a "standard" core specification. This means that this will not be a single challenge round as usual; instead, each warrior will fight in a sequence of challenges, as long as it is eligible to pass to next challenge. Each challenge is a multi-warrior run where all the warriors compete at once; the core size will be 4,000 times the count of warriors in the current challenge, and the other parameters will be adjusted proportionally. Let W be the count of warriors in the current challenge, the arena will then use these settings: Core size = 4,000 x W Max cycles = 40,000 x W Max processes = 4,000 x W Max length = 100 (fixed) Min distance = 100 (fixed) P-space size = 250 x W Number of rounds = 5 x 200 (5 fights of 200 rounds each) Use of CORESIZE, MAXCYCLES, MAXPROCESSES, PSPACESIZE and any other mean to statically compute the core size is forbidden; the warrior code must dynamically adapt to the actual core size or be independent of the core size. This includes using values greater than 4000 or less than -3999 in your code if this will do; in few words, the compiled warrior must be the same in all the challenges, once that values greater than CORESIZE/2 have been converted to negative numbers. Note that this is the standard output when you run pmars. P-space and PIN are allowed, so you can make a wise use of persistent memory and of handshake. Challenge scoring: A warrior gets 1 point for each round it was the only survivor (same rule as standard multi-hill at KOTH). Tie breaking: if two or more warriors happen to score the same, they will be sorted according to how many times they was one survivor out of 2, and so on; if the tie persists, the results of the previous challenge(s) will be considered. Passing to next challenge: The warrior that scores least in the current challenge is knocked out, and all the other warriors will pass to next challenge; the arena of next challenge will then be adapted to the new number of warriors. This means that as the challenges proceed the core will shrink up to the standard size of 8,000 cells, until the last two survivor warriors will end up running a standard duel in a standard core. Frenzy percent: This is the hardest thing to decide! I came up with this solution: say p is the score of the first warrior in the current challenge, q is the score of the knocked out warrior in the current challenge, and S is the Frenzy percent of the knocked out warrior computed for the previous challenge. The knocked out warrior in the current challenge should get of course more than S Frenzy percent and less than 100 Frenzy percent; this can be achieved by adding S to (q / p) x (100 - S). By the way I think about introducing some parameter f and replacing q / p with (q + f) / (p + f) in order to not having too low Frenzy percents for the last warriors and too close Frenzy percents for the first warriors; this f parameter will be high in the first challenge and will decrease down to 1 / 3 of the ties in the last challenge. Hints: - The IRC#35 is of course a starting point, because it has the same rules as this RFT#24 except for the tiny core specification; you can even see which will be the pmars commands performed on the entries (well, just add some 0's around) so you can get a real grip on how this Frenzy Round works. - Remember that location #0 of P-space holds -1 in the first round; it holds 0 if the warrior died in the previous round; it holds 1 if the warrior was the only survivor of the previous round; in the other cases, it holds the count of the warriors that survived the previous round, which can be greater than 2. This will affect P^x switchers. - You can guess the actual size of the core in your first round of each fight and use the result in subsequent rounds by storing the value in your P-space; the handshaking friend can help computation or just use the result as far as both warriors are not knocked out. - You can ;assert (CORESIZE % 4000 == 0) && (CORESIZE >= 8000) if you want, and do whatever you like with the other redcode constants; as far as the warrior always compiles, and the compiled code always looks the same in all the possible CORESIZE contexts, your entry will not be rejected. ................................................................... . . . | | | | ( ) . . / ` / - ) ` / ` | | | ' \/ - ) . . \ , \ \ , \ , | | | || \ | . . . ................................................................... 23:59 (CEST) September 30, 2005 -------------------------------------------------------------- Please send your entries to LAchi (achillu[at]tin.it) Use RFT24 ENTRY as the subject line (even if they are 2 entries) -------------------------------------------------------------- Each participant can send up to 2 warriors as usual. Good luck, and may the core be with you! From: Christoph Birk Subject: Re: Strength of Beginner Hill Date: Fri, 15 Jul 2005 09:45:39 -0400 (EDT) Message-ID: I like that idea! Christoph On Fri, 15 Jul 2005, Jens Gutzeit wrote: > > 1. An age limit similar to the past Pizza Beginner Hill. Warriors > > reaching an age of 100 will be automatically perish. This would prevent > > for an accumulation of strong warriors but wouldn't keep the entrance > > barrier of the beginner hill very stable. > > I think, that this version would be quite good, but another possibility > might be better. Use an adjusted scoring. Something like > > score * exp(-age) (just an example) > > That way even strong warriors will die after they reach a certain age, > but they die without a sudden disappearance (like killing them with age > 100). > > - Jens Gutzeit > From: Jens Gutzeit Subject: History of Koth.org/Corewars Date: Fri, 15 Jul 2005 10:19:41 +0200 Message-ID: Hi, yesterday there was an interesting discussion on IRC about the history of corewars and singular events like the appearance of quickscanners, silk-style papers, "Son of Vain", ... The idea was mentioned , that theses events could be visible in graphic representations of the development of the hills at koth.org Unfortunately koth.org doesn't keep challenge-by-challenge results of the development of its hill. Fortunately there are a lot of logs at http://corewar.co.uk/logs.htm I have taken the logs for the 94nop-hill and have written a little Python-script (http://corewars.jgutzeit.de/temp/koth.txt), that (crudely) analyses a beautified version of the 94nop-logs (http://corewars.jgutzeit.de/temp/94nop.log.bz2). Now there are some graphics: average age over time: http://corewars.jgutzeit.de/temp/avgage.png average score over time: http://corewars.jgutzeit.de/temp/score.png max. score over time: http://corewars.jgutzeit.de/temp/maxscore.png (I still don't have a proper homepage at corewars.jgutzeit.de, i.e. use only these links. Everything else will fail.) The values at the x-axis indicate the normal unix timestamp (i.e. seconds sime Jan 1st, 1970). There are still a lot of challenge results missing. If anyone has more complete challenge-by-challenge logs of 94nop-hill, please let me know. If you'd like, I'll post a list of the missing time periods. - Jens Gutzeit From: Jens Gutzeit Subject: Re: Strength of Beginner Hill Date: Fri, 15 Jul 2005 11:10:04 +0200 Message-ID: Hi fizmo_master@yahoo.com wrote: > as all the beginner already recognized the Beginner Hill is going > harder and harder to enter. The reason is that the hill is more and yes, that was quite a frustrating experience some time ago. A lot of my challenges didn't made it by 1 or 2 points. > I would like to initiate a discussion how to solve this dilemma. What > are the experiences of the beginners regarding the Beginner Hill? It I almost gave up. > 1. An age limit similar to the past Pizza Beginner Hill. Warriors > reaching an age of 100 will be automatically perish. This would prevent > for an accumulation of strong warriors but wouldn't keep the entrance > barrier of the beginner hill very stable. I think, that this version would be quite good, but another possibility might be better. Use an adjusted scoring. Something like score * exp(-age) (just an example) That way even strong warriors will die after they reach a certain age, but they die without a sudden disappearance (like killing them with age 100). - Jens Gutzeit From: Jens Gutzeit Subject: Re: History of Koth.org/Corewars Date: Fri, 15 Jul 2005 14:22:23 +0200 Message-ID: Hi, http://corewars.jgutzeit.de/temp/num100.png has now the number of warriors with 100+ age over time. - Jens Gutzeit From: =?ISO-8859-2?Q?=A3ukasz_Adamowski?= Subject: Odp: Strength of Beginner Hill Date: Fri, 15 Jul 2005 16:52:13 -0400 (EDT) Message-ID: <42d8199ce4004@wp.pl> Dnia 15-07-2005 o godz. 10:52 fizmo_master@yahoo.com napisal: > [...] > I would like to initiate a discussion how to solve this dilemma. > [...] > I am looking foward to see your comments and proposals. I was wondering about very simple solution: age is subtracted from the score. This means warriors that live longer would score worse and let some new, inexperienced enter more easily. (Let's say they get tired ;) That's all right now. Greets! Lukasz Adamowski -= "War is a problem, never a solution" =- -= "Wojna jest problemem, a nie rozwiazaniem" =- ---------------------------------------------------- MONSTER IN LAW (J.Lopez, J.Fonda). �ycie mi�osne Charlotte (Lopez) to randki w ciemno. Wszystko zmienia si�, gdy spotyka idealnego m�czyzn� i jego matk� (Fonda). http://klik.wp.pl/?adr=http%3A%2F%2Ffilm.wp.pl%2Fp%2Ffilm.html%3Fid%3D25128&sid=435 From: Tuc at the Beach House Subject: Re: Odp: Strength of Beginner Hill Date: Fri, 15 Jul 2005 18:04:49 -0400 (EDT) Message-ID: <200507152202.j6FM23TB036669@vjofn.tucs-beachin-obx-house.com> > > I was wondering about very simple solution: age is subtracted from the score. This means warriors that live longer would score worse and let some new, inexperienced enter more easily. (Let's say they get tired ;) > That's all right now. Greets! > Lukasz Adamowski > Hi, Not sure if I'm speaking out of turn.... Given I really didn't pay 100% attention to the entire thread.... And that I haven't a CLUE about this game in the least... (Probably should change my profile in the Hall of Fame. At this point I think I'll never end up learning). If you expire the hill by age, won't the person pushed off just re-submit it and get right back to where they were? Is it possible that there needs to be an "Intermediate" hill, with a bit more restrictions? From: Sascha Zapf Subject: Re: Strength of Beginner Hill Date: Fri, 15 Jul 2005 18:08:55 -0400 (EDT) Message-ID: <200507152305.28418.nc-zapfsa@netcologne.de> Am Freitag, 15. Juli 2005 14:53 schrieb Chip: > elkauka wrote: > > another solution would be running it against a benchmark. if the > > warrior scores more than 120pts against fsh than it shouldn't enter the > > hill. but that would slow down the server a lot.... > > > > el kauka > > But again, this might discourage people from submitting their strongest > warriors. > > The problem, I think, is not with the occasional strong warrior; it's > with a bunch of strong warriors that hang around too long. I would > prefer the age limit solution. But looking at the current beginner > hill, there are only 4 warriors over age 100, so that might not be a > short enough limit to make a significant difference. How about a max > age of 50? That would get rid of 7 warriors, all in the top 11. That's > enough to lower the entrance barrier substantially. > > Whether warriors are retired abruptly or phased out gradually, I don't > think makes a difference. Hi, i vote for a max age of 50 too...Seems to be the fairest method.. Sascha -- Parlez vous Recode ? From: "sayembara" Subject: Re: Odp: Strength of Beginner Hill Date: 15 Jul 2005 21:14:46 -0700 Message-ID: <1121487286.234233.49610@o13g2000cwo.googlegroups.com> >From the thread, I can assume that we want only a temporary dominance of the strong warrior on beginner hill. The question now is how to make it disappear after that 'temporary' limit? If I am not wrong, below ar some of the suggestions. I would miss some though... a) Age limit (50?) b) Increase difficulty to win with age (add some factor in calculation?) c) Intermediate hill (this reminds me of divisions in soccer) d) Wipe-out the hill after certain limit or time a1) I think I prefer age limit too because it may be easier for the administrator. b1) It may be more interesting to look how old warriors fighting and slowly exit in Option B but then some extended discussion required on what factor should be used. Ideally, I would go for this option if there is no trouble with coding and also factors used. c1) Intermediate hill may overlap between beginner and pro. I think once you show dominance on beginner hill, you are now entering the pro circle :) d1) It is better to have the hill full so that a very new player can challenge the hill at once rather than waiting for other beginners submitting some warriors. Philip Kendall wrote: > In article <200507152202.j6FM23TB036669@vjofn.tucs-beachin-obx-house.com>, > Tuc at the Beach House wrote: > >> > > If you expire the hill by age, won't the person pushed off just > >re-submit it and get right back to where they were? > > It's certainly possible that they could. I don't recall this being a > problem in the "old days" though. > > Cheers, > > Phil > > -- > Philip Kendall > http://www.srcf.ucam.org/~pak21/ From: pak21@cam.ac.uk (Philip Kendall) Subject: Re: Odp: Strength of Beginner Hill Date: 15 Jul 2005 23:32:46 +0100 Message-ID: In article <200507152202.j6FM23TB036669@vjofn.tucs-beachin-obx-house.com>, Tuc at the Beach House wrote: >> > If you expire the hill by age, won't the person pushed off just >re-submit it and get right back to where they were? It's certainly possible that they could. I don't recall this being a problem in the "old days" though. Cheers, Phil -- Philip Kendall http://www.srcf.ucam.org/~pak21/ From: "Nenad Tomasev" Subject: Re: Odp: Strength of Beginner Hill Date: 16 Jul 2005 01:10:50 -0700 Message-ID: <1121501450.292223.284190@f14g2000cwb.googlegroups.com> Hi. In this case, I think that an age limit would be the best choice. If the hill remains as it is now, it could happen that some warriors remain there for a looong time. btw, I don't think that the 94b is too tough for beginners today. I think it's easier to enter it now than it was back in autumn when I started submiting warriors (I killed all of them later (except Svarog)) Look at Neo's stone test, for example. It is an ordinary stone! It loses to papers 90% or 80%, and it's currently 18th on the hill. So, even a usual stone can enter the hill now! Also, look at the score of 25th warrior. only 88 - it shouldn't be that hard to score higher than that. I'm not saying, of course, that it's very easy for beginners to enter 94b, but it should be a little challenging. :) Like I've mentioned, it wasn't easy for me either, when I was still playing at 94b, but that's why it felt so good when I've finally managed to conquer it and push off some troublesome warriors. The hill WAS too hard before I've killed my entries (they were not 94nop quality, but were very strong for beginner code) I don't think that there is a need for intermediate hill, and I agree that most players can, after successfull play at 94b, challenge 94 and 94nop (and other hills, of course). The same effect could be achieved if we decide to make hills at koth.org a little bigger (25 slots). That could provide the hills with a little more space for such players. Also, it would be great if the sourceforge hills could be reanimated. It would immediately solve the problem of 94b, in my opinion. I began playing at the sourceforge hills last year and I was very sad when they ceased working. It's also great, because you can see the code of all the warriors on the beginners hill there, so you can learn how to make good warriors by studying more successfull warriors on the hill (and try to defeat them). As for other ideas, I like the one about including age parameter into the score equation, but the influence to the score shouldn't be very big at first. Perhaps the growth of this subtraction factor shouldn't be linear. Only a small amount need be subtracted from the score of young warriors, and a significantly larger amount of points from very old warriors. Also, if we agree about killing those oldest entries at the 94b, we could be less cruel and make another hill, available only to those age>50 94b warriors. After his death at 94b, a warrior will automatically challenge this 94b+ . Of course, no email submissions to this hill would be allowed. What do you think about this? The same could be done for 94nop, as well (age>100). Regards, Nenad From: "elkauka" Subject: cw comics: episodes #2 & 3 Date: 16 Jul 2005 04:14:48 -0700 Message-ID: <1121512488.638054.114100@g49g2000cwa.googlegroups.com> episode #2: why redcoders are buddists meanwhile in the tao corewar temple, the great master redcoder is meditating... | | ||| | | *zZz* ||| |_| -- _____(___)________JL____________________ | | master! we must leave! the optimax ||| revolution has finally started! | | ||| ..' _ |_| oo )) ___ _____(___)________JL_______________> >____ you still have to learn a lot my small redcoder. there is no use to run and hide - we are going | | to be respawned in the core in the next round ||| | | ||| xx' |_| .. .||. ____(___)________JL__________||__________ .oO=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3DOo. episode #3: the coreworld is a circle what have you there? it's my new boomerang ~.. oo > .>>. .||=B0 __________||___________LL________________ well, throw it! _ < ~.. oo ,.-=B4 .>>. .||=B0 __________||___________LL________________ ~.. oo .>>. .||. __________||___________LL________________ isn't it supposed to come back? i guess it doesn't work... ~.. oo .>>. .||. __________||___________LL________________ *BOOM* modulo CORESIZE affects even =B0 . boomerangs ____ =B0 >xx oo _ .>>. .||. __________||___________LL________________ .oO=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3DOo. elkauka episodes #1-3 : http://www.familie-kersten.homepage.t-online.de/johannes/13.txt From: Christoph Birk Subject: Re: Odp: Strength of Beginner Hill Date: Sat, 16 Jul 2005 08:26:45 -0400 (EDT) Message-ID: I don't think that people will re-submit to the beginner's hill. Christoph On Fri, 15 Jul 2005, Tuc at the Beach House wrote: > If you expire the hill by age, won't the person pushed off just > re-submit it and get right back to where they were? Is it possible that > there needs to be an "Intermediate" hill, with a bit more restrictions? > From: "Neogryzor" Subject: Re: Strength of Beginner Hill Date: 16 Jul 2005 13:45:20 -0700 Message-ID: <1121546720.505370.242400@g43g2000cwa.googlegroups.com> Me too, i think the age limit is the best solution. But is the age 100 limit too high? I think it would not be good also if the hill is too easy to enter. It is not bad if you find a nice opponent to beat as a challenge, as i recall at sourceforge-beginners hill with Argon and others when i was a beginner... G.Labarga From: "Neogryzor" Subject: Re: Odp: Strength of Beginner Hill Date: 16 Jul 2005 14:29:08 -0700 Message-ID: <1121549348.200297.316740@o13g2000cwo.googlegroups.com> Hey, that was exactly what i thought when i was reading about an intermediate hill. Warriors would enter that hill when they reach a limit age. No direct submissions allowed. It would be great. We cannot do anything about resubmitting warriors, but thats not usual. Germ=E1n From: Sascha Zapf Subject: Re: cw comics: episodes #2 & 3 Date: Sat, 16 Jul 2005 22:22:26 +0000 Message-ID: elkauka wrote: > > episode #2: why redcoders are buddists > > > > > meanwhile in the tao corewar temple, the great master redcoder > is meditating... > > > | | > ||| > | | *zZz* > ||| > |_| -- > _____(___)________JL____________________ > > > > | | master! we must leave! the optimax > ||| revolution has finally started! > | | > ||| ..' _ > |_| oo )) ___ > _____(___)________JL_______________> >____ > > > > > you still have to learn a lot my small redcoder. > there is no use to run and hide - we are going > | | to be respawned in the core in the next round > ||| > | | > ||| xx' > |_| .. .||. > ____(___)________JL__________||__________ > > > > > .oO==========================================================Oo. > > > > episode #3: the coreworld is a circle > > > > > what have you there? > > it's my new boomerang > ~.. oo > > .>>. .||� > __________||___________LL________________ > > > > > > > well, throw it! > _ < > ~.. oo ,.-? > .>>. .||� > __________||___________LL________________ > > > > > > > ~.. oo > .>>. .||. > __________||___________LL________________ > > > > > > > isn't it supposed to come back? > i guess it doesn't work... > > ~.. oo > .>>. .||. > __________||___________LL________________ > > > > > > > *BOOM* modulo CORESIZE affects even > � . boomerangs > ____ � >xx oo > _ .>>. .||. > __________||___________LL________________ > > .oO==========================================================Oo. > > > elkauka > > episodes #1-3 : > http://www.familie-kersten.homepage.t-online.de/johannes/13.txt I love those comics...gimme more ;-) Sascha -- Parlez vous Redcode ? From: fizmo_master@yahoo.com Subject: 94nop hill warrior: Sinus Tree Date: 17 Jul 2005 05:44:02 -0700 Message-ID: <1121604242.135343.101900@f14g2000cwb.googlegroups.com> Hi all, here is paper a bit similar to Espiritu's well-known warrior 'Fixed'. The boot code snippet is taken from Zapf's 'paper(paper(paper(clear)))'. It scores surprisingly well, because it overwrite its copies with silk-imps. This can convert already wiped copies back into offensive silk-imps. Ok, here it is: ;redcode-94nop ;name Sinus Tree ;author Christian Schmidt ;strategy qscanner, paper ;assert 1 ;optimax pap pAw1 equ 662 pAw2 equ 1699 pStep1 equ 5658 pStep2 equ 1510 pStep3 equ 2687 pStep4 equ 1136 pStep5 equ 4460 pStep6 equ 4398 pStep7 equ 545 zero equ qbomb qtab3 equ qbomb qbomb dat >qoff, >qc2 dat 0, 0 pGo spl 1, pBo2 pBo2 jmp zero+pAw2, zero+pAw2 for 12 dat 0, 0 rof dat zero - 1, qa1 qtab1 dat zero - 1, qa2 for 15 dat 0, 0 rof cp spl @cp+8, -1 spl @0, }pStep2 mov.i }-1, >-1 spl @0, }pStep3 mov.i }-1, >-1 mov.i #pStep4, }pStep5 mov.i #pStep6, }pStep7 for 19 dat 0, 0 rof qc2 equ ((1 + (qtab3-qptr)*qy) % CORESIZE) qb1 equ ((1 + (qtab2-1-qptr)*qy) % CORESIZE) qb2 equ ((1 + (qtab2-qptr)*qy) % CORESIZE) qb3 equ ((1 + (qtab2+1-qptr)*qy) % CORESIZE) qa1 equ ((1 + (qtab1-1-qptr)*qy) % CORESIZE) qa2 equ ((1 + (qtab1-qptr)*qy) % CORESIZE) qz equ 2108 qy equ 243 qgo sne qptr + qz*qc2, qptr + qz*qc2 + qb2 seq qptr, qptr + qz + (qb2-1) jmp q2, Subject: Re: cw comics: episodes #2 & 3 Date: Sun, 17 Jul 2005 08:48:36 +0000 (UTC) Message-ID: "Sascha Zapf" wrote in message news:dbbq7c$33r$1@newsreader3.netcologne.de... > > I love those comics...gimme more ;-) > Here Here! Non of my friends understand them. From: Jens Gutzeit Subject: Re: cw comics: episodes #2 & 3 Date: Sun, 17 Jul 2005 10:57:54 +0200 Message-ID: I want more! MORE! - Jens Gutzeit From: Jens Gutzeit Subject: Re: Quickscanners - Part III Date: Sun, 17 Jul 2005 19:46:40 +0200 Message-ID: Hi, just in case you want to enter my little contest, here are the scores of the original YAP without quickscanner, YAP I (last version in part I; submitted to SAL and Koenigstuhl) and YAP II (last version in part III) against WilFiz (http://www.corewar.info/wilFiz.htm) using "pmars -P": original YAP: 109.992891 (W 16.831175%, T 59.599365%, L 23.669460%) YAP I : 108.863083 (W 18.908415%, T 52.137838%, L 28.953747%) YAP II : 118.592022 (W 22.746501%, T 50.352519%, L 26.900980%) This contest should be quite interesting for beginners, since the warrior is already there and you only have to adjust/rewrite/optimize the quickscanner and the constants. You can sent your warrior already now. If you sent more than one warrior, only the last one counts! That way you can submit a warrior and replace it later in case you find a better one. If you are reading this text with Google, which destroy all email addresses: send all warriors to jens@jgutzeit.de (jens [at] jgutzeit [dot] de) with subject "Quickscanners". Good luck! - Jens Gutzeit > 8. Contest > ========== > > Let's make a little contest. I want to see how far YAP can be optimized. > All you have to do, is to take the basic YAP-engine: > > ORG boot > > pStep1 EQU 3913 > pStep2 EQU 3035 > > boot spl 1 > spl 1 > > silk1 spl @ silk1, < pStep1 > mov.i } silk1, > silk1 > > mov.i { silk1, < silk2 > silk2 djn.f @ silk2, < pStep2 > > END > > and append either a normal quickscanner (see part I) or a q^2-scanner > (see part II) and a bombing engine for the quickscanner. The version, > that scores best against the WilFiz-benchmark will be published in part > III. > > Rules: > > - The score of the warrior will be calculated using "pmars -P" > - You are only allowed to change the values of pStep1 and pStep2 of > the paper. > - The bombing engine may throw max. 100 bombs. After that the paper > has to be booted, but no stones, scanners, ... (You know, what > I'm aiming at.) > - One entry per person only. > - Only q^1- or q^2-scanners. > - I'm the one, who decides. > - Deadline: August, 1st 2005 - 00:00 GMT > - Send all warriors to jens@jgutzeit.de (Subject: Quickscanners) > > Good luck! From: pak21@cam.ac.uk (Philip Kendall) Subject: Re: Strength of Beginner Hill Date: 17 Jul 2005 20:35:13 +0100 Message-ID: In article <1121546720.505370.242400@g43g2000cwa.googlegroups.com>, Neogryzor wrote: >Me too, i think the age limit is the best solution. >But is the age 100 limit too high? IMO, 100 was a reasonable limit in the "old days" when unsuccessful challeneges aged the hill. If this isn't the case for the current hill[1], it should be lower. Cheers, Phil [1] Yeah, I haven't been playing for a while :-) -- Philip Kendall http://www.srcf.ucam.org/~pak21/ From: KOTH Subject: KOTH.ORG: Status - MultiWarrior 94 07/18/05 Date: Mon, 18 Jul 2005 00:13:37 -0400 (EDT) Message-ID: <200507180403.j6I430CI043082@asgard.t-b-o-h.net> Weekly Status on 07/18/05 -=- 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 : Sat Jul 9 12:13:54 EDT 2005 # Name Author Score Age 1 FishingForPapers Nenad Tomasev 26 11 2 KryneLamiya Nenad Tomasev 25 14 3 Testing New Milk ;-) Jens Gutzeit 22 1 4 careless scanning Simon Wainwright 18 29 5 kingdom of the grasshoppe simon wainwright 15 60 6 glow worm John Metcalf 10 18 7 Hiperblast G.Labarga 8 70 8 Mk II Military Grade Milk Jens Gutzeit 6 2 9 Yatima v4.0.4 J.Gutzeit/C.Schmidt 6 5 10 Mk I Military Grade Milk Jens Gutzeit 3 13 11 Return of Test el kauka 2 3 From: KOTH Subject: KOTH.ORG: Status - Standard 07/18/05 Date: Mon, 18 Jul 2005 00:13:38 -0400 (EDT) Message-ID: <200507180400.j6I400rN043002@asgard.t-b-o-h.net> Weekly Status on 07/18/05 -=- 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 : Fri Jul 8 11:10:46 EDT 2005 # %W/ %L/ %T Name Author Score Age 1 35/ 29/ 36 The Next Step '88 David Houston 141 44 2 33/ 25/ 42 Test Alexander (Sasha) Wa 140 168 3 31/ 26/ 43 Freight Train David Moore 137 229 4 31/ 25/ 45 The Hurricaner G.Labarga 137 15 5 38/ 40/ 23 My 1st try Christian Schmidt 136 60 6 38/ 42/ 20 Scan the Can Christian Schmidt 135 9 7 36/ 38/ 26 Tangle Trap 3 David Moore 135 57 8 24/ 14/ 63 Utterer '88 Christian Schmidt 134 3 9 33/ 32/ 35 The Seed Roy van Rijn 134 46 10 29/ 26/ 44 Guardian Ian Oversby 132 228 11 29/ 25/ 46 test G.Labarga 132 11 12 39/ 47/ 13 Scan Test C 6 Steve Gunnell 131 67 13 37/ 42/ 21 July Nenad Tomasev 131 1 14 36/ 41/ 23 Moonwipe Christian Schmidt 131 25 15 37/ 43/ 20 trick shot John Metcalf 130 5 16 39/ 48/ 13 Speeed 88mph Christian Schmidt 129 28 17 34/ 38/ 29 PacMan David Moore 129 258 18 29/ 29/ 42 A.I.P. Christian Schmidt 129 36 19 20/ 12/ 68 IMParable G.Labarga 128 16 20 35/ 41/ 24 Stasis David Moore 128 336 21 25/ 26/ 49 testing nasty things Neo 123 0 From: KOTH Subject: KOTH.ORG: Status - 94 No Pspace 07/18/05 Date: Mon, 18 Jul 2005 00:17:45 -0400 (EDT) Message-ID: <200507180409.j6I490SZ043240@asgard.t-b-o-h.net> Weekly Status on 07/18/05 -=- 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 Jul 17 08:35:05 EDT 2005 # %W/ %L/ %T Name Author Score Age 1 40/ 41/ 19 Shot to Nothing Christian Schmidt 139 1 2 40/ 41/ 19 Sharky Christian Schmidt 138 67 3 38/ 38/ 24 KryneLamiya Nenad Tomasev 138 47 4 42/ 47/ 10 Arrow Christian Schmidt 137 461 5 43/ 50/ 8 Qutrum_v1.0 Peter Minus 136 8 6 32/ 28/ 40 Hullabaloo Roy van Rijn 135 258 7 31/ 29/ 39 Borgir Christian Schmidt 133 293 8 24/ 16/ 59 Maelstrom Roy van Rijn 132 401 9 38/ 45/ 17 Beat this Sascha Zapf 132 106 10 28/ 25/ 48 New-T Roy van Rijn 131 192 11 30/ 31/ 39 107 kHz Sascha Zapf 130 51 12 24/ 18/ 58 S.D.N. Christian Schmidt 130 70 13 30/ 30/ 40 The Humanizer bvowk/fiz 129 146 14 29/ 28/ 43 false illusion John Metcalf 129 66 15 29/ 30/ 41 DifferentialOperatorWS Nenad Tomasev 129 87 16 30/ 31/ 39 UnderConstruction Roy van Rijn 128 44 17 24/ 21/ 55 Black Knight Christian Schmidt 128 283 18 24/ 21/ 55 Mk I Military Grade Milk Jens Gutzeit 127 11 19 23/ 18/ 59 Blowrag 2005 Metcalf/Schmidt 127 3 20 25/ 24/ 51 ScannerFood Roy van Rijn 126 2 21 26/ 28/ 45 PerfectTimev3.4 Nenad Tomasev 124 18 From: KOTH Subject: KOTH.ORG: Status - ICWS Experimental 94 07/18/05 Date: Mon, 18 Jul 2005 00:17:44 -0400 (EDT) Message-ID: <200507180406.j6I460SW043157@asgard.t-b-o-h.net> Weekly Status on 07/18/05 -=- 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 : Sat Jul 2 17:46:47 EDT 2005 # %W/ %L/ %T Name Author Score Age 1 44/ 36/ 20 Fatamorgana X Zul Nadzri 152 5 2 42/ 37/ 21 The X Machine Zul Nadzri 147 29 3 31/ 21/ 48 xd100 test David Houston 141 15 4 40/ 40/ 20 Eliminator X Zul Nadzri 141 30 5 42/ 45/ 13 Fire and Ice II David Moore 140 118 6 24/ 9/ 67 Evol Cap 4 X John Wilkinson 138 287 7 25/ 12/ 63 Denial David Moore 137 159 8 38/ 40/ 22 Ogre Christian Schmidt 135 166 9 38/ 42/ 20 Black Moods Ian Oversby 134 214 10 30/ 26/ 43 KAT v5 Dave Hillis 134 150 11 31/ 29/ 40 Olivia X Ben Ford 133 99 12 38/ 44/ 18 Giant Hazy Test 13 Steve Gunnell 133 45 13 39/ 45/ 17 O_Fortuna3X Nenad Tomasev 132 1 14 35/ 38/ 27 Trefoil F 13 Steve Gunnell 131 101 15 36/ 40/ 24 Controlled Aggression Ian Oversby 131 218 16 34/ 39/ 27 Trefoil Test F 14 Steve Gunnell 130 2 17 29/ 29/ 42 Venom v0.2b Christian Schmidt 130 240 18 28/ 26/ 46 Glenstorm John Metcalf 130 80 19 18/ 7/ 75 Evolve X v4.0 John Wilkinson 128 235 20 35/ 42/ 23 Simply Intelligent Zul Nadzri 128 11 21 31/ 48/ 22 YggdrasilX Nenad Tomasev 114 0 Message-ID: From: anton@paradise.net.nz (Anton Marsden) Subject: Core War Frequently Asked Questions (rec.games.corewar FAQ) Date: 19 Jul 2005 04:31:52 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: "elkauka" Subject: cw comics: episode #4 the oracle o' corewar Date: 20 Jul 2005 05:18:52 -0700 Message-ID: <1121861932.186827.191490@g44g2000cwa.googlegroups.com> hi redcoders, the new web address of the cw comics is: http://www.familie-kersten.homepage.t-online.de/johannes/cwcomics.txt you are going to find all episodes including the latest there... episode #4: the oracle o' corewar oh, great oracle o' corewar: why is redcode so difficult? i didn't even get mov.i $0, $1... ~.. oo' .>>. _o__ .)) _______________||_|____|_____<<_________________ =B4=B4 it may help to think of it as imp mov imp, imp+1 ?!? ~.. oo' .>>. _o__ .)) _______________||_|____|_____<<_________________ =B4=B4 oh, great oracle o' corewar: why can't redcode be more like java? it would be much easier than.. ~.. oo' .>>. _o__ .)) _______________||_|____|_____<<_________________ =B4=B4 do you really want "class myWarrior extends Son_of_Vain"? ~.. oo' .>>. _o__ .)) _______________||_|____|_____<<_________________ =B4=B4 well, great oracle o' corewar: shouldn't i ask the questions? ~.. oo' .>>. _o__ .)) _______________||_|____|_____<<_________________ =B4=B4 sure. but than, how.... ~.. oo' .>>. _o__ .)) _______________||_|____|_____<<_________________ =B4=B4 your maxcycles of 3 questions are over by now. for we don't have any coins in coreworld you have to leave now. ~.. xx' .>>. _o__ .)) _______________||_|____|_____<<_________________ =B4=B4 From: "Nenad Tomasev" Subject: The Corewar Cookbook: How to make your warrior as complicated as possible? Date: 20 Jul 2005 08:49:11 -0700 Message-ID: <1121874551.634070.310690@g49g2000cwa.googlegroups.com> Hi. As most of you probably know, I really like making oneshots and I've made several good ones so far (some of them still doing well at 94nop). Well, as a beginner, I started making warriors before I've seen a piece of code of any other warrior (exept for those in tutorials), so my code looked a bit funny at first. Just for the fun, I'll show you know my first oneshot (which is really terrible)... So, have fun. :) I just wanted to show how can a simple concept as oneshot be turned into a hideous monster... The funniest of all - it defeated StoneyTheSecond (which was koth at SAL 94b at the time) ;redcode ;name NSos1 ;author Nenad Tomasev ;assert CORESIZE==8000 ;strategy oneshot ;*****constants***** step1 equ 2793 step2 equ 1175 step3 equ 17 step4 equ 2296 count equ 500 org scan beg add jos1, scan add jos2, scan1 scan sne.i -153, beg-1+1255 scan1 seq.i 183, beg-2+848 slt.ab #(jos2-beg+10), -1 decr djn.b beg, #count jmp attack, 0 sample dat 0, 0 for 25 dat 0, 0 rof attack jmz.b finish, decr seq.i *scan, @scan jmp dva, 0 mov.b scan1, pok sne.i sample, @scan1 mov.ab scan1, pok jmp finish dva seq.i sample, *scan jmp tri, 0 slt.ab #(jos2-beg+10), scan jmp beg, 0 mov.b scan, pok jmp finish, 0 tri slt.a #(jos2-beg+10), scan jmp beg, 0 mov.ab scan, pok jmp finish, 0 for 30 dat 0, 0 rof finish spl #-1, #-20 mov *pok, Subject: Re: cw comics: episode #4 the oracle o' corewar Date: Wed, 20 Jul 2005 14:24:42 +0200 Message-ID: :-) - Jens Gutzeit From: =?ISO-8859-2?Q?=A3ukasz_Adamowski?= Subject: Odp: cw comics Date: Wed, 20 Jul 2005 16:03:12 -0400 (EDT) Message-ID: <42deab6cef971@wp.pl> Hi! Here is something I've made in a moment of furious envy ;] "The LawnMOVer Man" (a boring one ;) ~"``'"^'`~"^`"~^'`"~"'`^'""'`'~"~`^"~'"`~^~`~'``"^ trrr... ~oo (\\ __/\^o=o '`~"^`"~^'`"~"'`^'""'`'~"~`^"~'"`~^~`~'``"^ trrr... ~oo (\\ ___________X^o=o ^'`"~"'`^'""'`'~"~`^"~'"`~^~`~'``"^ trrr... ~oo (\\ ___________________/\^o=o '""'`'~"~`^"~'"`~^~`~'``"^ trrr... ~oo (\\ ____________________________X^o=o ~`^"~'"`~^~`~'``"^ trrr... ~oo (\\ ____________________________________/\^o=o ^~`~'``"^ Core-clear. oo~ <||\ ____________________________________________||^o=o Lukasz Adamowski -= "War is a problem, never a solution" =- -= "Wojna jest problemem, a nie rozwiazaniem" =- ---------------------------------------------------- Jak zarabia� w 10 minut 9 z�? http://klik.wp.pl/?adr=www.telefon.wp.pl%2Foszczednosci.html&sid=434 From: roy.van.rijn@gmail.com Subject: Re: Odp: cw comics Date: 21 Jul 2005 03:06:51 -0700 Message-ID: <1121940411.352819.174970@g43g2000cwa.googlegroups.com> Hehe very nice, I love those!! Let me try it.. (blegh I suck at this!) oo /||\ _____/\_____________________________ /||\ oo/ /\ *ow my god, whats that!?* /|| _____|\_____________________________ ??? /||\ /||\ \oo/ oo /\ /\ || /||\ _____|\_____/\______________________ oo oo oo oo /||\ /||\ /||\ /||\ _____|\_____/\____|\___________/\___ ?? \oo/ oo oo ??? oo ?? || /||\ /||\ /||\ _____|\_____/\____|\___________/\____ AAAAARRGGHHH!!!! \ 00 000 x> \xx/ xx 0000 /||\ || /||\ 00000000____/\____/|___________/\________ EEEEK!! / 00 xx 000 -||\ 00000000000000000000000________/\________ ... SSD-clear ... 00000000000000000000000000000000000000000 From: "Neogryzor" Subject: Re: Odp: cw comics Date: 21 Jul 2005 03:12:42 -0700 Message-ID: <1121940762.106479.82740@g43g2000cwa.googlegroups.com> Lukasz Adamowski ha escrito: > Hi! > Here is something I've made in a moment of furious envy ;] Heh, let me propose a second part. ;) CW comics are an inspiration for us. "The LawnMOVer Man II" ~"``'"^'`~"^`"~^'`"~"'`^'""'`'=AD~"~`^"~'"`~^~`~'``"^ trrr... ~oo (\\ __/\^o=3Do '`~"^`"~^'`"~"'`^'""'`'~"~`^"~=AD'"`~^~`~'``"^ trrr... ~oo (\\ ___________X^o=3Do ^'`"~"'`^'""'`'~"~`^"~'"`~^~`~=AD'``"^ rr... trrr... ~oo (\\ O=3DO=B4_______________/\^o=3Do '""'`'~"~`^"~'"`~^~`~'``"^ trrr... trrr... __ =3D,, ~oo _ (\\ (\\ _____/\^=ADO=3DO'=B4______________X^=ADo=3Do ~`^"~'"`~^~`~'``"^ ! trrr... Roaarr.. __ =3D>< O `oo~ _ (\\// =B4|\\ __________________________>X^O_______/\^o=3Do ^~`~'``"^ -Argh, someone should have advised me about the multiwarrior hill! `=B4 ++ \ ______________________________________=F8x~))__^o=3Do__=20 Neogryzor From: "Neogryzor" Subject: Nano version of Zooom Date: 21 Jul 2005 03:54:36 -0700 Message-ID: <1121943276.660059.157060@g44g2000cwa.googlegroups.com> I saw in the logs that Metcalf, (author of Zooom), didn't believe a nano version of Zooom could be possible. Here it is this curious thingie. ;redcode-nano ;name Nanooom ;author neo ;assert 1 ;strategy nano version of Zooom loop2: mov -1,0 end scan From: "Neogryzor" Subject: Re: Odp: cw comics Date: 21 Jul 2005 03:56:50 -0700 Message-ID: <1121943410.512625.215940@o13g2000cwo.googlegroups.com> Mmmh, Google became crazy with some characters, pity. From: "Nenad Tomasev" Subject: Re: Nano version of Zooom Date: 21 Jul 2005 04:35:57 -0700 Message-ID: <1121945757.938477.296770@g44g2000cwa.googlegroups.com> VERY nice. you've done a really good job here. :) How does it do on the hill? From: "Neogryzor" Subject: Re: Nano version of Zooom Date: 21 Jul 2005 05:10:26 -0700 Message-ID: <1121947826.345100.35380@f14g2000cwb.googlegroups.com> Thanks. It does not score so good to stay on the nano hill, but nice anyway. Test it against some tiny and '94nop scanners, funny. From: achillu@tin.it (LAchi) Subject: The Geometry of Diversity Date: 21 Jul 2005 06:53:58 -0700 Message-ID: <1eeccf2e.0507210553.54b0ddd6@posting.google.com> Hello fellow redcoders and corewar fans. Just after I wrote my article about "A Numeric Approach to Diversity Hills" (http://www.geocities.com/monyachy/diversity.html), one of you sent me an interesting e-mail about the geometry of the warriors space. Unfortunately I missed that e-mail; I hope that who wrote that e-mail is reading and will contact me again so I will put his name in the acknowledgements of my next article. The basics of his e-mail are very simple: the space of all possible warriors lies on the surface of a really-huge-dimensional hypersphere, but just think of it as the surface of a standard sphere and lets call this surface "the Earth". Each parallel represents warriors with the same strength, the South Pole is "the warrior that always loses", and the North Pole is "the warrior that always wins". Each meridian represents a strategy, and the Equator is the "pure strategy line": for instance, Quito in Ecuador (South America) is the "pure stone", Nairobi in Kenya (Africa) is the "pure paper", and Nauru (Pacific Ocean) is the "pure scissor" (well, actually I do not know if these places are on the Equator or if they are vertices of a regular triangle, but I hope you catch the idea). You see that if we start from the South Pole and go towards the Equator, the different strategies start to exploit their differences, and in fact their distances grow; this is something I expect. By the way, you see that if we start from the Equator going north, meaning that we have better warriors, the distances start to shrink. This is something I did not expect at first, but finally I had to agree that you cannot say which is the strategy of the "North Pole" ("the warrior that always wins")! It can be the "perfect stone" as well as the "perfect paper" as well as the "perfect scissor": as long as it always wins, you cannot distinguish its strategy just looking at its results against the other warriors. Fortunately the warriors space lies on what is geometrically called a hyperconic; maybe almost all of you know that on the 2-dimensional plan the (hyper)conics are named circle, ellipse, parabola, and hyperbola so you can understand what I mean. The Earth is simply a 3-dimensional circle; using some "easy math", you can transform a circle in a parabola, and in a same way you can trasform a sphere in a 3-dimensional parabola as well: just fix the South Pole on the table with a screw, pinch the North Pole with your fingers, and stretch... stretch... stretch the North Pole to infinity. The shape you get is a surface called paraboloid, i.e. the shape you get by rotating a parabola along its axis. Once the Earth has been infinitely stretched to get the paraboloid, you can see that the distances of the warriors keep on increasing even if we approach the "perfect warrior", the former "North Pole" which now lies to infinity; this may be the goal I want to achieve. I will get further into this to see where this consideration goes. NOTES: 1. I say that the warriors space "lies" on a hyperconic because there are only a finite number of warriors, a huge number but finite. Moreover: the "North Pole" and the "South Pole" do not represent warriors. As for the "South Pole", just think of a suicide "dat 0,0": it still gets points when fighting against itself, and any other possible warrior would score at least 50% wins against it, so a score of total losses is impossible. As for the "North Pole", think of this warrior: mov 1, 4000 dat 0,0 this warrior will always score at least 1 win against any possible warrior, so a score of total wins is impossible. 2. The most difficult thing I have to deal with is that I only have the results of a hill, and not the whole warriors space. A hill is just a big-dimensional projection of the very-huge-dimensional hypersphere defined by the warriors space; the hill projection is still a hypersphere, but I do not know where this projection has been cut off. Using the Earth as an example again, just think of Europe before 1492: in the Europeans' point of view the World was as big as Europe until then, and the strategies on the "World hill" were named "Spanish", "Italian", "Turkish" and so on; when the first "American warrior" was introduced in the "World hill" it was clear that the World was much bigger, and all those strategies were just variants of the "European" strategy. My goal is that this perturbation should be exploited on the "Diversity hill" even if the "American warrior" is from "Tierra del Fuego" in the deep south of South America, but should not be exploited if an "Antarctis warrior" would appear. LAchi. From: "Nenad Tomasev" Subject: Re: Two-shot's Date: 21 Jul 2005 07:39:22 -0700 Message-ID: <1121956761.972803.281690@z14g2000cwz.googlegroups.com> isn't goonie also a two shot scanner? I personally like the idea of twoshots - because it should make a warrior more resistant to decoys. However, that's not such a big improvement. When fighting a warrior with large decoys (something that boots away from the original code and leaves behind a qscan), it doesn't make that much difference. + if you don't use spl 0, 0 and sne.f in your warrior, and use large steps, there is the chance that you might trigger the second clear phase with your first clear phase, which is bad. Also, sometimes it's good to hit a false target (a bomb, for example) (although this sounds a bit strange) - because you'll exit your main loop and won't die if it gets hit by a bomb (or spl carpet)! So, although there are some improvements in twoshots, I think that there are also some downfalls (slightly larger code is cerainly one of them) - so you're free to choose what you like better. I like oneshots and bishots better. ... One more thing. It's impossible to successfully use (I think) 0,8c scan engine in a twoshot like G2 (it should be possible in goonie), because you'll clear too slow the first time and find a new target before you do any serious damage to the first one. (the same as with blur-style scanners) ... Besides, when using 0,8c engine, you need to exit the main loop ASAP - the first time when you find something... twoshots at 0,8c will certainly be more vulnerable to scanners... but that's just my opinion. :) Of course, you can also make trishots, fourshots, fiveshots, whatever you like. I've made this some time ago (kills Arrow :) ) - it entered 94nop briefly: ;redcode-94nop ;name SoulEater ;author Nenad Tomasev ;assert CORESIZE==8000 ;multishot scanner step equ 21 span equ 10 ini equ 213 dc equ gate-4036 org decoy gate dat 0, 0 pok dat ini, ini+span b dat 1, 8 more spl #step, step mov.i *b, >gate mov.i *b, >gate djn.f (more+1), }more for 5 dat 0, 0 rof top nop }swap, {loop shoot mov.i more, >gate incr add.x more, @scan scan jmn.f att, *pok loop jmz.f incr, @pok mov.x @loop, @loop att slt.ab #20, pok jmp *incr, 0 mov.ab pok, gate swap jmn.b top, loop for 70 dat 0, 0 rof decoy nop >dc, }dc+1 mov Hi, > > i'm looking for succesfull two-shot scanners. But i can find only g2, as one > of the best. What does the community think about two-shot's. The idea two > attack a first target, while looking for a second sounds good for me. Where > is the problem? Bigger or more complicated source? Same weakness against > decoy's like one shot's? > > Sascha > > -- > Parlez vous Redcode ? From: Jens Gutzeit Subject: The Quickscanner Hill Date: Thu, 21 Jul 2005 14:02:38 +0200 Message-ID: Hi, as you might have noticed I'm working on some texts about quickscanners at the moment. While preparing the next part I've had a little idea. Why not make a infinite hill for quickscanners? Now there is one at: http://corewars.jgutzeit.de/quickscanner_hill/index.en.html All you have to do is to use the following paper and append a good quickscanner and send it to the hill. You warrior will fight a more or less randomly selected set of warrior using "pmars -P". The exact rules can be found at http://corewars.jgutzeit.de/quickscanner_hill/rules.en.html ATTENTION! The source of your warrior will be published on the page the moment it enters the hill. If you want to keep your quickscanner- knowledge a secret, don't submit your warriors. Since my computer is quite slow, especially when running "pmars -P", it might take a some time before you get the results, i.e. 2 or 3 days. Good luck! - Jens Gutzeit ;redcode-94 ;name A Quickscanner's Paper ;author Jens Gutzeit ;strategy paper ;assert CORESIZE == 8000 ORG boot pStep1 EQU 2341 pStep2 EQU 2421 pStep3 EQU 3241 pAway1 EQU 2000 pAway2 EQU 6000 pEnd EQU (silk3 + 1) boot spl 1 mov.i -1, 0 spl 1 mov.i < pBoot1, { pBoot1 pBoot1 spl pAway1, pEnd mov.i < pBoot2, { pBoot2 pBoot2 jmp pAway2, pEnd silk1 spl @ silk1, < pStep1 mov.i } silk1, > silk1 silk2 spl @ silk2, < pStep2 mov.i } silk2, > silk2 mov.i { silk2, < silk3 silk3 djn.f @ silk3, < pStep3 END From: Sascha Zapf Subject: Two-shot's Date: Thu, 21 Jul 2005 14:49:57 +0000 Message-ID: Hi, i'm looking for succesfull two-shot scanners. But i can find only g2, as one of the best. What does the community think about two-shot's. The idea two attack a first target, while looking for a second sounds good for me. Where is the problem? Bigger or more complicated source? Same weakness against decoy's like one shot's? Sascha -- Parlez vous Redcode ? From: Sascha Zapf Subject: Re: Two-shot's Date: Thu, 21 Jul 2005 21:51:09 +0000 Message-ID: Nenad Tomasev wrote: > It uses zoom trick, and goes to ssd phase after one-pass scan through > the core. It's more of a blur-scanner than a twoshot, but it's probably > something in between. > What do you think? Its something in between..Goonie is a fourshot... O.K, when find something you must exit the main loop. but you can reenter it atonce you have saved the first target...But in the moment the "How to do the best twoshot" isn't so important for me..i wan't to find out why they are so rare in our history ? Sascha -- Parlez vous Redcode ? From: will Subject: Re: The Geometry of Diversity Date: Fri, 22 Jul 2005 05:57:05 -0400 (EDT) Message-ID: <20050722084533.87560.qmail@web25506.mail.ukl.yahoo.com> Fantastic LAchi! A while back similiar lines of enquiry of my own took me towards a new way to define the warrior space. Rather than a globe, imagine a cube where the coords of a warrior are the score against the architypical pure stone, pure paper and pure scissors respectively. Using a close approximation (the excellent optimax categorised benchmarks) I got these results: http://redcoder.sourceforge.net/?p=stats_fsh94nop It seems the sweetspot that warriors are trying to reach is a 50% score against each. Is this the 'north pole', or the centre of the earth? --- LAchi wrote: > the space > of all possible > warriors lies on the surface of a > really-huge-dimensional hypersphere, > but just think of it as the surface of a standard > sphere and lets call > this surface "the Earth". ___________________________________________________________ How much free photo storage do you get? Store your holiday snaps for FREE with Yahoo! Photos http://uk.photos.yahoo.com From: =?ISO-8859-2?Q?=A3ukasz_Adamowski?= Subject: Re: Odp: cw comics Date: Fri, 22 Jul 2005 06:41:25 -0400 (EDT) Message-ID: <42e0cb2b4894a@wp.pl> Dnia 21-07-2005 o godz. 12:54 Neogryzor napisal: > Lukasz Adamowski ha escrito: > > Hi! > > Here is something I've made in a moment of furious envy ;] > > Heh, let me propose a second part. ;) > CW comics are an inspiration for us. > > "The LawnMOVer Man II" > [...] Great!!! :] Even beter than my. It's denying the theory saying every sequel is worse than original movie/comic. ;] Unfortunately my post-agent (by WWW) eats some "white" characters and the font is not "fixed", so I can hardly understand all this pictures. Even copying it to KWrite or Notepad doesn't work properly. Maybe we should send our comics as *.txt attachment files? Greetings Lukasz -= "War is a problem, never a solution" =- -= "Wojna jest problemem, a nie rozwiazaniem" =- ---------------------------------------------------- Czy samoch�d mo�e mie� dusz�? "Garbi super bryka" - odjazdowa komedia na lato! Zapraszamy do kin od 22 lipca. http://klik.wp.pl/?adr=www.film.wp.pl%2Ffilm.html%3Fid%3D25169&sid=441 From: achillu@tin.it (LAchi) Subject: Re: The Geometry of Diversity Date: 23 Jul 2005 06:26:15 -0700 Message-ID: <1eeccf2e.0507230526.49456cd4@posting.google.com> Interesting work, Will. Well, actually the center of the Earth is not part of the surface, so that is not part of the warriors space. I think that the warriors try to reach the "North Pole", or maybe the "Arctic Polar Circle". Analyzing your results, I see that there are two main groups. The first group are warriors that try to specialize one of the "pure" strategies; for instance, a better stone (whose prototype I put in Quito) tries to reach the Klondyke in Canada; the warrior in "Klondyke" will score more against "Nairobi" and "Nauru" and a bit fewer agains "Quito" because the "Klondyke" is farer from Africa and the Pacific than from South America. The results like "482 337 453", "450 436 385", "577 552 397", "536 519 450", and so on (all taken from #0 clr) are in the first group. The other group are warriors that try to place halfway between two "pure" strategies; for instance, a paper with stone will try to reach Iceland whose meridian is half way between "Quito" and "Nairobi"; this kind of warrior will get an impressive score against "Nauru", the drawback is that will score less against "Quito" and "Nairobi". The results like "403 509 392", "551 487 446", "471 556 479", "381 395 522", "412 363 535" (taken from various categories) are in the second group. I think that your analysis can improve the classification of the warriors in the optimax benchmark; for instance, the fifth warrior in the #0 clr category (scores "403 509 392") seems not to be in the correct category, because it is obviously in the second group of warriors. I hope that this answers your question. LAchi. will wrote in message news:<20050722084533.87560.qmail@web25506.mail.ukl.yahoo.com>... > Rather than a globe, imagine a cube where the coords > of a warrior are the score against the architypical > pure stone, pure paper and pure scissors respectively. > > Using a close approximation (the excellent optimax > categorised benchmarks) I got these results: > > http://redcoder.sourceforge.net/?p=stats_fsh94nop > > It seems the sweetspot that warriors are trying to > reach is a 50% score against each. Is this the 'north > pole', or the centre of the earth? > From: fizmo_master@yahoo.com Subject: Re: The Geometry of Diversity Date: 24 Jul 2005 09:16:00 -0700 Message-ID: <1122221760.645413.161810@g43g2000cwa.googlegroups.com> > > I think that your analysis can improve the classification of the > warriors in the optimax benchmark; for instance, the fifth warrior in > the #0 clr category (scores "403 509 392") seems not to be in the > correct category, because it is obviously in the second group of > warriors. > Yeah, you mean Digitalis 2003, which is a clear/imp. This warrior makes me lot of headache as I was working on the very first 94nop fsh. I finally decided to put it into the clr-strategy rather then into the sbi-strategy. - Christian From: "Jens Gutzeit" Subject: Re: Quickscanners - Part III Date: 24 Jul 2005 09:52:24 -0700 Message-ID: <1122223944.297697.236710@g49g2000cwa.googlegroups.com> Hi, today I noticed, that my WilFiz-benchmark accidentally doesn't include the warrior "Willow" :-( That means, that all WilFiz-benchmarks so far in part I, II and II are wrong. They nonetheless show the correct behaviour of quickscanners, when you change the number of scanned locations. Regards, Jens Gutzeit From: "Will 'Varfar'" Subject: Re: The Geometry of Diversity Date: 25 Jul 2005 01:42:32 -0700 Message-ID: <1122280952.428391.326280@g43g2000cwa.googlegroups.com> Something I was hinting at was the conundrum of plotting on a 2D surface such as the face of a sphere the coordinates of a warrior that does equally well (or badly) against more than two warrior groups, and especially it's position relative to a warrior that has the same relative qualities but different scores. A sphere as you describe it has only two places where a warrior can be equal between more than two architypes, and these imply scores against the other architypes (depending if scoring distance can pass through the sphere or travels across the surface). Infact, any position on the sphere surface records your position relative to all architypes, and I just don't think that real warriors exhibit the strict symetry of scoring required to place all your architypes on a single dimension on the equator. I am more inclined at present to think of the score-space of corewars as n-dimensional, depending upon your value of n (being the qualities you measure, e.g. architypes you are benchmarking against). From: KOTH Subject: KOTH.ORG: Status - MultiWarrior 94 07/25/05 Date: Mon, 25 Jul 2005 07:27:48 -0400 (EDT) Message-ID: <200507250403.j6P431Pw034940@asgard.t-b-o-h.net> Weekly Status on 07/25/05 -=- 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 Jul 24 23:06:57 EDT 2005 # Name Author Score Age 1 FishingForPapers Nenad Tomasev 31 11 2 KryneLamiya Nenad Tomasev 25 14 3 kingdom of the grasshoppe simon wainwright 17 60 4 careless scanning Simon Wainwright 16 29 5 Testing New Milk ;-) Jens Gutzeit 13 1 6 Mk I Military Grade Milk Jens Gutzeit 12 13 7 Hiperblast G.Labarga 11 70 8 Mk II Military Grade Milk Jens Gutzeit 6 2 9 Yatima v4.0.4 J.Gutzeit/C.Schmidt 5 5 10 glow worm John Metcalf 4 18 11 Fastkill 1.0 Blake Escritt 3 0 From: KOTH Subject: KOTH.ORG: Status - ICWS Experimental 94 07/25/05 Date: Mon, 25 Jul 2005 07:27:47 -0400 (EDT) Message-ID: <200507250406.j6P4610n035010@asgard.t-b-o-h.net> Weekly Status on 07/25/05 -=- 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 : Sat Jul 2 17:46:47 EDT 2005 # %W/ %L/ %T Name Author Score Age 1 44/ 36/ 20 Fatamorgana X Zul Nadzri 152 5 2 42/ 37/ 21 The X Machine Zul Nadzri 147 29 3 31/ 21/ 48 xd100 test David Houston 141 15 4 40/ 40/ 20 Eliminator X Zul Nadzri 141 30 5 42/ 45/ 13 Fire and Ice II David Moore 140 118 6 24/ 9/ 67 Evol Cap 4 X John Wilkinson 138 287 7 25/ 12/ 63 Denial David Moore 137 159 8 38/ 40/ 22 Ogre Christian Schmidt 135 166 9 38/ 42/ 20 Black Moods Ian Oversby 134 214 10 30/ 26/ 43 KAT v5 Dave Hillis 134 150 11 31/ 29/ 40 Olivia X Ben Ford 133 99 12 38/ 44/ 18 Giant Hazy Test 13 Steve Gunnell 133 45 13 39/ 45/ 17 O_Fortuna3X Nenad Tomasev 132 1 14 35/ 38/ 27 Trefoil F 13 Steve Gunnell 131 101 15 36/ 40/ 24 Controlled Aggression Ian Oversby 131 218 16 34/ 39/ 27 Trefoil Test F 14 Steve Gunnell 130 2 17 29/ 29/ 42 Venom v0.2b Christian Schmidt 130 240 18 28/ 26/ 46 Glenstorm John Metcalf 130 80 19 18/ 7/ 75 Evolve X v4.0 John Wilkinson 128 235 20 35/ 42/ 23 Simply Intelligent Zul Nadzri 128 11 21 31/ 48/ 22 YggdrasilX Nenad Tomasev 114 0 From: KOTH Subject: KOTH.ORG: Status - Standard 07/25/05 Date: Mon, 25 Jul 2005 07:27:49 -0400 (EDT) Message-ID: <200507250400.j6P401HJ034723@asgard.t-b-o-h.net> Weekly Status on 07/25/05 -=- 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 : Tue Jul 19 04:14:09 EDT 2005 # %W/ %L/ %T Name Author Score Age 1 38/ 28/ 34 The Next Step '88 David Houston 149 44 2 36/ 25/ 40 Test Alexander (Sasha) Wa 147 168 3 35/ 25/ 40 Freight Train David Moore 144 229 4 41/ 39/ 20 Scan the Can Christian Schmidt 143 9 5 33/ 24/ 42 The Hurricaner G.Labarga 142 15 6 39/ 36/ 25 Tangle Trap 3 David Moore 142 57 7 40/ 38/ 22 My 1st try Christian Schmidt 141 60 8 36/ 31/ 33 The Seed Roy van Rijn 141 46 9 32/ 25/ 42 test G.Labarga 140 11 10 33/ 26/ 42 Guardian Ian Oversby 140 228 11 26/ 13/ 60 Utterer '88 Christian Schmidt 139 3 12 39/ 39/ 22 Moonwipe Christian Schmidt 139 25 13 42/ 45/ 13 Scan Test C 6 Steve Gunnell 139 67 14 40/ 41/ 20 July Nenad Tomasev 138 1 15 40/ 42/ 18 trick shot John Metcalf 138 5 16 41/ 46/ 13 Speeed 88mph Christian Schmidt 136 28 17 36/ 36/ 27 PacMan David Moore 136 258 18 32/ 28/ 40 A.I.P. Christian Schmidt 136 36 19 37/ 40/ 23 Stasis David Moore 134 336 20 21/ 11/ 67 IMParable G.Labarga 132 16 21 3/ 83/ 14 Bunnies Eric Weitzel 23 0 From: KOTH Subject: KOTH.ORG: Status - 94 No Pspace 07/25/05 Date: Mon, 25 Jul 2005 07:27:47 -0400 (EDT) Message-ID: <200507250409.j6P491jY035067@asgard.t-b-o-h.net> Weekly Status on 07/25/05 -=- 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 : Sat Jul 23 16:58:59 EDT 2005 # %W/ %L/ %T Name Author Score Age 1 38/ 31/ 31 Hullabaloo Roy van Rijn 146 270 2 43/ 42/ 15 Beat this Sascha Zapf 144 118 3 45/ 47/ 8 Arrow Christian Schmidt 144 473 4 37/ 31/ 32 107 kHz Sascha Zapf 143 63 5 32/ 23/ 44 The thing that shouldn't Christian Schmidt 141 4 6 35/ 29/ 36 false illusion John Metcalf 140 78 7 42/ 44/ 14 Shot to Nothing Christian Schmidt 140 13 8 36/ 33/ 30 Borgir Christian Schmidt 139 305 9 28/ 17/ 56 Maelstrom Roy van Rijn 139 413 10 40/ 43/ 17 KryneLamiya Nenad Tomasev 138 59 11 43/ 50/ 7 Qutrum_v1.0 Peter Minus 137 20 12 39/ 43/ 18 Sharky Christian Schmidt 136 79 13 34/ 32/ 35 The Humanizer bvowk/fiz 135 158 14 31/ 28/ 40 New-T Roy van Rijn 134 204 15 29/ 23/ 48 Transparent Dreams Jens Gutzeit 134 3 16 34/ 34/ 33 DifferentialOperatorWS Nenad Tomasev 134 99 17 29/ 24/ 47 Black Knight Christian Schmidt 133 295 18 38/ 46/ 16 Xenocitrum_v0.4 inversed 131 1 19 39/ 47/ 14 Pretty in Pink Christian Schmidt 131 6 20 38/ 48/ 14 think twice v.2 (optiMAXe el kauka 129 2 21 38/ 47/ 15 Jotunheim2 Nenad Tomasev 128 10 From: =?ISO-8859-2?Q?=A3ukasz_Adamowski?= Subject: Re: The Geometry of Diversity Date: Mon, 25 Jul 2005 18:53:12 -0400 (EDT) Message-ID: <42e54bb0cde3f@wp.pl> Dnia 25-07-2005 o godz. 10:52 Will 'Varfar' napisal: > I am more inclined at present to think of the score-space of corewars > as n-dimensional, depending upon your value of n (being the qualities > you measure, e.g. architypes you are benchmarking against). When considering score in duels, one warrior against only one warrior, we have 2-dimensional space, I think. The coordinates (nevermind spherical or Cartesian) may be number of wins and number of losses. Number of ties in this example doesn't matter as dimension, because sum of all this three numbers equals number of total rounds played which is constant, so it is not independent. This means results can be placed on a plane or a surface of sphere, just like LAchi proposed. More dimensions appear only in multiwarrior battles. I thought this is the way Will represented his optimax results, but I am suprised that sums of numbers in rows are not equal. Why? Is it something wrong with this or I just don't get it? I use benchmarks rarely and I've never tried optimax, so excuse me if my question is stupid. ;] Lukasz -= "War is a problem, never a solution" =- -= "Wojna jest problemem, a nie rozwiazaniem" =- ---------------------------------------------------- BATMAN - POCZ�TEK (29 LIPCA). Wyst: Christiane Bale, Michael Caine, Liam Neeson, Katie Holmes, Gary Oldman, Ken Watanbe, Rutger Hauer i Morgan Freeman. http://klik.wp.pl/?adr=www.film.wp.pl%2Ffilm.html%3Fid%3D24647&sid=446 From: =?ISO-8859-2?Q?=A3ukasz_Adamowski?= Subject: Re: The Geometry of Diversity once more Date: Mon, 25 Jul 2005 18:53:11 -0400 (EDT) Message-ID: <42e54e2ff2267@wp.pl> I took another glance at these results and now I think I get it. But why to consider only a final score and miss number of win/loss/tie? We're letting go a lot of information! I know that final score is something everybody is trying to maximize, but it can be done by increasing wins or decreasing losses. And, last but not least, we are talking about standard scoring formula (3 for win, 1 for tie, 0 for loss), aren't we? This is less universal than considering numbers of win/loss/tie, I think. Lukasz -= "War is a problem, never a solution" =- -= "Wojna jest problemem, a nie rozwiazaniem" =- ---------------------------------------------------- Lubisz Batmana? Wiesz, jak naprawd� si� nazywa? Kto mu pomaga? I NAJWA�NIEJSZE - CHCESZ NA W�ASNE OCZY ZOBACZY� CHICAGO? Unikalny konkurs "Batman-pocz�tek"! Wejd� na: http://klik.wp.pl/?adr=www.batman-poczatek.wp.pl&sid=442 From: achillu@tin.it (LAchi) Subject: Re: The Geometry of Diversity Date: 26 Jul 2005 03:02:37 -0700 Message-ID: <1eeccf2e.0507260202.50be3427@posting.google.com> As I told in my premise: "The space of all possible warriors lies on the surface of a really-huge-dimensional hypersphere, but just think of it as the surface of a standard sphere and lets call this surface "the Earth"." So whenever we speak of "the Earth" we are just projecting the warriors space in something we can easily see, but actually the warriors space still is a n-dimensional surface in a 3n/2-dimensional euclidean space (see NOTE 1). Using scores instead of wins-ties-losses may help analysis: it is a linear function (3w+1t+0l) applied to the surface, so most properties should still hold (see NOTE 2). When we use a benchmark, we are still projecting the warriors space; actually we perform an orthogonal projection because we simply exclude most warriors from the computations. NOTE 1: I was wrong when I wrote "the surface of a really-huge-dimensional hypersphere"; actually the constraints in the warriors space do not draw something like this. Each warrior is identified by N "triplets": [(w1,t1,l1),(w2,t2,l2),(w3,t3,l3),...] where N is the count of warriors and each i-triplet is the wins-ties-losses against warrior i; the constraints are (w1+t1+l1=1 and w2+t2+l2=1 and w3+t3+l3=1 and... and w1>=0 and t1>=0 and...) and these do not define the surface of a hypersphere in a 3N-dimensional space which should be (3N-1)-dimensional, but another 2N-dimensional linear surface in a 3N-dimensional space. Geometrically speaking, this kind of surface has "sharp angles", something like more similar to a (hyper)cube than a (hyper)sphere; anyway, by defining the correct "norm" in the 3N-dimensional space you can still treat this "(hyper)cube" as it were a smooth surface like a "(hyper)sphere". NOTE 2: Using the score function, each point of the 3N-dimensional space projects in a point of the N-dimensional space: (s1, s2, s3...) where si is the score against warrior i; the constraints of the scores space are si>=0 and si<=3 which is a solid linear shape in the N-dimensional space, actually it is a thick hypercube. Any point in this hypercube projects back into a section of the warriors space; this section has two sets constraints: wi+ti+li=1 and 3wi+ti=si which cuts off something I am still trying to figure out. From: "elkauka" Subject: Re: Two-shot's Date: 26 Jul 2005 07:01:02 -0700 Message-ID: <1122384294.568565.5230@z14g2000cwz.googlegroups.com> > ...i wan't to find out why they > are so rare in our history ? it seems they have no advantage concerning oneshots. they are bigger and slower (nenad already explained why). that's it (maybe?) besides here is one of my latest towshots which is still on 94nop (as i wrote this). the quite weired code is result of using optimax. i used to give quite big parts of warriors into its hands... ;redcode-94 ;name think twice v.2 (optiMAXed) ;author el kauka ;strategy decoy - twoshot ;assert 1 step equ 816 start equ 5080 hop equ 7 stream equ 1773 gap1 equ 19 gap2 equ 25 ldec equ 5 ;length of decoymaker sDEC equ 5751 ;if a decoymaker exists - start there for (ldec > 0) org s rof for (ldec == 0) org loop rof clr jmp bomb1, #0 mov.i inc, >clr loop add.f inc, ptr seq.i }ptr, >ptr ptr sne.i start, start+hop back djn.f loop, clr mov.i *clr, >clr last djn.f clear, <(ptr-412) for gap2 dat 0, 0 rof s i for ldec mov.i {sDEC+(i*2), 0) jmp loop+1, {sDEC+(t*2)+3 rof end elkauka From: achillu@tin.it Subject: Re: The Geometry of Diversity Date: 26 Jul 2005 08:42:11 -0700 Message-ID: <1122392531.469423.263800@o13g2000cwo.googlegroups.com> I read again what I wrote and I realize that I was something like blind. The surface I defined is a well known surface for those of us familiar with linear programming: that is a simplex. The aim of corewars is to maximize the score function Sum(3wi+ti) in the (discrete) warriors space that lies on the (continuous) simplex defined by the constraints. Unfortunately, the optimum on the simplex is the "all wins" point aka the "North Pole" which is not a warrior. There are some procedures in linear programming that allow to add constraints that cut off some pieces of the simplex in order to still have all the warriors on the new surface AND to have one (or more) warrior(s) on a vertex of the simplex; that or those warrior(s) will be "the strongest of all". I do not know if this implies that those warriors will still be the strongest of all in any linear projections (aka "hills"). From: "Will 'Varfar'" Subject: Re: The Geometry of Diversity once more Date: 26 Jul 2005 11:50:37 -0700 Message-ID: <1122403837.354979.133260@f14g2000cwb.googlegroups.com> I'm afraid I am a bit behind on all the mathematics in these diversity threads, but I am learning lots from it! When people talk about 'plotting on a surface' I think of a surface as strictly 2D. I understood the 'earth' description. I was confused about the number of dimensions. If you collapse the w/l/t into a single number, then you have as many dimensions as warriors (-1 if no self-fights). So a 2D graph gives you two combattants. Trying to plot n dimensional results into 2D is kind of tricky. SOMs and stuff are a whole other thing. > But why to consider only a final score and miss number of win/loss/tie? Well I agree that more dimensions is better. But if win-loss-tie is separate, this gives us 3*warriors*warriors dimensions. I have previously done stats that consider n warriors, such as http://redcoder.sourceforge.net/opexfreq/94-nop-100.html and have been playing with clustering algorithms on it. But it seems challenging to plot that visually, and people like graphs. Now the maximum number of dimensions I could find a good way to plot was 3. So I picked my dimensions as paper, scissor and stone. I couldn't find the architypical paper nor scissor nor stone, so I used optimax categories as benchmarks instead. This seemed a good approximation. I can't remember if I further normalised my scores or not or whatever. Sorry. So basically my graph was all about making something pretty that humans can understand. Not so scientific after all! But I am confused about managing to plot a warrior when you know the distance to more than two architypes (dimensions) on a strictly 2D surface. So a fundemental question: are surfaces 2D? Great for making me think this thread :-D Thanks, Will From: "Neogryzor" Subject: LP scanner Date: 27 Jul 2005 02:58:53 -0700 Message-ID: <1122458333.947026.11690@o13g2000cwo.googlegroups.com> Just to promote the LP hill, here is the scanner in Reclon2, (i removed the handshake rutine, of course). ;redcode-lp ;name Reclon 2 scanner ;author G.Labarga ;assert CORESIZE==8000 && MAXPROCESSES==8 ;strategy Twin scanner ;Ben Ford's Switchblade modiffied. ;I changed the clear and optimized the constant ;Booted a parallel scanner step equ 238 sloc equ ptr+4000 ptr: jmp #step,atk+step loop: add.ab {0,}0 scan: jmz.f loop,@ptr atk: mov @0,@ptr ;<-hit jmz.a loop,atk clr: spl #0,<0 mov dbm,<-9 dat 0,0 dbm: dat <-9+5334,<1 for 100 dat 0,0 rof boot: mov Subject: Re: Redcoder's Frenzy 24: Core Shrinking Knockout Date: 27 Jul 2005 03:20:44 -0700 Message-ID: <1122459644.660718.299340@z14g2000cwz.googlegroups.com> . From: "sayembara" Subject: Re: Redcoder's Frenzy 24: Core Shrinking Knockout Date: 27 Jul 2005 03:22:36 -0700 Message-ID: <1122459756.924241.57690@o13g2000cwo.googlegroups.com> I've completed my warriors but have to wait another 2 months for the result! :) Just remind me if you (Lachi) don't receive my entries by that time. I can't send early due to strategic reasons. Good luck to all of us. From: achillu@tin.it (LAchi) Subject: Re: The Geometry of Diversity once more Date: 27 Jul 2005 05:29:26 -0700 Message-ID: <1eeccf2e.0507270429.5b090e17@posting.google.com> I try to answer some of your questions. > Well I agree that more dimensions is better. But if win-loss-tie is > separate, this gives us 3*warriors*warriors dimensions. Let's start with this: the warriors space defined by a hill has only 3*warriors dimensions. List the warriors W1,W2,...,Wn; each warrior Wi maps to a point in 3n dimensions made up of n "triplets": (wi1,ti1,li1,wi2,ti2,li2,...,win,tin,lin). This way you can separate the views: there is a SET of warriors you want to represent in a euclidean space, and there is a LIST of warriors you want to test each warrior in the SET against; on a hill, the SET and the LIST contain the same warriors. But we can use a different LIST, for instance we can use three different prototypes of warriors, or there is still another chance: > I > couldn't find the architypical paper nor scissor nor stone, so I used > optimax categories as benchmarks instead. This seemed a good > approximation. In your work you used three bunches of warriors as your LIST instead of three real warriors. Whatever the choice is (3 real warriors or 3 bunches of warriors) the resulting space has 3*(count of warriors in the LIST) dimensions, once that the score function has been applied. > I was confused about the number of dimensions. If you collapse the > w/l/t into a single number, then you have as many dimensions as > warriors (-1 if no self-fights). So a 2D graph gives you two > combattants. This is not correct. You build a 2D graph if you use two warriors in the LIST but you can still have as many warriors as you want in the SET. > But I am confused about managing to plot a warrior when you know the > distance to more than two architypes (dimensions) on a strictly 2D > surface. Using "the Earth" or even a flat surface, you still need three distances from known spots in order to identify a single point; two distances identify two points, and you use the third distance to choose which one of the two. If the assumption that warriors behave like a stone-paper-scissor paradigm is correct, than you can use the numbers you got from your study to plot on the surface of a sphere; there is a great evidence that the assumption is correct. You can even try to plot them inside a 2d triangle on a flat surface. The difficult thing about is to find if the 3 hot-spots are equally spaced or not. I think I will give a look inside. > So a fundemental question: are surfaces 2D? The simplex dimension is 2n-dimensional in 3n-space; anyway your study can be drawn on a 2D surface of a 3d sphere. I think that any warriors space can be projected (non-linear) to a sphere by simply defining some kind of distance and some kind of equivalence of warriors. From: iapdk@admin.drake.edu Subject: Re: The Geometry of Diversity Date: 27 Jul 2005 16:41:57 -0700 Message-ID: <1122507717.137374.114700@g49g2000cwa.googlegroups.com> It is not necessary to pre-classify warriors. Use a mapping rule that places programs further apart when one of them scores high against the other, letting the difference in mutual score create a sort of repulsive force. Shake well and let the warriors settle themselves out. Like will 'attract' like by being repulsed equally. There would be regions in the map consisting of warriors with similar scoring patterns. Like stones with similar bombing rates and mop-up strategies. Bomb-dodgers would be pushed far away from those stones. Paper gets wins against stone but also quite a few ties, so they might form a region near anti-stone, a little closer to stone. Scissors score well against paper, but poorly against stone so the scissors region would be further away from stone than paper. Hybrids would fill in the gaps. The algorithm would run like this: -The map distance between two warriors, X, is scaled such that 0<=X<=1. -The score, Y, between two warriors is the higher of the two divided by the maximum possible score such that 0<=Y<=1. -Make a trial map and calculate the sum-of-squares = sum((X-Y)^2). -Make many maps and choose the one with the least sum-of-squares. Your map could be drawn on the surface of a sphere, the circumference of a circle, or within a circle or sphere by incorporating an inverse-square repulsion from the boundary, a sort of gravity. The 'ultimate-win' and 'ultimate-lose' warriors would exhibit the greatest separation from all other warriors, but would they be highly separated from each other? P. Kline From: iapdk@admin.drake.edu Subject: Re: The Geometry of Diversity Date: 28 Jul 2005 08:43:18 -0700 Message-ID: <1122565398.773015.236840@z14g2000cwz.googlegroups.com> The warrior universe is mostly poplulated by 'ultimate-lose' warriors consisting of nonsense code or buggy versions. You could filter those out by requiring a minimum score against a test suite, or requiring some min score against at least one other good warrior. Of the remaining good warriors, what would be the strategy with the highest number or representatives? The 'ultimate-win' warrior might be the anti- to one or more of those larger groups. Or it might be the best-of-breed of one of the larger groups. Using the map scenario I posted last time, where warriors repluse each other based on the difference in their one-on-one fights, drawn in the area of a circle where the circumference repels warriors with an inverse-square force; the ultimate-win warrior would be the one closest to the circumference. To make that happen, the repulsion of the boundary would max out at the perfect score - 100% wins against all other warriors. Like the speed of light it is unachievable because a nearly perfect counter can be written for any published warrior. The granularity of the map space comes into play also. The map could be sparse or dense, depending on the number of coordinates compared to the number of warriors. You could calculate a 100% dense map much more quickly than a 50%. Then use the output map as a starting point to develop sparser versions. Continue to add coordinates until the changes in relative positions is minimal. One reason the real universe is interesting is that it is dense. Or at least finitely sparse. Stuff is close enough to study. Without gravity, or a common center of origin, stuff would be spread out so far as to be meaningless. P. Kline From: achillu@tin.it (LAchi) Subject: Re: Redcoder's Frenzy 24: Core Shrinking Knockout Date: 28 Jul 2005 11:56:13 -0700 Message-ID: <1eeccf2e.0507281056.49b7a9d@posting.google.com> > Use of CORESIZE, MAXCYCLES, MAXPROCESSES, PSPACESIZE and any other > mean to statically compute the core size is forbidden; the warrior > code must dynamically adapt to the actual core size or be > independent of the core size. This includes using values greater > than 4000 or less than -3999 in your code if this will do; in few > words, the compiled warrior must be the same in all the challenges, > once that values greater than CORESIZE/2 have been converted to > negative numbers. Note that this is the standard output when you > run pmars. There has been a misunderstanding about "this includes"; it just means "it is also forbidden". So you should read the line as "It is also forbidden to use values greater than 4000 or less than -3999 in your code if this will do;" and so on. The rule is that the compiled warrior must be the same in all the challenges, regardless of core size. As a rule of thumb, compile the warrior using: pmars -r 0 -s 8000 and pmars -r 0 -s 12000 The output must necessarily be the same (this is not sufficient of course, anyway is a good hint). In order to be sure, I will compile the warriors using -r 0 -s 8000 and I will use the compiled code and not the original source in all the challenges. From: "sayembara" Subject: Re: Redcoder's Frenzy 24: Core Shrinking Knockout Date: 28 Jul 2005 15:43:25 -0700 Message-ID: <1122590605.455660.143500@g47g2000cwa.googlegroups.com> LAchi wrote: > In order to be sure, I will compile the warriors using -r 0 -s 8000 > and I will use the compiled code and not the original source in all > the challenges. Good idea. May be I will send the compiled code to really make sure the numbers stay the same. Some of the big numbers must be developed during the fights! /Zul Nadzri From: Jens Gutzeit Subject: Re: Quickscanners - Part III Date: Sat, 30 Jul 2005 19:12:01 +0200 Message-ID: Hi, time is almost up. I still havn't got any entries for the little YAP-contest. - Jens Gutzeit From: "sayembara" Subject: Re: Quickscanners - Part III Date: 31 Jul 2005 02:41:25 -0700 Message-ID: <1122802885.223925.157650@f14g2000cwb.googlegroups.com> Jens Gutzeit wrote: > Hi, > > time is almost up. I still havn't got any entries for the little > YAP-contest. > > - Jens Gutzeit Can use my "YAP II b" (or is it "YAP 2 b"?) as one of the challenger :)