Last active
November 30, 2021 04:16
-
-
Save louisswarren/aaec24795b9463957d01508632f6fb66 to your computer and use it in GitHub Desktop.
Cellular automata
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<svg width="1450.4328767123288" height="1024" viewBox="-259.0 -87.0 518 366.0" xmlns="http://www.w3.org/2000/svg"> | |
<rect x="-248.0" y="-64" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-232.0" y="-64" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-216.0" y="-64" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-232.0" y="-48" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-184.0" y="-64" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-168.0" y="-64" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-152.0" y="-64" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-168.0" y="-48" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-120.0" y="-64" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-104.0" y="-64" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-88.0" y="-64" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-104.0" y="-48" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-56.0" y="-64" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-40.0" y="-64" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-24.0" y="-64" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-40.0" y="-48" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="8.0" y="-64" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="24.0" y="-64" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="40.0" y="-64" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="24.0" y="-48" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="72.0" y="-64" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="88.0" y="-64" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="104.0" y="-64" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="88.0" y="-48" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="136.0" y="-64" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="152.0" y="-64" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="168.0" y="-64" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="152.0" y="-48" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="200.0" y="-64" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="216.0" y="-64" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="232.0" y="-64" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="216.0" y="-48" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-8.0" y="0" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-24.0" y="16" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-8.0" y="16" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="8.0" y="16" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-40.0" y="32" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-24.0" y="32" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-8.0" y="32" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="8.0" y="32" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="24.0" y="32" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-56.0" y="48" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-40.0" y="48" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-24.0" y="48" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-8.0" y="48" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="8.0" y="48" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="24.0" y="48" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="40.0" y="48" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-72.0" y="64" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-56.0" y="64" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-40.0" y="64" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-24.0" y="64" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-8.0" y="64" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="8.0" y="64" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="24.0" y="64" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="40.0" y="64" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="56.0" y="64" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-88.0" y="80" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-72.0" y="80" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-56.0" y="80" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-40.0" y="80" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-24.0" y="80" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-8.0" y="80" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="8.0" y="80" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="24.0" y="80" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="40.0" y="80" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="56.0" y="80" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="72.0" y="80" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-104.0" y="96" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-88.0" y="96" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-72.0" y="96" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-56.0" y="96" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-40.0" y="96" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-24.0" y="96" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-8.0" y="96" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="8.0" y="96" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="24.0" y="96" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="40.0" y="96" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="56.0" y="96" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="72.0" y="96" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="88.0" y="96" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-120.0" y="112" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-104.0" y="112" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-88.0" y="112" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-72.0" y="112" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-56.0" y="112" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-40.0" y="112" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-24.0" y="112" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-8.0" y="112" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="8.0" y="112" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="24.0" y="112" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="40.0" y="112" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="56.0" y="112" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="72.0" y="112" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="88.0" y="112" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="104.0" y="112" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-136.0" y="128" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-120.0" y="128" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-104.0" y="128" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-88.0" y="128" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-72.0" y="128" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-56.0" y="128" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-40.0" y="128" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-24.0" y="128" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-8.0" y="128" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="8.0" y="128" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="24.0" y="128" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="40.0" y="128" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="56.0" y="128" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="72.0" y="128" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="88.0" y="128" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="104.0" y="128" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="120.0" y="128" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-152.0" y="144" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-136.0" y="144" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-120.0" y="144" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-104.0" y="144" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-88.0" y="144" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-72.0" y="144" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-56.0" y="144" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-40.0" y="144" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-24.0" y="144" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-8.0" y="144" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="8.0" y="144" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="24.0" y="144" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="40.0" y="144" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="56.0" y="144" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="72.0" y="144" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="88.0" y="144" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="104.0" y="144" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="120.0" y="144" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="136.0" y="144" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-168.0" y="160" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-152.0" y="160" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-136.0" y="160" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-120.0" y="160" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-104.0" y="160" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-88.0" y="160" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-72.0" y="160" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-56.0" y="160" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-40.0" y="160" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-24.0" y="160" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-8.0" y="160" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="8.0" y="160" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="24.0" y="160" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="40.0" y="160" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="56.0" y="160" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="72.0" y="160" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="88.0" y="160" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="104.0" y="160" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="120.0" y="160" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="136.0" y="160" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="152.0" y="160" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-184.0" y="176" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-168.0" y="176" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-152.0" y="176" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-136.0" y="176" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-120.0" y="176" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-104.0" y="176" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-88.0" y="176" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-72.0" y="176" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-56.0" y="176" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-40.0" y="176" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-24.0" y="176" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-8.0" y="176" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="8.0" y="176" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="24.0" y="176" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="40.0" y="176" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="56.0" y="176" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="72.0" y="176" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="88.0" y="176" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="104.0" y="176" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="120.0" y="176" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="136.0" y="176" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="152.0" y="176" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="168.0" y="176" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-200.0" y="192" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-184.0" y="192" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-168.0" y="192" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-152.0" y="192" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-136.0" y="192" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-120.0" y="192" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-104.0" y="192" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-88.0" y="192" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-72.0" y="192" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-56.0" y="192" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-40.0" y="192" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-24.0" y="192" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-8.0" y="192" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="8.0" y="192" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="24.0" y="192" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="40.0" y="192" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="56.0" y="192" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="72.0" y="192" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="88.0" y="192" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="104.0" y="192" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="120.0" y="192" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="136.0" y="192" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="152.0" y="192" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="168.0" y="192" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="184.0" y="192" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-216.0" y="208" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-200.0" y="208" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-184.0" y="208" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-168.0" y="208" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-152.0" y="208" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-136.0" y="208" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-120.0" y="208" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-104.0" y="208" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-88.0" y="208" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-72.0" y="208" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-56.0" y="208" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-40.0" y="208" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-24.0" y="208" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-8.0" y="208" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="8.0" y="208" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="24.0" y="208" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="40.0" y="208" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="56.0" y="208" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="72.0" y="208" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="88.0" y="208" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="104.0" y="208" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="120.0" y="208" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="136.0" y="208" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="152.0" y="208" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="168.0" y="208" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="184.0" y="208" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="200.0" y="208" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-232.0" y="224" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-216.0" y="224" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-200.0" y="224" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-184.0" y="224" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-168.0" y="224" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-152.0" y="224" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-136.0" y="224" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-120.0" y="224" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-104.0" y="224" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-88.0" y="224" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-72.0" y="224" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-56.0" y="224" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-40.0" y="224" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-24.0" y="224" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-8.0" y="224" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="8.0" y="224" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="24.0" y="224" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="40.0" y="224" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="56.0" y="224" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="72.0" y="224" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="88.0" y="224" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="104.0" y="224" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="120.0" y="224" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="136.0" y="224" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="152.0" y="224" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="168.0" y="224" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="184.0" y="224" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="200.0" y="224" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="216.0" y="224" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-248.0" y="240" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-232.0" y="240" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-216.0" y="240" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-200.0" y="240" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-184.0" y="240" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-168.0" y="240" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-152.0" y="240" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-136.0" y="240" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-120.0" y="240" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-104.0" y="240" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-88.0" y="240" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-72.0" y="240" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-56.0" y="240" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-40.0" y="240" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="-24.0" y="240" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="-8.0" y="240" width="16" height="16" rx="0" ry="0" fill="black" stroke="grey" stroke-width="1" /> | |
<rect x="8.0" y="240" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="24.0" y="240" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="40.0" y="240" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="56.0" y="240" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="72.0" y="240" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="88.0" y="240" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="104.0" y="240" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="120.0" y="240" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="136.0" y="240" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="152.0" y="240" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="168.0" y="240" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="184.0" y="240" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="200.0" y="240" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="216.0" y="240" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
<rect x="232.0" y="240" width="16" height="16" rx="0" ry="0" fill="white" stroke="grey" stroke-width="1" /> | |
</svg> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from collections import defaultdict | |
import sys | |
from svg import * | |
def log(*a, **k): | |
print(*a, **k, file=sys.stderr) | |
ROWS = 16 | |
STOP_AFTER = ROWS | |
COLS = ROWS*2-1 | |
BOXSIZE = 16 | |
HEADER_HEIGHT = BOXSIZE * ROWS * (3/4) | |
NOM_WIDTH = COLS * BOXSIZE + 1 + 20 | |
NOM_HEIGHT = NOM_WIDTH // 2 ** 0.5 | |
NOM_YBIAS = NOM_HEIGHT - (ROWS * BOXSIZE + 10) | |
IMG_HEIGHT = 1024 | |
IMG_WIDTH = IMG_HEIGHT / NOM_HEIGHT * NOM_WIDTH | |
RULE_GAP = 2 | |
RULE_MGAP = 3 | |
RULE_MARGIN = 2 | |
if len(sys.argv) > 1: | |
rule = int(sys.argv[1]) | |
else: | |
rule = 30 | |
# Basic header | |
svg_header() | |
svg_open(width=IMG_WIDTH, height=IMG_HEIGHT, | |
x_bias=-(NOM_WIDTH-1)/2-1, y_bias=-NOM_YBIAS+12, | |
xw=NOM_WIDTH+1, yh=NOM_HEIGHT+1) | |
def draw_box(x, y, value=None, scale=1): | |
svg_rect((x*scale, y*scale), scale*BOXSIZE, scale*BOXSIZE, | |
fill="black" if value else "white", | |
stroke="grey", stroke_width=scale) | |
def draw_cell(row, col, value=None, scale=1): | |
draw_box(BOXSIZE*(col-0.5), BOXSIZE*row, | |
value=value, scale=scale) | |
#def draw_rule(x, y, n): | |
# scale = COLS / (4*3 + 3*RULE_GAP + 2*RULE_MARGIN) | |
# draw_box((x - 1.5)*BOXSIZE, y * BOXSIZE , n & 4 != 0 , scale) | |
# draw_box((x - 0.5)*BOXSIZE, y * BOXSIZE , n & 2 != 0 , scale) | |
# draw_box((x + 0.5)*BOXSIZE, y * BOXSIZE , n & 1 != 0 , scale) | |
# draw_box((x - 0.5)*BOXSIZE, (y + 1) * BOXSIZE, rule & (1 << n) != 0, scale) | |
# | |
#draw_rule(-(3 + RULE_MGAP)/2 - 3 - RULE_GAP, -7, 7) | |
#draw_rule(-(3 + RULE_MGAP)/2 , -7, 6) | |
#draw_rule( (3 + RULE_MGAP)/2 , -7, 5) | |
#draw_rule( (3 + RULE_MGAP)/2 + 3 + RULE_GAP, -7, 4) | |
#draw_rule(-(3 + RULE_MGAP)/2 - 3 - RULE_GAP, -3, 3) | |
#draw_rule(-(3 + RULE_MGAP)/2 , -3, 2) | |
#draw_rule( (3 + RULE_MGAP)/2 , -3, 1) | |
#draw_rule( (3 + RULE_MGAP)/2 + 3 + RULE_GAP, -3, 0) | |
def draw_rule(row, col, n): | |
draw_cell(row, col - 1, n & 4 != 0) | |
draw_cell(row, col, n & 2 != 0) | |
draw_cell(row, col + 1, n & 1 != 0) | |
draw_cell(row + 1, col, rule & (1 << n) != 0) | |
draw_rule(-4, -14, 7) | |
draw_rule(-4, -10, 6) | |
draw_rule(-4, -6, 5) | |
draw_rule(-4, -2, 4) | |
draw_rule(-4, 2, 3) | |
draw_rule(-4, 6, 2) | |
draw_rule(-4, 10, 1) | |
draw_rule(-4, 14, 0) | |
cells = defaultdict(lambda: False) | |
cells[(0,0)] = True | |
draw_cell(0, 0, cells[(0,0)]) | |
for j in range(1, ROWS): | |
if j >= STOP_AFTER: | |
for i in range(-j, j+1): | |
draw_cell(j, i, False) | |
continue | |
for i in range(-j, j+1): | |
prev = 4 * cells[(j-1, i-1)] | |
prev += 2 * cells[(j-1, i )] | |
prev += 1 * cells[(j-1, i+1)] | |
cells[(j,i)] = rule & (1 << prev) != 0 | |
draw_cell(j, i, cells[(j,i)]) | |
# Footer | |
svg_close() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.PHONY: test | |
test: 027.png | |
.PHONY: all | |
all: | |
$(MAKE) -j 4 $$(for i in $$(seq -w 0 255); do echo -n "$$i.png "; done) | |
%.png: %.svg | |
convert $^ $@ | |
%.svg: cell.py svg.py | |
python3 $< $* > $@ | |
.PHONY: clean | |
clean: | |
rm -f *.png *.svg *.mp4 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def xml(tag, _xml_tag_is_a_singleton=True, **options): | |
s = f'<{tag}' | |
kw_attrib = lambda x: x.replace('_', '-') | |
if options: | |
s += ' ' | |
s += ' '.join(f'{kw_attrib(k)}="{str(v)}"' for k, v in options.items()) | |
if _xml_tag_is_a_singleton: | |
s += ' />' | |
else: | |
s += '>' | |
print(s) | |
def xml_open(*args, **kwargs): | |
xml(*args, **kwargs, _xml_tag_is_a_singleton=False) | |
def xml_close(tag): | |
print(f'</{tag}>') | |
def svg_header(): | |
'<?xml version="1.0" encoding="UTF-8" standalone="no"?>' | |
def svg_open(width, height, x_bias, y_bias, xw, yh): | |
vb = f'{x_bias} {y_bias} {xw} {yh}' | |
ns = 'http://www.w3.org/2000/svg' | |
xml_open('svg', width=width, height=height, viewBox=vb, xmlns=ns) | |
def svg_close(): | |
xml_close('svg') | |
def svg_poly(*points, **opts): | |
point_str = ' '.join(f'{x},{y}' for x, y in points) | |
xml('polyline', points=point_str, **opts) | |
def svg_circle(point, radius, **opts): | |
xml('circle', cx=point[0], cy=point[1], r=radius, **opts) | |
def svg_line(p1, p2, **opts): | |
xml('line', x1=p1[0], y1=p1[1], x2=p2[0], y2=p2[1], **opts) | |
def svg_rect(p, width, height, x_radius=0, y_radius=0, **opts): | |
xml('rect', x=p[0], y=p[1], width=width, height=height, | |
rx=x_radius, ry=y_radius, **opts) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment