JvN29 spaceship

For discussion of other cellular automata.
Post Reply
fluffykitty
Posts: 1178
Joined: June 14th, 2014, 5:03 pm
Contact:

JvN29 spaceship

Post by fluffykitty »

Body:

Code: Select all

x = 136, y = 84, rule = JvN29
68.A$69.LpA13KpA41.pA6IpAT$70.R8.L2K2IJ41.J2K2IL.R$69.SpA8KpAK2pA2K
41.2I2pAIpAIpAI$70.L.2IL4.J.J.IJ41.JK.J.J2.J$70.pAIpAIL4.JLpAKpA18K.K
.pAKpA3IpA15IpAIpALJ2.J$70.L.J.L4.JKJ2K3.LK13.RpAR2.J4.R14.2IJIJ2.J$
70.L.J.L12.LJ6.L6K.J3.J3.IpA.TpAK17.J$70.2IpA.L12.LJ6.L5.J.JpAT2J3.JS
.2TJ17.J$74.pA12.LKL2K.QTL.TpAK.JIpAJS.J3.pA4IpA.I3.11ILJ$69.14SpA3KL
JLKpAKpAKpA.2TJ.2JL3.J3.J4.QR15.LJ$83.IpA.JLJL2.pAK.L2.IpAI2J.pA2.J3.
J2.L19KJ$78.LK3.R2.JKJL6.LJ.QR.J2S2.J3.J2.L9.ILIL6.J$78.LJ3.R4.JK3.QT
LKJ4KpAK3.J3.J2.L9.JLJL6.J$78.LJ3.R9SpAKpAIpA2IJ2.J2.pAJ2.pAJ.LpAIpA
2IpA4IJLJL.pA4IJ$78.LJ13.L.LRS5.J2.JK2.JK.L.RS.pAK4.JLJL.J4.J$78.LJ
12.LpAL5.pA2.J2.IJ3.J.L5.R4.JLJIpAJ4.J$78.LJ11KpAK2L5.T2.J2.J2KpA.J2.
L3.QRIpA2.JI2J.R4.J$78.L11.JLJK5ILT2.J2.3IJ.J.LpAIpAIpAIpAIpAIJ2.JKR
4.J$78.L11.JpA7.LT2.J2.J4.J.L.RS4.pAK4.2JR4.J$78.L16.pAIpAILS2.J2.JK
3.J.L8.R4.pAJR4.J$78.L10.LK4.JKpAKL3.J3.J3.J2.L.6QR2.2IJ.R2S2.J$78.L
10.LJ3.3IpAJL3.J3.J3.J.LpAIpA6IpAIpAIpA3IpA2.J$78.L6.pAKpA2KJpA2KpA2K
pA2K3.J3.J3.J2L.RS12.TS3.J$78.L6.L17.J3.J3.J.17IpA3.J$78.L2.L3KL17.J
3.J3.J18.L3.J$78.L2.L2IJL3.T11SpA.J3.J3.J18.L3.J$78.2L2KJ2KL3.T11.J.J
3.J3.J.ILILILIL9.L3.J$78.L2IL2IJL3.T.TpAK7.J.J3.J3.J.JLJLJLJL9.L3.J$
69.13KpA2KpAL2.T.2TJ7.J.J3.J3.J.JLJLJLJL9.L3.J$83.pA.2L2.T.2IpA.I5.J.
J3.J3.J.JLJLJLJL9.L3.J$83.J2KL2.T.J.QR8.J3.J3.J.JLJLJLJL9.L3.J$78.LpA
5.LK2.T.J11KpA2K.J3.J.JLJLJLJL9.L3.J$78.LJ5.L3.T13.J.J.J3.J.JLJLJLJL
9.L3.J$73.LpAK2.LJ5.L3.T13.pAKpAKJ.2IpA.JLJLJLJL9.L3.J$73.pA.pAKpAKJpA
2KpAKpA3.T15.3J.J.J.JLJLJLJL9.L3.J$73.I2L.L2.L.pAK.L3.T14.IpA2JIpAIpA
.JLJLJLJL9.L3.J$70.L10K4.L3.T14.2J.3J3.JLJLJLJL9.L3.J$69.pAKLKLKLKLKL
KLpA2KpA3.T14.JpAK2JpAK2.JLJLJLJLIpA7.L3.J$70.JLJKJKJKJKJKLJ2K3.T16.
2J.2J2.JLJLJLJLJL7.L3.J$D69.J11KpA6.T16.JpAIpAJ2.JLJLJLJLJL6.pA.3IJ$.
LpA13KpA41.pA6IpAT22.T17.J.4IJIJIJIJIJ7IJ$GKR8.L2K2IJ41.J2K2IL.R39QT.
C27.B$.SpA8KpAK2pA2K41.2I2pAIpAIpA41I$2.L.2IL4.J.J.IJ41.JK.J.J2.J$2.pA
IpAIL4.JLpAKpA18KIK.pAKpA3IpA.14IpAIpALJ2.J$2.L.J.L4.JKJ2K3.LK13.RpAR
2.J4.R14.2IJIJ2.J$2.L.J.L12.LJ6.L6K.J3.J3.IpA.TpAK17.J$2.2IpA.L12.LJ
6.L5.J.JpAT2J4.S.2TJ17.J$6.pA12.LKL2K.QTL.TpAK.JIpA.S.J3.pA4IpA.15ILJ
$.14SpA3KLJLKpAKpA.pA.2TJ.2JL3.J3.J4.QR15.LJ$16.pA.JLJL2.pAK.L3.pA.2J
IpA2.J3.J2.L19KJ$10.LK3.R2.JKJL5.ILJ.QR2.2S2.J3.J2.L9.ILIL6.J$10.LJ3.
R4.JK3.QTLKJ4KpAK3.J3.J2.L9.JLJL6.J$10.LJ3.R9SpA.pA.pA2IJ2.J2.pAJ2.pA
J.LpA.pA2IpA4IJLJL.pA4IJ$10.LJ13.L.LRS5.J2.JK2.JK.L.RS.pA5.JLJL.J4.J$
10.LJ12.LpAL5IpA2.J2.IJ3.J.L5.R4.JLJIpA5.J$10.LJ11KpAK2L5.T2.J2.J2KpA
.J.IL3.QRIpA2.JI2J.R4.J$10.L11.JLJK5ILT2.J2.3IJ.J.LpA.pAIpAIpAIpAIJ2.
JKR4.J$10.L11.JpA7.LT2.J2.J4.J.L.RS4.pA5.2JR4.J$10.L16.pAIpA2IS2.J2.J
K3.J.L8.R4.pAJR4.J$10.L10.LK4.JKpAKL3.J3.J3.J.IL.6QR2.2IJ.R2S2.J$10.L
10.LJ3.3IpAJL3.J3.J3.J.LpA.pA6IpAIpAIpA3IpA2.J$10.L6.pAKpA2KJpA2KpA2K
pA2K3.J3.J3.J2L.RS12.TS3.J$10.L6.L17.J3.J3.J.16I.pA3.J$10.L2.L3KL17.J
3.J3.J18.L3.J$10.L2.L2IJL3.T11SpA.J3.J3.J18.L3.J$10.2L2KJ2KL3.T11.J.J
3.J3.J.ILILILIL9.L3.J$10.L2IL2IJL3.T.TpAK7.J.J3.J3.J.JLJLJLJL9.L3.J$H
13KpA2KpAL2.T.2TJ7.J.J3.J3.J.JLJLJLJL9.L3.J$15.pA.2L2.T.2IpA.6IJ.J3.J
3.J.JLJLJLJL9.L3.J$15.J2KL2.T.J.QR8.J3.J3.J.JLJLJLJL9.L3.J$10.LpA5.LK
2.T.J11KpA2K.J3.J.JLJLJLJL9.L3.J$10.LJ5.L3.T13.J.J.J3.J.JLJLJLJL9.L3.
J$5.LpAK2.LJ5.L3.T13.pAKpAKJ.2IpA.JLJLJLJL9.L3.J$5.pA.pAKpAKJpA2KpAKpA
3.T15.3J.J.J.JLJLJLJL9.L3.J$5.I2L.L2.L.pAK.L3.T14.IpA2JIpAIpA.JLJLJLJ
L9.L3.J$2.L10K4.L3.T14.2J.3J3.JLJLJLJL9.L3.J$.pAKLKLKLKLKLKLpA2KpA3.T
14.JpAK2JpAK2.JLJLJLJLIpA7.L3.J$2.JLJKJKJKJKJKLJ2K3.T16.2J.2J2.JLJLJL
JLJL7.L3.J$2.J11KpA6.T16.JpAIpAJ2.JLJLJLJLJL6.pA4IJ$21.T17.J.4IJIJIJI
JIJ7IJ$.36QT.F27.E$.36I2Q!
Tape generator:

