957

This began as a quest but ended as an odyssey. Quest for Tetris Processor, 2,940,928 x 10,295,296 The pattern file, in all its glory, can be found here, viewable in-browser here. This project is the culmination of the efforts of many users over the course of the past 1 & 1/2 years. Although the composition of the team has varied over time, the ...


689

Part 2: OTCA Metapixel and VarLife OTCA Metapixel (Source) The OTCA Metapixel is a construct in Conway's Game of Life that can be used to simulate any Life-like cellular automata. As the LifeWiki (linked above) says, The OTCA metapixel is a 2048 × 2048 period 35328 unit cell that was constructed by Brice Due... It has many advantages... including the ...


659

Part 3: Hardware With our knowledge of logic gates and the general structure of the processor, we can start designing all the components of the computer. Demultiplexer A demultiplexer, or demux, is a crucial component to the ROM, RAM, and ALU. It routes an input signal to one of the many output signals based on some given selector data. It is composed of ...


630

Part 4: QFTASM and Cogol Architecture Overview In short, our computer has a 16-bit asynchronous RISC Harvard architecture. When building a processor by hand, a RISC (reduced instruction set computer) architecture is practically a requirement. In our case, this means that the number of opcodes is small and, much more importantly, that all instructions are ...


614

Part 5: Assembly, Translation, and the Future With our assembly program from the compiler, it's time to assemble a ROM for the Varlife computer, and translate everything into a big GoL pattern! Assembly Assembling the assembly program into a ROM is done in much the same way as in traditional programming: each instruction is translated into a binary ...


590

Part 6: The Newer Compiler to QFTASM Although Cogol is sufficient for a rudimentary Tetris implementation, it is too simple and too low-level for general-purpose programming at an easily readable level. We began work on a new language in September 2016. Progress on the language was slow due to hard to understand bugs as well as real life. We built a low ...


82

Penrose rhombii in Python, +97 points I chose a penrose tiling composed of two different shaped rhombuses, meeting 3-8 per vertex. This penrose tiling is proven aperiodic elsewhere. The simulation is graphical (via pygame) and interactive. Comments indicate two places in the code where algorithm implementation was taken from another source. There are many ...


56

