;redcode
;name Puppy v0.1
;author Greg S. Stark

i         equ       165
inc       equ       i
territory equ       (-1)/i/i*i+150
skip      equ       2*territory+21-((-1)/i*i+i)
scope     equ       15

dummy     dat       #0,         #0
ptr       dat       #0,        #territory
ptr2      dat       #0,         #0
ptr2Min   dat       #0 ,        #0

search    add       #inc    ,  ptr
	jmz	search, @ptr
	slt	#0-territory, ptr
	jmp	found
	jmp	search

found     mov       ptr   ,    ptr2
          mov       ptr    ,   ptr2Min
          add       #scope  ,  ptr2
          sub       #scope   , ptr2Min
destroy1  mov       dummy    , <ptr2
          slt       ptr2  ,    ptr2Min
          jmp       destroy1,  <ptr2

          slt       #scope   , @ptr
          jmp       search

found2    mov       ptr ,      ptr2
          sub       @ptr ,     ptr2
          slt       #territory, ptr2
          jmp       found3
          slt       #0-territory, ptr2
          jmp       good2
          jmp       found3
good2     mov       ptr2  ,    ptr2Min
          add       #scope ,   ptr2
          sub       #scope  ,  ptr2Min
destroy2  mov       dummy    , <ptr2
          slt       ptr2   ,   ptr2Min
          jmp       destroy2,  <ptr2

found3    mov       ptr      , ptr2
          add       @ptr  ,    ptr2
          slt       #territory, ptr2
          jmp       search
          slt       #0-territory, ptr2
jmp       good3
          jmp       search
good3     mov       ptr2   ,   ptr2Min
          add       #scope  ,  ptr2
          sub       #scope  ,  ptr2Min
destroy3  mov       dummy ,   <ptr2
          slt       ptr2   ,   ptr2Min
          jmp       destroy3,  <ptr2

          jmp       search
end       search