Code: Select all

local g = golly()

local skip_construct = false
local skip_destruct = false

local curlayer = g.getlayer()
local newindex = g.duplicate()

local cells = g.getcells(g.getrect())

local cells2 = {}

local new_top = 0
local new_left = 0
local new_bottom = 0
local new_right = 0
local new_tape_top = 0
local new_tape_left = 0

local old_top = 0
local old_left = 0
local old_bottom = 0
local old_right = 0
local old_tape_top = 0
local old_tape_left = 0

local old_destructor_x = 0
local old_destructor_y = 0

local tunnel_x = 0
local tunnel_y = 0

for i=1,#cells-2,3 do
 local cell = {cells[i], cells[i+1], cells[i+2]}
 cells2[#cells2+1] = cell
 if cell[3]>0 and cell[3]<=8 then
  g.setcell(cell[1], cell[2], 0)
 end
 if cell[3]==1 then
  new_left = cell[1]+1
  new_top = cell[2]+1
 end
 if cell[3]==2 then
  new_right = cell[1]-1
  new_bottom = cell[2]-1
 end
 if cell[3]==3 then
  new_tape_left = cell[1]
  new_tape_top = cell[2]
 end
 if cell[3]==4 then
  old_left = cell[1]+1
  old_top = cell[2]+1
 end
 if cell[3]==5 then
  old_right = cell[1]-1
  old_bottom = cell[2]-1
 end
 if cell[3]==6 then
  old_tape_left = cell[1]
  old_tape_top = cell[2]
 end
 if cell[3]==7 then
  old_destructor_x = cell[1]
  old_destructor_y = cell[2]
  g.setcell(cell[1], cell[2], 11)
 end
 if cell[3]==8 then
  tunnel_x = cell[1]
  tunnel_y = cell[2]
 end
end

for i=0,new_bottom-new_top-4 do
 g.setcell(old_destructor_x - 1, old_destructor_y, 12)
 g.setcell(old_destructor_x, old_destructor_y + 1, 20)
 if old_destructor_x == tunnel_x and old_destructor_y + 1 == tunnel_y then
  g.setcell(old_destructor_x, old_destructor_y + 1, 11)
 end
 old_destructor_y = old_destructor_y + 1
end

for i=0,new_right-new_left+2 do
 g.setcell(old_destructor_x - 1, old_destructor_y, 11)
 g.setcell(old_destructor_x, old_destructor_y + 1, 19)
 old_destructor_x = old_destructor_x - 1
end

for i=0,new_bottom-new_top+2 do
 g.setcell(old_destructor_x - 1, old_destructor_y, 12)
 g.setcell(old_destructor_x, old_destructor_y + 1, 20)
 old_destructor_y = old_destructor_y + 1
end

g.setcell(old_destructor_x - 1, old_destructor_y, 12)
g.setcell(old_destructor_x - 1, old_destructor_y + 1, 9)

for i=0,new_tape_left-new_left-2 do
 g.setcell(old_destructor_x, old_destructor_y, 17)
 g.setcell(old_destructor_x, old_destructor_y + 1, 9)
 old_destructor_x = old_destructor_x + 1
end

g.setcell(old_destructor_x, old_destructor_y, 20)
g.setcell(old_destructor_x, old_destructor_y + 1, 10)

local rows = {}
local row_lefts = {}
local row_rights = {}

for i=1,#cells2 do
 local x = cells2[i][1]
 local y = cells2[i][2]
 if x >= new_left and x <= new_right and y >= new_top and y <= new_bottom then
  if rows[y] == nil then
   rows[y] = {}
   row_lefts[y] = x
   row_rights[y] = x
  end
  rows[y][x] = cells2[i][3]
  if row_lefts[y] >= x then row_lefts[y] = x end
  if row_rights[y] <= x then row_rights[y] = x end
 end
end

local old_cols = {}
local old_col_tops = {}
local old_col_bottoms = {}

for i=1,#cells2 do
 local x = cells2[i][1]
 local y = cells2[i][2]
 if x >= old_left and x <= old_right and y >= old_top and y <= old_bottom then
  if old_cols[x] == nil then
   old_cols[x] = {}
   old_col_tops[x] = y
   old_col_bottoms[x] = y
  end
  old_cols[x][y] = cells2[i][3]
  if old_col_tops[x] >= y then old_col_tops[x] = y end
  if old_col_bottoms[x] <= y then old_col_bottoms[x] = y end
 end
end

local c_init = {1,1,1,1,1,0,1,0,1,1,1,0,1,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,1,0,1,1,0,0,0}
local c_up = {1,1,1,1,1,0,1,0,0,1,0,0,0,1,1,1,1,1,0,1,1,0,0,1,0,1,1,0,1,1,1,0,1,1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,1,0,1,1,0,0,0}
local c_start_fastright = {1,1,1,1,1,0,1,1,1,0,1,0,0,0,1,1,1,1,1,0,0,0}
local c_fastright = {1,1,1,1,1,0,1,0,1,1,0,0,0}
local c_end_fastright = {1,1,1,0,1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,1,0,1,1,0,0,0}
local c_left = {1,1,1,1,1,0,1,0,0,1,0,1,0,1,1,1,1,1,0,1,1,1,0,1,1,0,1,1,1,0,0,0,0,0,1,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,1,0,1,1,0,0,0}
local c_down = {1,1,1,1,1,0,1,1,1,0,1,1,0,0,1,0,0,0,0,0,1,1,1,1,1,0,1,0,0,0,1,0,1,1,1,1,1,0,1,1,0,1,1,1,1,0,0,0,1,0,1,0,1,1,1,1,1,0,1,0,1,1,0,0,0}
local c_finalize = {1,0,1,1,0,1,1,1,0,0,0}
local constructions = {[9] = {1,0,0,0,0}, [10] = {1,0,0,0,1,0,0,0}, [11] = {1,0,0,1,0,0,0}, [12] = {1,0,1,0,0,0}, [17] = {1,0,1,1,0,0,0}, [18] = {1,1,0,0,0}, [19] = {1,1,0,1,0,0,0}, [20] = {1,1,1,0,0,0}, [25] = {1,1,1,1,0,0,0}}

local tape = {}
tape[#tape+1]=c_init
for y=new_top,new_bottom do tape[#tape+1]=c_up end
for y=new_top,new_bottom do
 tape[#tape+1]=c_start_fastright
 for x=new_left,row_rights[y] do tape[#tape+1]=c_fastright end
 tape[#tape+1]=c_end_fastright
 for x=row_rights[y],new_left,-1 do
  tape[#tape+1]=c_left
  tape[#tape+1]=constructions[rows[y][x]]
 end
 tape[#tape+1]=c_down
end

tape[#tape+1]=c_start_fastright
for i=new_left,new_tape_left-3 do tape[#tape+1]=c_fastright end
tape[#tape+1]=c_finalize

if skip_construct then
 tape = {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}}
end

local d_init = {1,1,1,1,1,1,0,1,0,0,1,1,0,1,0}
local d_down = {1,0,0,0,0,1,0,1,0,1,0,1,1,1,1,1,0,1,0,0,0,0,1,0,0,0,1,1,1,1,0,0,0,0,1,1,0,1,0,0,1,1,1,1,1,0,1,1,1,1,1,0}
local d_left = {1,1,0,0,0,1,0,0,0,1,1,1,1,1,0,1,0,0,1,1,0,1,0,1,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,1,1,1,1,1,0}
local d_right = {1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,1,0,1,0,0,0,1,1,1,1,1,0,1,1,0,1,0,1,1,1,0,1,0,1,0,0,0,1,1,1,1,1,0}
local d_up = {1,0,0,0,0,1,1,0,0,0,1,1,1,1,0,1,0,0,0,0,0,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,0,1,1,0,0,0,0,1,1,1,1,0,0,1,1,1,0,1,0,1,1,1,1,1,0,1,1,1,1,1,0}
local d_retract = {1,1,1,1,1,0,1,1,0,1,0,0,1,0,0,0,0,0,1,1,1,1,1,0,1,0,0,0,1,1,1,0,0,0,0,1,0,1,1,1,0,0,0,0,0,1,1,1,1,1,0}
local d_retract_turn = {1,1,1,1,1,0,1,1,0,1,0,0,0,0,0,0,0,1,1,1,1,1,0}
local d_modify = {1,0,0,0,0,1,0,1,1,1,1,0,1,1,0,1,1,1,1,0,1,1,0,0,1,1,0,1,0,0,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,0,1,1,0,0,0,0,1,1,0,0,0,1,0,1,1,1,0,0,0,0,1,1,1,0,0,0,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,0,1,0,0,0,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,0,1,0}
--local d_meld = {1,0,0,0,0,1,1,0,1,0,1,1,1,1,0,1,1,0,1,0,0,1,1,1,1,1,0,1,0,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,0,0,1,1,1,1,1,0,1,0,1,0,0,1,1,1,1,1,0}
local d_meld = {1,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,0,0,1,1,1,1,1,0,1,0,1,0,0,0,1,1,1,1,1,0,0,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,0}
local d_finalize = {1,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,0,0,1,1,1,1,1,0,1,0,1,0,1,0,0,0,1,1,1,1,1,0,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,0,0,0,1,0,1,1,1,1,1,0,1,1,1,1,1,0,1,0,1,1,1,1,1,1,0}
local destruct_normal = {1,1,1,0,0,1,0,0,0,1,1,1,1,1,0}
local destruct_special = {1,0,1,0,1,0,0,0,0,0,1,1,1,1,1,0}

tape[#tape+1] = d_init
tape[#tape+1] = d_left
for i=new_top,old_top-3 do
 tape[#tape+1] = d_down
end
tape[#tape+1] = d_modify
tape[#tape+1] = d_up
tape[#tape+1] = d_up
for x=old_right,old_left,-1 do
 tape[#tape+1] = d_left
 if not skip_destruct then
  for y=old_top,old_col_bottoms[x] do
   if old_cols[x][y] and old_cols[x][y] >= 17 and old_cols[x][y] <= 20 then tape[#tape+1] = destruct_special
   else if old_cols[x][y] then tape[#tape+1] = destruct_normal end end
   tape[#tape+1] = d_down
  end
  for y=old_top,old_col_bottoms[x] do
   tape[#tape+1] = d_up
  end
 end
end
tape[#tape+1] = d_left
tape[#tape+1] = d_left
--for y=old_top,old_bottom+1 do
-- tape[#tape+1] = d_down
--end
tape[#tape+1] = d_down
tape[#tape+1] = d_meld
for i=0,new_tape_left-new_left-2 do
 tape[#tape+1] = d_retract
end
tape[#tape+1] = d_retract_turn
for i=0,new_bottom-new_top+2 do
 tape[#tape+1] = d_up
end
for i=0,new_right-new_left+2 do
 tape[#tape+1] = d_right
end
tape[#tape+1] = d_down
tape[#tape+1] = d_down
tape[#tape+1] = d_finalize

--tape = {{1,0,1,1,0,1,1,1,0,1,1,1,1,0}}

local tape2 = {}
for i=1,#tape do
 for j=1,#tape[i] do
  tape2[#tape2+1] = tape[i][j]
 end
end

if #tape2%2 == 0 then
 tape2[#tape2+1]=0
end

g.setcell(new_tape_left, new_tape_top, 25 + tape2[1] * 2 + tape2[2])
g.setcell(old_tape_left, old_tape_top, 25)
for i=3,(#tape2+1)//2 do
 g.setcell(new_tape_left + i - 2, new_tape_top, 11+tape2[i]*4)
 g.setcell(old_tape_left + i - 2, old_tape_top, 11)
end
g.setcell(new_tape_left + (#tape2+3)//2 - 3, new_tape_top + 1, 10+tape2[(#tape2+3)//2]*4)
g.setcell(old_tape_left + (#tape2+3)//2 - 3, old_tape_top + 1, 10)
for i=(#tape2+5)//2,#tape2 do
 g.setcell(new_tape_left + (#tape2+3)//2 - 3 - (i - (#tape2+3)//2), new_tape_top + 1, 9+tape2[i]*4)
 g.setcell(old_tape_left + (#tape2+3)//2 - 3 - (i - (#tape2+3)//2), old_tape_top + 1, 9)
end
g.setcell(old_tape_left + (#tape2+3)//2 - 3 - (#tape2 - (#tape2+3)//2), old_tape_top + 1, 0)

g.show(string.format("Tape length %d, period ~%d", #tape2, #tape2*(1+3+14)))
Tape construction/deletion demo:

Code: Select all

x = 124, y = 46, rule = JvN29
2.LpA13KpA41.pA6IpAT$LK.R8.L2K2IJ41.J2K2IL.R$LTSpA8KpAK2pA2K41.2I2pAI
pAIpAI$LT.L.2IL4.J.J.IJ41.JK.J.J2.J$LT.pAIpAIL4.JLpAKpA18K.K.pAKpA3IpA
15IpAIpALJ2.J$LT.L.J.L4.JKJ2K3.LK13.RpAR2.J4.R14.2IJIJ2.J$LT.L.J.L12.
LJ6.L6K.J3.J3.IpA.TpAK17.J$LT.2IpA.L12.LJ6.L5.J.JpAT2J3.JS.2TJ17.J$LT
5.pA12.LKL2K.QTL.TpAK.JIpAJS.J3.pA4IpA.I3.11ILJ$LT14SpA3KLJLKpAKpAKpA
.2TJ.2JL3.J3.J4.QR15.LJ$LT14.IpA.JLJL2.pAK.L2.IpAI2J.pA2.J3.J2.L19KJ$
LT9.LK3.R2.JKJL6.LJ.QR.J2S2.J3.J2.L9.ILIL6.J$LT9.LJ3.R4.JK3.QTLKJ4KpA
K3.J3.J2.L9.JLJL6.J$LT9.LJ3.R9SpAKpAIpA2IJ2.J2.pAJ2.pAJ.LpAIpA2IpA4IJ
LJL.pA4IJ$LT9.LJ13.L.LRS5.J2.JK2.JK.L.RS.pAK4.JLJL.J4.J$LT9.LJ12.LpAL
5.pA2.J2.IJ3.J.L5.R4.JLJIpAJ4.J$LT9.LJ11KpAK2L5.T2.J2.J2KpA.J2.L3.QRI
pA2.JI2J.R4.J$LT9.L11.JLJK5ILT2.J2.3IJ.J.LpAIpAIpAIpAIpAIJ2.JKR4.J$LT
9.L11.JpA7.LT2.J2.J4.J.L.RS4.pAK4.2JR4.J$LT9.L16.pAIpAILS2.J2.JK3.J.L
8.R4.pAJR4.J$LT9.L10.LK4.JKpAKL3.J3.J3.J2.L.6QR2.2IJ.R2S2.J$LT9.L10.L
J3.3IpAJL3.J3.J3.J.LpAIpA6IpAIpAIpA3IpA2.J$LT9.L6.pAKpA2KJpA2KpA2KpA
2K3.J3.J3.J2L.RS12.TS3.J$LT9.L6.L17.J3.J3.J.17IpA3.J$LT9.L2.L3KL17.J
3.J3.J18.L3.J$LT9.L2.L2IJL3.T11SpA.J3.J3.J18.L3.J$LT9.2L2KJ2KL3.T11.J
.J3.J3.J.ILILILIL9.L3.J$LT9.L2IL2IJL3.T.TpAK7.J.J3.J3.J.JLJLJLJL9.L3.
J$LT13KpA2KpAL2.T.2TJ7.J.J3.J3.J.JLJLJLJL9.L3.J$LT14.pA.2L2.T.2IpA.I
5.J.J3.J3.J.JLJLJLJL9.L3.J$LT14.J2KL2.T.J.QR8.J3.J3.J.JLJLJLJL9.L3.J$
LT9.LpA5.LK2.T.J11KpA2K.J3.J.JLJLJLJL9.L3.J$LT9.LJ5.L3.T13.J.J.J3.J.J
LJLJLJL9.L3.J$LT4.LpAK2.LJ5.L3.T13.pAKpAKJ.2IpA.JLJLJLJL9.L3.J$LT4.pA
.pAKpAKJpA2KpAKpA3.T15.3J.J.J.JLJLJLJL9.L3.J$LT4.I2L.L2.L.pAK.L3.T14.
IpA2JIpAIpA.JLJLJLJL9.L3.J$LT.L10K4.L3.T14.2J.3J3.JLJLJLJL9.L3.J$LTpA
KLKLKLKLKLKLpA2KpA3.T14.JpAK2JpAK2.JLJLJLJLIpA7.L3.J$LT.JLJKJKJKJKJKL
J2K3.T16.2J.2J2.JLJLJLJLJL7.L3.J$LT.J11KpA6.T16.JpAIpAJ2.JLJLJLJLJL6.
pA.3IJ$LT20.T17.J.4IJIJIJIJIJ7IJ$LT.35QT.pAOK3OK2OK5O48K6OKO2KOK2O4K
2OK$LT.35I2Q6M42IMI5MI5MIM3I3M3I2MI3M2I2MIJ$LT$L37QT.pA83K$38I2Q.82IJ
!
The pattern you get after running the tape generator on the body (and running for 79 generations) is a (68,40)c/9866912 spaceship.
User avatar
confocaloid
Posts: 6697
Joined: February 8th, 2022, 3:15 pm
Location: learn to protect yourself against stray gliders and sparks and self-destruct mechanisms

Re: JvN29 spaceship

Post by confocaloid »

fluffykitty wrote: April 22nd, 2025, 2:20 pm [...] The pattern you get after running the tape generator on the body (and running for 79 generations) is a (68,40)c/9866912 spaceship.
I ran the tape generator on the body, evolved the resulting pattern for 1000 ticks, ran the pattern for one full cycle in Golly, saved the "before" and "after" generations into RLE files, and checked that the only difference is the "CXRLE" line:

Code: Select all

### head -n 3 post210458-gen1000.rle
#CXRLE Pos=-69,-13 Gen=1000
x = 274250, y = 137, rule = JvN29
204.QB$204.VJ$204.RJ$204.RN$204.RJ$204.RJ$204.RJ$204.RJ$204.RJ$204.RJ
### head -n 3 post210458-gen9867912.rle
#CXRLE Pos=-1,-53 Gen=9867912
x = 274250, y = 137, rule = JvN29
204.QB$204.VJ$204.RJ$204.RN$204.RJ$204.RJ$204.RJ$204.RJ$204.RJ$204.RJ
### diff post210458-gen1000.rle post210458-gen9867912.rle
1c1
< #CXRLE Pos=-69,-13 Gen=1000
---
> #CXRLE Pos=-1,-53 Gen=9867912
127:1 B3/S234c User:Confocal/R (isotropic CA, incomplete)
Unlikely events happen.
My silence does not imply agreement, nor indifference. If I disagreed with something in the past, then please do not construe my silence as something that could change that.
fluffykitty
Posts: 1178
Joined: June 14th, 2014, 5:03 pm
Contact:

Re: JvN29 spaceship

Post by fluffykitty »

I found some optimizations.

Body:

Code: Select all

x = 108, y = 74, rule = JvN29
54.A$55.LpA9KpA31.pA6IpAT$56.R4.L2K2IJ31.J2K2IL.R$55.SpA4KpAK2pA2K31.
2I2pAIpAIpAI$56.L.2ILJ.J.IJ31.JK.J.J2.J$56.pAIpAILJLpAKpA14K.K.pAKpA
3IpA9IpAIpALJ2.J$56.L.J.LJKJ2K14.RpAR2.J4.R8.2IJIJ2.J$56.L.pA.L20.J3.
J3.IpA.TpAK11.J$56.2IJ.L12.L2KpA3K.JpAT.J3.JS.2TJ11.J$60.pA7.LK.QTL.T
pAK.JIpAJS.J3.pA4IpA4.L6.J$55.7SpA3KLKLpAKpAKpA.2TJ.2JL3.J3.J4.QR3.LI
pAL3.J$62.IpA.4pA.pAK.L2.IpAI2J.pA2.J3.J.L8KJ.pA3.J$62.R2.JKJK5.LJ.QR
.J2S2.J3.J.L8.J.L3.J$62.R8.QTLKJ4KpAK3.J3.J.LTS6.pA.pA3.J$62.R8SpAKpA
IpA2IJ2.J2.pAJ2.pAJLpAIpA2IpA2IpAJ.L.pAIJ$71.L.LRS5.J2.JK2.JKL4.pAK3.
pA.pA.J.J$70.LpAL5.pA2.J2.IJ3.JL5.R3.J.IpAJ.J$61.L2KL4KpAK2L5.T2.J2.J
2KpA.J.L3.QRIpA.J.J.RSJ$61.L.2pA3.JLJKIpAIpAILT2.J2.3IJ.JLpAIpAIpAIpA
IpAJ.JKQRJ$61.L.JL3.JpA3.pAIpAILS2.J2.J4.JL.RS4.pAK2.2JRSJ$61.L.JL3.L
pA3.JKpAKL3.J2.JK3.JL8.R2.pAJQRJ$61.L.JK3.LJ2.3IpAJL3.J3.J3.J.L.6QR2I
J.R.J$61.L.LKpA2KLJpAKpA2KpA2K3.J3.J3.JLpAIpA4ILIpAIpAIpA.J$61.L.L.pA
IJL12.J3.J3.JL.RS4.IJ6.J$61.L.L.J2KL12.J3.J3.J14ILSJ$61.L.IL2IJL12.J
3.J3.J.ILILILILILIL.pARJ$55.10KpA2KpA2L10KpA2K.J.2IpA.12pA.L.J$66.pA.
3L.QT7.J.J.J.J.J.JLJLJLJLJLJL2.IJ$61.L2K2.J2KL2IpA6.L.pAKpAKJIpAIpA.
12pAIpA$56.LpAK2.LIpA4.LK2RL6.L3.5J2.pAJIJIJIJIJIJ$56.pA.pAKpAKJpA2KpA
KpA.RpAK6.L2.IpA3JpAKIJ$56.IL6K.pAK.L10.L2.2J.J.3J$56.LK2.LKLK4.L10.pA
2.JpAKpAIpA2J$55.pAK3.4pAKpA2KpA10.T5.J.2IJ$56.JL3KJK2.LJ2K10.T5.J$D
55.J8KpA13.T5.J$.LpA9KpA31.pA6IpAT26.T5.J$GKR4.L2K2IJ31.J2K2IL.R31QT.
C21.B$.SpA4KpAK2pA2K31.2I2pAIpAIpA33I$2.L.2ILJ.J.IJ31.JK.J.J2.J$2.pAI
pAILJLpAKpA14KIK.pAKpA3IpA.8IpAIpALJ2.J$2.L.J.LJKJ2K14.RpAR2.J4.R8.2I
JIJ2.J$2.L.pA.L20.J3.J3.IpA.TpAK11.J$2.2IJ.L12.L2KpA3K.JpAT.J4.S.2TJ
11.J$6.pA7.LK.QTL.TpAK.JIpA.S.J3.pA4IpA.3IL6.J$.7SpA3KLKLpAKpA.pA.2TJ
.2JL3.J3.J4.QR3.LIpAL3.J$9.pA.4pA.pAK.L3.pA.2JIpA2.J3.J.L8KJ.pA3.J$8.
R2.JKJK4.ILJ.QR2.2S2.J3.J.L8.J.L3.J$8.R8.QTLKJ4KpAK3.J3.J.LTS6.pA.pA
3.J$8.R8SpA.pA.pA2IJ2.J2.pAJ2.pAJLpA.pA2IpA2IpAJ.L.pAIJ$17.L.LRS5.J2.
JK2.JKL4.pA4.pA.pA.J.J$16.LpAL5IpA2.J2.IJ3.JL5.R3.J.IpA2.J$7.L2KL4KpA
K2L5.T2.J2.J2KpA.JIL3.QRIpA.J.J.RSJ$7.L.2pA3.JLJKIpAIpAILT2.J2.3IJ.JL
pA.pAIpAIpAIpAJ.JKQRJ$7.L.JL3.JpA3.pAIpA2IS2.J2.J4.JL.RS4.pA3.2JRSJ$
7.L.JL3.LpA3.JKpAKL3.J2.JK3.JL8.R2.pAJQRJ$7.L.JK3.LJ2.3IpAJL3.J3.J3.J
IL.6QR2IJ.R.J$7.L.LKpA2KLJpAKpA2KpA2K3.J3.J3.JLpA.pA4ILIpAIpAIpA.J$7.
L.L.pAIJL12.J3.J3.JL.RS4.IJ6.J$7.L.L.J2KL12.J3.J3.J14I.SJ$7.L.IL2IJL
12.J3.J3.J.ILILILILILIL.pARJ$H10KpA2KpA2L10KpA2K.J.2IpA.12pA.L.J$12.pA
.3L.QT7.J.J.J.J.J.JLJLJLJLJLJL.2IJ$7.L2K2.J2KL2IpA.5IL.pAKpAKJIpAIpA.
12pAIpA$2.LpAK2.LIpA4.LK2RL6.L3.5J2.pAJIJIJIJIJIJ$2.pA.pAKpAKJpA2KpAK
pA.RpAK6.L2.IpA3JpAKIJ$2.IL6K.pAK.L10.L2.2J.J.3J$2.LK2.LKLK4.L10.pA2.
JpAKpAIpA2J$.pAK3.4pAKpA2KpA10.T5.J.2IJ$2.JL3KJK2.LJ2K10.T5.J$2.J8KpA
13.T5.J$25.T5.J$.28QT.F21.E$.28I2Q!
Same tape generator as the previous one.
Tape demo:

Code: Select all

x = 183, y = 41, rule = JvN29
2.LpA9KpA31.pA6IpAT$LK.R4.L2K2IJ31.J2K2IL.R$LTSpA4KpAK2pA2K31.2I2pAIpA
IpAI$LT.L.2ILJ.J.IJ31.JK.J.J2.J$LT.pAIpAILJLpAKpA14K.K.pAKpA3IpA9IpAI
pALJ2.J$LT.L.J.LJKJ2K14.RpAR2.J4.R8.2IJIJ2.J$LT.L.pA.L20.J3.J3.IpA.TpA
K11.J$LT.2IJ.L12.L2KpA3K.JpAT.J3.JS.2TJ11.J$LT5.pA7.LK.QTL.TpAK.JIpAJ
S.J3.pA4IpA4.L6.J$LT7SpA3KLKLpAKpAKpA.2TJ.2JL3.J3.J4.QR3.LIpAL3.J$LT
7.IpA.4pA.pAK.L2.IpAI2J.pA2.J3.J.L8KJ.pA3.J$LT7.R2.JKJK5.LJ.QR.J2S2.J
3.J.L8.J.L3.J$LT7.R8.QTLKJ4KpAK3.J3.J.LTS6.pA.pA3.J$LT7.R8SpAKpAIpA2I
J2.J2.pAJ2.pAJLpAIpA2IpA2IpAJ.L.pAIJ$LT16.L.LRS5.J2.JK2.JKL4.pAK3.pA.
pA.J.J$LT15.LpAL5.pA2.J2.IJ3.JL5.R3.J.IpAJ.J$LT6.L2KL4KpAK2L5.T2.J2.J
2KpA.J.L3.QRIpA.J.J.RSJ$LT6.L.2pA3.JLJKIpAIpAILT2.J2.3IJ.JLpAIpAIpAIpA
IpAJ.JK.RJ$LT6.L.JL3.JpA3.pAIpAILS2.J2.J4.JL.RS4.pAK2.2JQRJ$LT6.L.JL
3.LpA3.JKpAKL3.J2.JK3.JL8.R2.pAJRSJ$LT6.L.JK3.LJ2.3IpAJL3.J3.J3.J.L.
6QR2IJ.QRJ$LT6.L.LKpA2KLJpAKpA2KpA2K3.J3.J3.JLpAIpA4ILIpAIpAIpA.J$LT
6.L.L.pAIJL12.J3.J3.JL.RS4.IJ6.J$LT6.L.L.J2KL12.J3.J3.J14ILSJ$LT6.L.I
L2IJL12.J3.J3.J.ILILILILILIL.pARJ$LT10KpA2KpA2L10KpA2K.J.2IpA.12pA.L.
J$LT11.pA.3L.QT7.J.J.J.J.J.JLJLJLJLJLJL2.IJ$LT6.L2K2.J2KL2IpA6.L.pAKpA
KJIpAIpA.12pAIpA$LT.LpAK2.LIpA4.LK2RL6.L3.5J2.pAJIJIJIJIJIJ$LT.pA.pAK
pAKJpA2KpAKpA.RpAK6.L2.IpA3JpAKIJ$LT.IL6K.pAK.L10.L2.2J.J.3J$LT.LK2.L
KLK4.L10.pA2.JpAKpAIpA2J$LTpAK3.4pAKpA2KpA10.T5.J.2IJ$LT.JL3KJK2.LJ2K
10.T5.J$LT.J8KpA13.T5.J$LT24.T5.J$LT.27QT.pAOK3OK2OK5O115K6OKO2KOK2O
4K2OK$LT.27I2Q6M109IMI5MI5MIM3I3M3I2MI3M2I2MIJ$LT$L29QT.pA150K$30I2Q.
149IJ!
(54,35)c/6483817, and it needs 102 generations to stabilize.
Post Reply