R, 378 343 297 291 bytes As usually, the user supplies his/her input via scan() (I already used the variable t, so let us take z instead), so the second line should be launched separately, and then the rest: e=numeric a=1%*%scan() x=1 o=a>3 n=1 while(any(o)){ v=which(o,T) if(any(v==1)){a=rbind(e(n+2),cbind(e(n),a,e(n)),e(n+2));x=x+1;n=n+2;v=which(a>3,...


49

C++ w/ OpenGL (+17) So I tried 3-Isohedral convex pentagon grid. Works for me ;) Standard game of life rules apply, except the grid is not infinite - there are border cells outside the image. 30% of the cells are initially alive. This is how the grid looks like: The live version: Blue cells are alive, white are dead. Red cells just died, green were just ...


38

Go, ? points So rather than pin myself down to a particular tiling, I wrote a program that takes a gif or png of a tiling and runs life on it. The gif/png must use a single color for all the tiles. package main import ( "flag" "image" "image/color" "image/gif" "image/png" "math/rand" "os" "strings" ) func main() { ...


36

Latching Clock Score - 53,508 (of which only 36,828 is actively used due to the L-shaped design) High Quality recording - https://1drv.ms/u/s!ArQEzxH5nQLKhvt_HHfcqQKo2FODLQ Golly pattern - https://1drv.ms/u/s!ArQEzxH5nQLKhvwAmwCY-IPiBuBmBw Guiding Principles - Since this was my first time using a cellular automaton I avoided stringing together large ...


34

Wolfram Language (Mathematica), 92 91 bytes Print@@@CellularAutomaton[{7049487784884,{3,{a={0,3,0},3-2a/3,a}},{1,1}},{j={{1}},0},{j#}]& A perfect challenge to use Mathematica's builtin CellularAutomaton! Try it online! Empty = 0, Awake = 1, Sleeping = 2 Animation of the first 256 iterations (white = empty, gray = awake, black = sleeping): ...


33

Java - 11 (ish) points Comes with fully (mostly) functioning interactive environment! EDIT Fatal flaw discovered :( The path of the alive regions is bounded by the area it is originally formed in. In order to pass the square - double-pentagon barrier, one must have a pre-shaded region on the other side. This is because each shape below it only touches 2 ...


30

Wolfram Language (Mathematica), 15 bytes 2#-#~Erosion~1& Try it online! Or (39 bytes): MorphologicalPerimeter[#,Padding->1]+#& Try it online! What else would we expect from Mathematica? Characters used are {Astan -> 0, Blandia -> 1, Trench -> 2}.


25

Python I place multiple points on a metatile, which is then copied periodically in a rectangular or hexagonal tiling (the metatiles are allowed to overlap). From the set of all points i then compute the Voronoi diagram which makes up my grid. Some older examples Random graph, the Delaunay trinagulation is shown which is also used internally to find the ...


21

TI-BASIC, 96 bytes (87 for non-competing entry) For your TI-84 series graphing calculator (!). This was quite a challenge, because there is no easy way to write a buffered graphics routine (definitely nothing built in), and the graph screen has only four relevant graphics commands: Pxl-On(), Pxl-Off(), Pxl-Change(), and pxl-Test(). Uses every accessible ...


21

Javascript [25+?] http://jsfiddle.net/Therm/dqb2h2oc/ House tessellations! There are two shapes: "House" and "Upsidedown House", each with 7 neighbors. Currently I have a score of 25. still life : +2 2-stage oscillator "beacon" : +3 (Credit to isaacg) Spaceship "Toad" : +10 (Credit to isaacg) Glider : +10 ...


21

Mathematica, 133 bytes FromCharacterCode@Nest[BlockMap[If[#>126,#~Mod~127+32,#]&[BitXor[#,#2]~BitOr~#3]&@@#&,ArrayPad[#,1,32],3,1]&,ToCharacterCode@#,#2+1]& It would be nice to make a CellularAutomaton[] solution work, but I kept coming up short. Anyone? Edit: some pretty pictures (click to enlarge) plotCA[str_, n_] := ArrayPlot[...


20

Javascript [27+?] http://jsfiddle.net/Therm/5n53auja/ Round 2! Now with hexagons, squares, and triangles. And interactivity This version supports clicking tiles to toggle their state, for you pattern hunters out there. Note: Some of the click handling may be a bit wonky, especially for low values of s, as click events are tracked as integers but ...


19

Mathematica - 333 Features: Interactive interface: click cells to make your patterns Nice grid Buttons: RUN, PAUSE, CLEAR The code is below. Manipulate[x=Switch[run,1,x,2,CellularAutomaton[{224,{2,{{2,2,2},{2,1,2},{2,2,2}}}, {1,1}},x],3,Table[0,{k,40},{j,40}]];EventHandler[Dynamic[tds=Reverse[Transpose[x]]; ArrayPlot[tds,Mesh->True]],{"MouseClicked":&...


17

Ruby, 113 characters c=[0]*41 eval"[#{gets}].map{|i|c[i]=1}"+' c=(0..39).map{|x|putc" X"[u=c[x]] 110[4*c[x-1]+2*u+c[x+1]]}<<0;puts'*40 Takes input on stdin. To use a different rule, simply replace the 110 in the last line with whatever rule you want to try. Example: $ ruby 110.rb <<< 38,39 XX ...


16

Cairo pentagonal tiling (+ generic framework), 17+ points This tiling is surprisingly easy to draw: the key is that the only irrational number which is important for drawing it, sqrt(3), is very close to the rational number 7/4, which has the added bonus that if you subtract 1 from the numerator and denominator you get 6/3 = 2, so that the non-axis-aligned ...


16

Rhombille (30+ points) This grid has quite high connectivity (each cell has 10 neighbours), and curiously this seems to contribute more effectively to birth than to death. Most random grids seem to trigger infinite growth (25 points); e.g. this 5-cell starting position: evolves over 300 generations into something enormous: and the population grows ...


15

C 1063 characters As a challenge, I did this in C using the golf-unfriendly Windows API for real time IO. If capslock is on, the simulation will run. It will stay still if capslock is off. Draw patterns with the mouse; left click revives cells and right click kills cells. #include <windows.h> #include<process.h> #define K ][(x+80)%20+(y+80)%20*...


14

Rhombitrihexagonal tiling, 17+ points As requested by Martin Büttner. Still life (2 points): Oscillators of periods (clockwise from top-left) 2, 4, 5, 6, 11 (15 points): In general an oscillator has a set of cells which change (the core), a set of cells which neighbour the core (the cladding), and a set of cells which keep the cladding from changing (the ...


14

JavaScript (ES6), 66 62 bytes a=>a.map(_=>a=a.map((c,i)=>c||Math.max(a[i-1]|0,a[i+1]|0)))&&a Explanation a=> // a = input as array of numbers a.map(_=> // loop for the length of a, this ensures the end is always reached a=a.map((c,i)=> // update a after to the result of t, for each cell c of index i ...


13

C++ up to N=6 3x3 answer 3: 111 000 000 4x4 answer 10: 1110 0010 1100 0000 5x5 answer 52: 11010 10000 11011 10100 00000 6x6 ...


13

Aperiodic Labyrinth tiling (45+ points) This uses the generic framework from my earlier answer. Still life (2 points): Oscillator (3 points): This oscillator is extremely common, turning up in the result of most random starting points. Code: import java.awt.Point; import java.util.*; public class LabyrinthTiling implements Tiling<String> { ...


13

Penrose-esque projection of 7-dimensional lattice (64+ points) This is similar to the Penrose tiling (to get a Penrose tiling replace N = 7 with N = 5) and qualifies for the aperiodic bonus (40 points). Still life (2 points): trivial because the protocells are convex, so any vertex of order 3 or more suffices. (Pick all of its faces if it is order 3, or ...


13

MATL, 55 53 48 43 42 bytes Inspired by @flawr's answer. Graphical output: 0i:"Gto~+XytP*+t"t4=t1Y6Z+b+w~*]]tat3$)1YG Try it at MATL Online!. It takes about 10 seconds for input 30. You may need to refresh the page and press "Run" again if it doesn't work. Here's an example result for input 100: ASCII output (43 bytes): 0i:"Gto~+XytP*+t"t4=t1Y6Z+b+w~*]]...


Only top voted, non community-wiki answers of a minimum length are eligible