23-bit still life syntheses

For discussion of specific patterns or specific families of patterns in Conway's Game of Life, both newly-discovered and well-known.
vilc
Posts: 311
Joined: March 20th, 2024, 4:36 pm

Re: 23-bit still life syntheses

Post by vilc »

Solved xs23_4a95q826z0bdw23.

Code: Select all

x = 116, y = 35, rule = B3/S23
106bobo$106b2o$107bo$90bo$88bobo$89b2o2$obo3bo$b2o4bo6bo66bobo$bo3b3o
4b2o68b2o$13b2o67bo2$8bo103bo$8bobo99b2o$8b2o70bo30b2o$72bo8bo13b2o$
73b2o4b3o14bo$72b2o20bo$94b2o3$3bo2b2o83bo2b2o$2bobo2bo82bobo2bo$2b2ob
2o69b3o11b2ob2o$5bo72bo14bo$2b2o3bo69bo12b2o3bo$2bo3b2o82bo3b2o$3bo87b
o$2b2o86b2o14b3o$106bo7b2o$107bo5b2o$115bo$68b2o$67bobo$69bo!
Edit:
Solved xs23_0g8k4871zrm0db.

Code: Select all

x = 486, y = 47, rule = B3/S23
311bo$311bobo4bo$311b2o5bobo$318b2o3$274bo$272bobo$273b2o2$312bo$248bo
61b2o$249bo39bo21b2o$247b3o40bo$288b3o107bo$396bobo$397b2o2$2bo$obo
399bo$b2o79bo318bobo$82bobo73bo9bo232bobo$6bobo73b2o75b2o5b2o234bo$6b
2o64bo4bobo78b2o7b2o$bobo3bo65b2o3b2o389bo$2b2o68b2o4bo209b2ob2o177b2o
$2bo285b2ob2o176b2o3$161b2o125b2o112b2o$2bo2b2o71b2o81bobo124bobo111bo
2b2o63bo5b2o$2b4o72bo3b2o78bo3b2o121bo3b2o108b3obo63b2o3bo2b2o$7bo71b
4o80b4o123b4o114bo57b2o2b2o5b3obo$2b2ob2obo75bo83bo126bo107b2ob2obo55b
obo14bo$2bob2o2bo70b2ob2obo77b2ob2obo104bobo13b2ob2obo106bob2o2bo57bo
9b2ob2obo$7bo71bob2o2bo77bob2o2bo105b2o13bob2o2bo111bo68bob2o2bo$8b3o
73bo83bo106bo19bo113b3o70bo$10bo74b3o81b3o124b3o112bo71b3o$87bo83bo
126bo169b3o14bo$273bo196bo$273b2o194bo$272bobo3$274bo$274b2o$273bobo!
The last still-life to synthesise is xs23_g88m9icz1iu146 :

Code: Select all

x = 7, y = 10, rule = B3/S23
4bo$3bobo$3bo2bo$b2obobo$o2bobo$o2bo$b2o2bo$2bob2o$2bo$b2o!
vilc
Posts: 311
Joined: March 20th, 2024, 4:36 pm

Re: 23-bit still life syntheses

Post by vilc »

Solved xs23_g88m9icz1iu146 (only the last component is new).

Code: Select all

x = 315, y = 36, rule = B3/S23
293bo$242bobo49bo11bo$242b2o48b3o10bo$155bo87bo56bo4b3o$156bo8bobo131b
o$154b3o8b2o132b3o$166bo$220bo$160bobo58bo72bo$155bobo2b2o57b3o70bobo$
156b2o3bo131b2o$2bobo151bo$3b2o307bo$3bo12b2o90b2o38bo17b2o56b3o15b2o
57b2o9bobo$16bo91bo40bo16bo59bo15bo58bo10b2o$17bo91bo37b3o17bo57bo17bo
58bo$16b2o90b2o56b2o74b2o57b2o$15bo81bo9bo57bo70b2o3bo52bo2bo2bo$12bo
2bo82bo5bo2bo54bo2bo70bobo2bo52b4o2bo$12b3ob2o78b3o5b3ob2o52b3ob2o56b
3o11b3ob2o54b2ob2o6b2o$15bo2bo83b2o3bo2bo49b2o3bo2bo57bo10bo3bo2bo51bo
3bo2bo4b2o$bo12bo2bo83bobo2bo2bo49bo2bobo2bo57bo11b2obo2bo52b2obo2bo7b
o$2bo12b2o85bo4b2o51b2o3b2o74b2o57b2o$3o2$4b3o94b3o46b3o$4bo6b2o90bo
48bo$5bo4b2o90bo48bo$12bo2$165b2o$165bobo$165bo$221b2o$220bobo$222bo!
Project completed!

Edit:
1G reduction :

Code: Select all

