Last active
April 6, 2019 07:08
-
-
Save thomasdunn/f7683821f5e5239736370ffe27a16e92 to your computer and use it in GitHub Desktop.
Wolfram 1D Automata (buggy but awesome)
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
var cellSize = 4; | |
var cellsX = getDrawingWidth() / cellSize; | |
var cellsY = getDrawingHeight() / cellSize; | |
var gen = []; | |
var genNext = []; | |
var g = 0; | |
var frames = 100; | |
function main() { | |
printLine(cellSize +' '+ cellsX +' '+ cellsY); | |
setBackgroundColor(white); | |
for (var i = 0; i < cellsX; i++) { | |
gen[i] = 0; | |
} | |
gen[floor(cellsX / 2)] = 1; | |
for (var j = 0; j < cellsY * frames; j++) { | |
drawGen(j % cellsY); | |
nextGen(); | |
delay(0.001); | |
} | |
} | |
function drawGen(g) { | |
for (var i = 1; i < cellsX - 1; i++) { | |
if (gen[i] == 0) { | |
setColor(white); | |
} | |
else { | |
setColor(black); | |
} | |
fillRectangle(i * cellSize, g * cellSize, cellSize, cellSize); | |
} | |
} | |
function nextGen() { | |
// rule 110 (decimal) = 01101110 (binary) | |
// 0 1 1 0 1 1 1 0 | |
// 111 110 101 100 011 010 001 000 | |
// rule 90 (decimal) = 01011010 (binary) | |
// 0 1 0 1 1 0 1 0 | |
// 111 110 101 100 011 010 001 000 | |
for (var i = 1; i < cellsX - 1; i++) { | |
var hood = neighborhoodString(i); | |
if (hood == '111' || hood == '101' || | |
hood == '010' || hood == '000') { | |
genNext[i] = 0; | |
} | |
else { | |
genNext[i] = 1; | |
} | |
} | |
var c = 0; | |
while (c++ < cellsX) { | |
gen[c] = genNext[c]; | |
} | |
} | |
function neighborhoodString(x) { | |
/* if (x == 0) { | |
return gen[cellsX-1] + '' + gen[x] + '' + gen[x+1]; | |
} | |
else if (x == cellsX - 1) { | |
return gen[x-1] + '' + gen[x] + '' + gen[0]; | |
} | |
else {*/ | |
return gen[x-1] + '' + gen[x] + '' + gen[x+1]; | |
//} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment