From news-rocq.inria.fr!jussieu.fr!math.ohio-state.edu!howland.erols.net!newsfeed.internetmci.com!193.174.75.126!news-was.dfn.de!news-kar1.dfn.de!newsfeed.nacamar.de!uni-erlangen.de!lrz-muenchen.de!not-for-mail Mon Apr 6 15:13:35 1998 Article: 8754 of rec.games.corewar Path: news-rocq.inria.fr!jussieu.fr!math.ohio-state.edu!howland.erols.net!newsfeed.internetmci.com!193.174.75.126!news-was.dfn.de!news-kar1.dfn.de!newsfeed.nacamar.de!uni-erlangen.de!lrz-muenchen.de!not-for-mail From: guenzel.p1@usa.net (Bjoern Guenzel) Newsgroups: rec.games.corewar Subject: traumatic smurf Date: Sun, 05 Apr 1998 01:10:10 GMT Organization: [posted via] Leibniz-Rechenzentrum, Muenchen (Germany) Lines: 111 Distribution: world Message-ID: <3526d3c1.2377188@news.lrz-muenchen.de> Reply-To: guenzel.p1@usa.net NNTP-Posting-Host: dial079.lrz-muenchen.de X-Newsreader: Forte Free Agent 1.11/32.235 While I can't do tests and I suppose it will be published with the end of the maniacs tournament anyway, here is traumatic smurf. It really is based on Paul Kline's torcht18 very much, as it's steps simply worked best. I tried my own steps (about a year ago), but they always scored worse - frustrating. The constant problem again - any hints on finding good constants would be greatly appreciated... I'd like to try the d-clear (respective b-clear, see below) with 2 mov instructions, too, but with the torcht18 step, then there would be an incendary bomb right behind the djn, which is probably extremely unhealthy. So I'll wait till I can find good constants myself. I plan to use genetic algorithms. When I'll have time (next millenium?), I plan to write a genetic constant optimizer, that is a genetic optimisation run not over the whole code, but only over selected constants. I pray that it will work, as the constant problem is really no fun at all :-( Anyway - the small twist with traumatic smurf is that it's d-clear is actually a two-pass clear!!! Most people who have tried will probably have discovered that multi-pass spl/dat d-clears don't work well, but I use stp instead of spl - that way I don't create additional spl 0 instructions that could survive, but the stunning effect of the incendaries still holds for longer, and I have some good brainwashing. In any case, it scored better than a pure d-clear on the hill when I submitted it. Amongst t. smurf's highest scores are Alladins Cave and Electric Head...:-) I think it probably also has an advantage against non-pspacers, but I haven't run any tests. The reason I think so is that usually by the time my bombers start the clear, the incendaries haven't even reached their full effect. So stunned paper gets already erased, freeing the other papers. With stp. there is at least one pass that might destroy all paper. The nice thing is that to make d-clear multi-pass, you only need to add 1 instruction to the code, but that you all have discovered by yourselves by now, I guess :-) (if there is any interest, maybe this should be included in a Core Warrior, so that it is in the record? I didn't feel cool enough to send t. smurf to Corewarrior in the first place...) Perhaps with some good timing, it could be made a stp/stp/dat clear At the moment t. smurf ties a lot, I hope that I can get more wins once I can do some optimization... Bjoern ;redcode-94 test ;name traumatic smurf ;author bjoern guenzel ;strategy torch t18 with b-clear ;assert 1 for 0 the bomber of traumatic smurf is based on a variant of torch t18 (no time to search for better steps...) and a brainwashing variant of d-clear rof shift equ -3780 step equ 54 count equ 2000 sm mov.i step+1,}step+1 ;mov half of incendary dat 0,0 dat 0,0 sp spl #-step,1 ;spl half of incendary loop sub #2*step,ptr ptr mov.i sp, *hit+(step*count)-17228-step-1 ;Kline's hard work mov sm,@ptr hit jmz.b loop,#0 ;hit with spl -> start clear clear mov.i *bptr,>sm djn.f -1,>sm last dat 0,0 ;boot this dat, too dat 0,0 dat 0,0 dat #1,bptr-sm+5 ;bomb for clear bptr stp.ab >0,#bptr-sm ;decrement to switch to dat boot mov.i {source,{boptr ;boot clear bombs mov.i {source,{boptr for 8 mov.i 1000 boptr div.f #bptr+1+shift,#last+1+shift boptr2 div.f #0,#sm+shift source dat #bptr+1,#last+1 for 10 dat 0,0 rof z for MAXLENGTH-CURLINE spl #z,-z rof end boot