x = 25, y = 21, rule = B3/S23
2bo$obo7bo$b2o6bo$9b3o3$4bo$2bobo$3b2o2$22bo$11b2o9bobo$11bo10b2o$12bo
$11b2o$4bo2bo2bo$4b4o2bo$8b2ob2o6b2o$6bo3bo2bo4b2o$6b2obo2bo7bo$10b2o!
Edit 2:
I confirmed using my C++ version of Shinjuku that my local version of the database contains a synthesis for each strict 23-bits still-life (list generated with simeks' program). Can someone double-check that with regular Shinjuku (after downloading contributions from Catagolue https://catagolue.hatsya.com/textsample ... /synthesis, regular Shinjuku https://gitlab.com/parclytaxel/Shinjuku and mvr's Shinjuku https://gitlab.com/mvr2/Shinjuku/-/tree ... mp/autogen)? If there are missing syntheses, don't panic and post the apgcodes here. My version of Shinjuku is quite a mess and there might be a few results that I forgot to upload to Catagolue.

Catagolue should process the 6 last syntheses within a few hours, but the bulk of syntheses is still not uploaded. It is probably not desirable to have them all on Catagolue, since most syntheses are trivial and/or suboptimal and there are more than 1,000,000 of them, which could overload the Catagolue table. I suggest to upload only the most expensive ones, and I will try to make available here soon a bundle with all syntheses.

Edit 3:
I tried to make all the syntheses fit in a single archive but there are too many of them to post here (24MB compressed!). Instead I can provide the most important steps of each nontrivial synthesis. I built the following archive by:
- collecting every step of all xs23 syntheses in Shinjuku
- removing all the steps that lead to "known" strict still-lifes, namely those with 4 to 22 bits
- removing all the steps that came from a "known" strict still-life, since those are most of the time boring and easy to rediscover with transfer.py/transfer.cpp/stomp
I also checked all the lines for correctness with regular Shinjuku. There were no incorrect component in the recipes.
Attachments
23_bits_strict_syntheses_reduced.7z
(2.72 MiB) Downloaded 26 times
Last edited by vilc on December 28th, 2025, 4:57 am, edited 2 times in total.
User avatar
LuveelVoom
Posts: 529
Joined: April 27th, 2022, 7:59 pm

Re: 23-bit still life syntheses

Post by LuveelVoom »

:D :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D

gg!
User avatar
ThePlayzr
Posts: 793
Joined: April 19th, 2025, 1:33 am
Location: Australia
Contact:

Re: 23-bit still life syntheses

Post by ThePlayzr »

Just noticed this was finished
:D :D :D :D :D :D :D :D :D :D :D :D
Good job vlic, Chris857, mvr, EvinZL, WhiteHawk, ENORMOUS_NAME, pifricted, KtT, dvgrn, May13, ElijahKen, AGreason, Kazyan, Anivec, Goldtiger997, Timelord Missionary, Sylvani, hkoenig, and FlutterWithKSparkler!
Please visit my rules (found on my wiki page) and contribute!
User:ThePlayzr
I have LLS and qfind.
My avatar is the 80th most common pattern, and I have the 80th most posts on the forums.
hkoenig
Posts: 299
Joined: June 20th, 2009, 11:40 am

Re: 23-bit still life syntheses

Post by hkoenig »

Where is the .sjk file format documented?
vilc
Posts: 311
Joined: March 20th, 2024, 4:36 pm

Re: 23-bit still life syntheses

Post by vilc »

hkoenig wrote: December 30th, 2025, 11:08 am Where is the .sjk file format documented?
There is some documentation at https://gitlab.com/parclytaxel/Shinjuku ... master/doc.
To summarize, a .sjk file is a list of shinjuku lines, each describing one step (generally in no particular order) with the following structure :

Code: Select all

{input apgcode}[+{phase}]>{encoded glider set}>{output apgcode}
Where {} indicates a parameter and [] an optional part. The tricky part is the canonical encoding of the glider sets (described in https://gitlab.com/parclytaxel/Shinjuku ... sets.ipynb), but if you only want to decode you don't have to worry about canonicalisation.
An encoded glider set is of the form :

Code: Select all

{nw salvo}/{ne salvo}/{se salvo}/{sw salvo}@{transformation}
Where each salvo is encoded as :

Code: Select all

{t1} {l1} {t2} {l2} ...
with "ti" the timing of the i-th glider and "li" its lane, in a reference frame that might be too dependant on how lifelib works (for example with pattern centering and rotation) to be described simply.
The transformation encoding is as follows

Code: Select all

{time}{orientation letter} {shift x} {shift y}
The mapping of letters to orientations is defined in "shinjuku/transforms.py" (again, exact definitions very dependant on lifelib's interface).

If you need to convert shinjuku lines to other formats, the easiest might be to use rle format as an intermediate. In python :

Code: Select all

from shinjuku.transcode import realise_comp
rle_string = realise_comp(shinjuku_line).rle_string()
Last edited by vilc on December 31st, 2025, 1:57 pm, edited 1 time in total.
hkoenig
Posts: 299
Joined: June 20th, 2009, 11:40 am

Re: 23-bit still life syntheses

Post by hkoenig »

a reference frame that might too dependant on how lifelib works
exact definitions very dependant on lifelib's interface
In other words, it's not documented, but depends on the behavior of lifelib, which itself seems to be poorly documented.

That makes it a bit difficult to use in any circumstance in which lifelib cannot be used.

Oh, well...
mvr
Posts: 132
Joined: November 8th, 2009, 4:58 am

Re: 23-bit still life syntheses

Post by mvr »

I wrote a little on my contributions to the project: https://mvr.github.io/posts/xs23.html
hkoenig wrote: December 30th, 2025, 6:34 pm That makes it a bit difficult to use in any circumstance in which lifelib cannot be used.
It's possible though, I implemented a LifeAPI parser for SJK lines here: https://github.com/mvr/LifeAPI/blob/mas ... ponent.hpp.
Post Reply