From: pk6811s@acad.drake.edu
Subject: The shmuck responds
Organization: Drake University, Des Moines, Iowa, USA
Date: Tue, 17 Nov 1992 23:13:01 GMT

Well, I see after our private conversation, Dan is still unhappy and has
gone public with his complaint.

Let me share two pieces of code that I published BEFORE Impression
appeared on the hill, and before I received a copy:

	;redcode
	;name Emerald
	;author P.Kline
	inc      dat #-2045,#2045
	emerald  spl 0,100
	stone    mov <cnt+102-300,<cnt+100
	         add inc,stone
	cnt      djn stone,<-3799
	         end emerald

Now, I estimate I spent over 40 hours experimenting with different constants
in Emerald to give it an effective (and unique) bombing pattern.  I don't have
access to the programs that others use for computing their constants.
Apparently Dan was not able to find alternative constants, so elected
to use Emerald intact in Impression, changing only the word 'emerald' to
'dwarf'.

Also:

	;redcode
	;name Earnest
	;kill Earnest
	;author P.Kline
	;strategy dwarf/ring combo
	spacing equ 1143
	start   spl 1
        	spl 1
	        spl 1
	        spl a2
	a1      spl a1b2
	a1b1    spl a1b1c2
	a1b1c1  mov imp1,imp1+(spacing*1)
	        jmp @-1
	a1b1c2  mov imp1,imp1+(spacing*2)
	        jmp @-1
	a1b2    spl a1b2c2
	a1b2c1  mov imp1,imp1+(spacing*3)
	        jmp @-1
	a1b2c2  mov imp1,imp1+(spacing*4)
	        jmp @-1
	a2      spl a2b2
	a2b1    spl a2b1c2
	a2b1c1  mov imp1,imp1+(spacing*5)
	        jmp @-1
	a2b1c2  mov imp1,imp1+(spacing*6)
	        jmp @-1
	a2b2    spl a2b2c2
	a2b2c1  mov imp1,imp1+(spacing*0)
	        jmp @-1
	a2b2c2  spl 0
	        mov bomb,<bomb
	bomb    dat #-50
	
	imp1    mov     0,1143
	        end start

I believe it was my innovation to use a binary routine to start the imps.
Impire used a completely different startup.  Earnest is also a spiral.
It launches 8 processes over a seven-point ring, creating a 1-point overlap.
Dan's contribution was to eliminate the mov imp1,... lines because they
were unnecessary, to use a three-point ring, and to overlay a 
second spiral on the first - taken together these are major improvements
and should be called original.  Yet they do build on what was 
presented in Earnest.

There are differences between Impression and Imprimis.  I use reflections
to protect the stone from No Mucking About and Charon (and their derivatives).
I move a dat 0,0 after the stone to protect it from Plasma and somewhat
from Agony.  I've seen no one else doing either, so they may be original.
I am using different stone constants.  There is a spl 1 prior to
entering the binary routine, which effectively interleaves two spirals 
without the overhead of launching them separately.  And I launch two
three-point spirals instead of one.  While this makes for more targets
for scanners to locate, it makes it impossible for a 'gated' program 
(or one that evolves into a gate) to kill the entire program since
each ring will only walk half the length of the core before the timer 
elapses - also an original concept.

Finally, here is Imprimis 2.  It beats Impression v3 (and other single-ring
programs) from 8 to 20%.  You decide whether it looks different,
acts different, and scores different from Impression:

;redcode
;name Imprimis 2
;kill Imprimis
;author P.Kline
;strategy two three-point imp spirals with a stone
;strategy now capable of beating other imps (10%)
d        equ 2667
datzero  equ inc-5
inc      dat #2667,#3039
emerald  spl 0
stone    mov <cnt-2365-2+1267,cnt+2365-1+10
         add inc,stone
cnt      djn stone,<5061-1056

datz1   dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0
rf34    dat #2667,#3039
        spl 0
        mov <6902,<2376
        add 7997,7999
        djn 7998,<4005
datz2   dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0
rf49    dat #2667,#3039
        spl 0
        mov <6902,<2376
        add 7997,7999
        djn 7998,<4005
datz3   dat #0
        dat #0
        dat #0
        dat #0
        dat #0
        dat #0

start   mov <1000,datz1
        mov <1500,datz2
        mov <2000,datz3
        mov imp,imp+1333
        spl 1
        spl 16
        spl 8
        spl 4
        spl 2
        jmp imp+(d*0)
        jmp imp+(d*1)
        spl 2
        jmp imp+(d*2)
        jmp imp+(d*3)
        spl 4
        spl 2
        jmp imp+(d*4)
        jmp imp+(d*5)
        spl 2
        jmp imp+(d*0)+1333
        jmp imp+(d*1)+1333

        spl 8
        spl 4
        spl 2
        jmp imp+(d*2)+1333
        jmp imp+(d*3)+1333
        spl 2
        jmp imp+(d*4)+1333
        jmp imp+(d*5)+1333
        spl emerald
        spl emerald
        spl emerald
        jmp emerald
        
imp     mov 0,2667
        end start

Paul Kline
pk6811s@acad.drake.edu
Newsgroups: rec.games.corewar