From: pk6811s@acad.drake.edu
Subject: Imprimis 4
Organization: Drake University, Des Moines, Iowa, USA
Date: Sun, 10 Jan 1993 23:58:43 GMT

W. Mintardjo asked me whether Imprimis 3 didn't have a core clear, since it
did not kill his 'Empty' do-nothing program.  Indeed, Imprimis 3 did not
have a real core clear.  I started thinking about it and decided it would
be worth a few tests.  Result - Imprimis 4.  Not quite up to Sphinx stature,
but definitely an inprovement.  Basically it is a mod-4 stone which gets
most of the early cycles, but kills itself after the mod-4 pattern is 
complete.  There is also an anti-vampire tracer which is converted to
a core-clear by the stone (before it dies).  The core clear finishes just
before it is overrun by the imps, and just before 80,000 cycles elapse.

I do not think the resulting imp-gate does much good, looks like gating
your own imps is harder than gating your opponent's imps - since you
have to interleave the processes - imp/gate/imp/gate/imp/gate...
Maybe someone could suggest a launcing sequence that would do that?

Also, it is clear in my tests that the long startup is a problem,
and Imprimis 4 sometimes gets stunned/vamped before it gets out of
the starting block.

;redcode
;name Imprimis 4
;kill Imprimis
;author P.Kline
;strategy stone like ExtraExtra
;strategy two 3-point spirals like Impression
;strategy anti-vampire code
;strategy core clear -> imp-gate
;strategy sorry - sink wouldn't fit
d        equ 2667

stone    mov <5630,stone+3044+1
extra    spl -1,<inc-129-1100        ; stone soaks up cycles early
         add inc,stone               ; but kills itself after mod-4 is complete
cnt      djn extra,<inc-129-1100
inc      dat #2667,#3044
copyf1   dat #0
copyt1   dat #copyf1+1025

hide1    spl 0,<-7                   ;
hide2    mov 26,<7887                ; traces vampire snares back to vampire
hide3    sub @hide2,<hide2           ; hide3 will be killed by stone after a while
copyf2   dat #0                      ; to make hidex a core clear
copyt2   dat #extra+1254
hide4    dat <-8,#0                  ; hide1 + hide4 make an imp-gate very late
copyf3   dat #0
copyt3   dat #extra+1254+25

start   mov imp,imp+1000+97+132      ; put imps out there
        mov imp,imp+2333+97+132
        mov <copyf1,<copyt1          ; put stone out there
        mov <copyf1,<copyt1
        mov <copyf1,<copyt1
        mov <copyf1,<copyt1
        mov <copyf1,<copyt1
        add #1,copyt1
        mov <copyf2,<copyt2          ; put hidex out there
        mov <copyf2,<copyt2
        mov <copyf2,<copyt2
        mov <copyf3,<copyt3
        mov <4000,copyt3
        spl stst
        spl sttr
        spl 1                        ; double #processes in the spirals
        spl 16                       ; binary-launch imp spirals
        spl 8                        ; each spiral is six instructions wrapped
        spl 4                        ; around three points, with two
        spl 2                        ; processes at each instruction
        jmp imp+(d*0)+1000+97+132
        jmp imp+(d*1)+1000+97+132
        spl 2
        jmp imp+(d*2)+1000+97+132
        jmp imp+(d*3)+1000+97+132
        spl 4
        spl 2
        jmp imp+(d*4)+1000+97+132
        jmp imp+(d*5)+1000+97+132
        spl 2
        jmp imp+(d*0)+2333+97+132
        jmp imp+(d*1)+2333+97+132

        spl 8
        spl 4
        spl 2
        jmp imp+(d*2)+2333+97+132
        jmp imp+(d*3)+2333+97+132
        spl 2
        jmp imp+(d*4)+2333+97+132
        jmp imp+(d*5)+2333+97+132
stst    spl 1                      ; give the stone some cycles
        spl 1
        spl 1
        spl 1
        jmp @copyt1
        
sttr    spl @copyt2                ; give hidex some cycles
        spl @copyt2                ; (must be an even number of these)
        spl @copyt2
        spl @copyt2
        spl @copyt2
        spl @copyt2
        spl @copyt2
        spl @copyt2
        mov <2000,copyt1           ; don't leave pointers to stone,etc.
        mov <3000,copyt2
        dat #0
        dat #0
imp     mov 0,2667
        dat #(0-imp)*256           ; this stuff is just decoy
        dat #(0-imp)*256
        dat #(0-imp)*256
        dat #(0-imp)*256
        dat #(0-imp)*256
        dat #(0-imp)*256
        dat #(0-imp)*256
        dat #(0-imp)*256
        dat #(0-imp)*256
        dat #(0-imp)*256
        dat #(0-imp)*256
        dat #(0-imp)*256
        dat #(0-imp)*256
        dat #(0-imp)*256
        dat #(0-imp)*256
        dat #(0-imp)*256
        dat #(0-imp)*256
        dat #(0-imp)*256
        dat #(0-imp)*256
        dat #(0-imp)*256
        dat #(0-imp)*256
        end start

And here are the results:

Imprimis 4 wins: 14
Sphinx v2.6 wins: 12
Ties: 74
Imprimis 4 wins: 6
It wins: 0
Ties: 94
Imprimis 4 wins: 7
Night wins: 0
Ties: 93
Imprimis 4 wins: 15
Gamma Paper 3.0 wins: 16
Ties: 69
Imprimis 4 wins: 7
+0 Stormbringer wins: 2
Ties: 91
Imprimis 4 wins: 86          <- anti-vamp
Sucker 5 wins: 6
Ties: 8
Imprimis 4 wins: 39
Charon v8.0 wins: 53
Ties: 8
Imprimis 4 wins: 76          <- anti-vamp
Twilight Pits 6 wins: 13
Ties: 11
Imprimis 4 wins: 41
Medusa's v5 wins: 52
Ties: 7
Imprimis 4 wins: 32
a-test wins: 60
Ties: 8
Imprimis 4 wins: 36
Alt2 wins: 47
Ties: 17
Imprimis 4 wins: 87
Emerald 3 wins: 3
Ties: 10
Imprimis 4 wins: 35
Agony Anti-Imp wins: 50
Ties: 15
Imprimis 4 wins: 40
Pale Shears4 wins: 45
Ties: 15
Imprimis 4 wins: 39
Leprechaun 1b wins: 36
Ties: 25
Imprimis 4 wins: 20
test2 wins: 8
Ties: 72
Imprimis 4 wins: 52
Griffin 2 wins: 38
Ties: 10
Imprimis 4 wins: 86          <- anti-vamp
Grimm's Vampyre wins: 12
Ties: 2

Paul Kline
pk6811s@acad.drake.edu