Created
January 25, 2017 15:12
-
-
Save VictorTaelin/3ae75e17ecb4400472e0878194694ddf to your computer and use it in GitHub Desktop.
This file contains 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
{"r":16801,"rule":[1,2,0,1,0,0,2,1,2],"len":63768} | |
{"r":8481,"rule":[0,1,0,2,2,1,2,0,1],"len":63768} | |
{"r":11871,"rule":[0,0,2,1,2,0,1,2,1],"len":63768} | |
{"r":10401,"rule":[0,2,0,1,2,0,2,1,1],"len":63768} | |
{"r":14881,"rule":[1,1,0,2,0,1,2,0,2],"len":63768} | |
{"r":8703,"rule":[0,0,1,1,2,2,2,0,1],"len":63768} | |
{"r":5231,"rule":[2,0,2,1,1,0,1,2,0],"len":63768} | |
{"r":14881,"rule":[1,1,0,2,0,1,2,0,2],"len":63768} | |
{"r":8481,"rule":[0,1,0,2,2,1,2,0,1],"len":63768} | |
{"r":5231,"rule":[2,0,2,1,1,0,1,2,0],"len":63768} | |
{"r":10401,"rule":[0,2,0,1,2,0,2,1,1],"len":63768} | |
{"r":2063,"rule":[2,0,1,1,1,2,2,0,0],"len":63768} | |
{"r":16801,"rule":[1,2,0,1,0,0,2,1,2],"len":63768} | |
{"r":11871,"rule":[0,0,2,1,2,0,1,2,1],"len":63768} | |
{"r":8703,"rule":[0,0,1,1,2,2,2,0,1],"len":63768} | |
{"r":18475,"rule":[1,2,0,0,0,1,1,2,2],"len":63768} | |
{"r":17803,"rule":[1,0,1,2,0,1,0,2,2],"len":63768} | |
{"r":14881,"rule":[1,1,0,2,0,1,2,0,2],"len":63768} | |
{"r":4763,"rule":[2,0,1,2,1,1,0,2,0],"len":63768} | |
{"r":16801,"rule":[1,2,0,1,0,0,2,1,2],"len":63768} | |
{"r":8481,"rule":[0,1,0,2,2,1,2,0,1],"len":63768} | |
{"r":5435,"rule":[2,2,0,0,1,1,1,2,0],"len":63768} | |
{"r":14881,"rule":[1,1,0,2,0,1,2,0,2],"len":63768} | |
{"r":16801,"rule":[1,2,0,1,0,0,2,1,2],"len":63768} | |
{"r":4763,"rule":[2,0,1,2,1,1,0,2,0],"len":63768} | |
{"r":8481,"rule":[0,1,0,2,2,1,2,0,1],"len":63768} | |
{"r":17803,"rule":[1,0,1,2,0,1,0,2,2],"len":63768} | |
{"r":18475,"rule":[1,2,0,0,0,1,1,2,2],"len":63768} | |
{"r":10401,"rule":[0,2,0,1,2,0,2,1,1],"len":63768} | |
{"r":5435,"rule":[2,2,0,0,1,1,1,2,0],"len":63768} | |
{"r":11871,"rule":[0,0,2,1,2,0,1,2,1],"len":63768} | |
{"r":2063,"rule":[2,0,1,1,1,2,2,0,0],"len":63768} | |
{"r":14881,"rule":[1,1,0,2,0,1,2,0,2],"len":63768} | |
{"r":8703,"rule":[0,0,1,1,2,2,2,0,1],"len":63768} | |
{"r":5231,"rule":[2,0,2,1,1,0,1,2,0],"len":63768} | |
{"r":8481,"rule":[0,1,0,2,2,1,2,0,1],"len":63768} | |
{"r":16801,"rule":[1,2,0,1,0,0,2,1,2],"len":63768} | |
{"r":10401,"rule":[0,2,0,1,2,0,2,1,1],"len":63768} | |
{"r":16801,"rule":[1,2,0,1,0,0,2,1,2],"len":63768} | |
{"r":18475,"rule":[1,2,0,0,0,1,1,2,2],"len":63768} | |
{"r":8481,"rule":[0,1,0,2,2,1,2,0,1],"len":63768} | |
{"r":5435,"rule":[2,2,0,0,1,1,1,2,0],"len":63768} | |
{"r":10401,"rule":[0,2,0,1,2,0,2,1,1],"len":63768} | |
{"r":14881,"rule":[1,1,0,2,0,1,2,0,2],"len":63768} | |
{"r":17803,"rule":[1,0,1,2,0,1,0,2,2],"len":63768} | |
{"r":4763,"rule":[2,0,1,2,1,1,0,2,0],"len":63768} | |
{"r":8703,"rule":[0,0,1,1,2,2,2,0,1],"len":63768} | |
{"r":11871,"rule":[0,0,2,1,2,0,1,2,1],"len":63768} | |
{"r":18475,"rule":[1,2,0,0,0,1,1,2,2],"len":63768} | |
{"r":5435,"rule":[2,2,0,0,1,1,1,2,0],"len":63768} | |
{"r":5231,"rule":[2,0,2,1,1,0,1,2,0],"len":63768} | |
{"r":17803,"rule":[1,0,1,2,0,1,0,2,2],"len":63768} | |
{"r":4763,"rule":[2,0,1,2,1,1,0,2,0],"len":63768} | |
{"r":2063,"rule":[2,0,1,1,1,2,2,0,0],"len":63768} | |
... start with all zeroes, one 1 | |
{"r":17803,"rule":[1,0,1,2,0,1,0,2,2],"len":63768} | |
{"r":10401,"rule":[0,2,0,1,2,0,2,1,1],"len":63768} | |
{"r":8481,"rule":[0,1,0,2,2,1,2,0,1],"len":63768} | |
{"r":18475,"rule":[1,2,0,0,0,1,1,2,2],"len":63768} | |
{"r":17803,"rule":[1,0,1,2,0,1,0,2,2],"len":63768} | |
{"r":10401,"rule":[0,2,0,1,2,0,2,1,1],"len":63768} | |
{"r":8481,"rule":[0,1,0,2,2,1,2,0,1],"len":63768} | |
{"r":18475,"rule":[1,2,0,0,0,1,1,2,2],"len":63768} | |
{"r":17803,"rule":[1,0,1,2,0,1,0,2,2],"len":63768} | |
{"r":10401,"rule":[0,2,0,1,2,0,2,1,1],"len":63768} | |
{"r":8481,"rule":[0,1,0,2,2,1,2,0,1],"len":63768} | |
{"r":18475,"rule":[1,2,0,0,0,1,1,2,2],"len":63768} | |
{"r":17803,"rule":[1,0,1,2,0,1,0,2,2],"len":63768} | |
{"r":10401,"rule":[0,2,0,1,2,0,2,1,1],"len":63768} | |
{"r":8481,"rule":[0,1,0,2,2,1,2,0,1],"len":63768} | |
{"r":18475,"rule":[1,2,0,0,0,1,1,2,2],"len":63768} | |
{"r":17803,"rule":[1,0,1,2,0,1,0,2,2],"len":63768} | |
{"r":10401,"rule":[0,2,0,1,2,0,2,1,1],"len":63768} | |
{"r":8481,"rule":[0,1,0,2,2,1,2,0,1],"len":63768} | |
{"r":18475,"rule":[1,2,0,0,0,1,1,2,2],"len":63768} | |
{"r":10401,"rule":[0,2,0,1,2,0,2,1,1],"len":63768} | |
{"r":2063,"rule":[2,0,1,1,1,2,2,0,0],"len":63768} | |
{"r":8481,"rule":[0,1,0,2,2,1,2,0,1],"len":63768} | |
{"r":5231,"rule":[2,0,2,1,1,0,1,2,0],"len":63768} | |
{"r":10401,"rule":[0,2,0,1,2,0,2,1,1],"len":63768} | |
{"r":2063,"rule":[2,0,1,1,1,2,2,0,0],"len":63768} | |
{"r":8481,"rule":[0,1,0,2,2,1,2,0,1],"len":63768} | |
{"r":5231,"rule":[2,0,2,1,1,0,1,2,0],"len":63768} | |
{"r":2063,"rule":[2,0,1,1,1,2,2,0,0],"len":63768} | |
{"r":17803,"rule":[1,0,1,2,0,1,0,2,2],"len":63768} | |
{"r":5231,"rule":[2,0,2,1,1,0,1,2,0],"len":63768} | |
{"r":18475,"rule":[1,2,0,0,0,1,1,2,2],"len":63768} | |
{"r":2063,"rule":[2,0,1,1,1,2,2,0,0],"len":63768} | |
{"r":17803,"rule":[1,0,1,2,0,1,0,2,2],"len":63768} | |
{"r":5231,"rule":[2,0,2,1,1,0,1,2,0],"len":63768} | |
{"r":18475,"rule":[1,2,0,0,0,1,1,2,2],"len":63768} | |
//a -a-> a | |
//a -b-> a | |
//b -a-> a | |
//b -b-> b | |
function tick(rule, j, arr){ | |
var w = Math.sqrt(rule.length); | |
for (var i=j, l=arr.length; i<l+j; i+=2){ | |
var x = i%l; | |
var y = (i+1)%l; | |
var a = arr[x]; | |
var b = arr[y]; | |
var A = rule[a*w+b]; | |
var B = rule[b*w+a]; | |
//console.log(x,y,a,b,A,B); | |
arr[x] = B; | |
arr[y] = A; | |
}; | |
}; | |
function toBase(base, size, n){ | |
var digits = []; | |
for (var i=0; i<size; ++i){ | |
digits.push(n%base); | |
n = Math.floor(n / base); | |
}; | |
return digits; | |
}; | |
//for (var r=0; r<16; ++r){ | |
//var rule = toBase(2, 4, r); | |
//var a = [0,1,1,0,0,0,1,1,0,0,1,1,1,0,0,1]; | |
//console.log("RULE "+r+" "+JSON.stringify(rule)); | |
//for (var i=0; i<32; ++i){ | |
//console.log((" "+i).slice(-2)+" "+a.join("")); | |
//tick(rule, i%2, a); | |
//}; | |
//console.log((" "+i).slice(-2)+" "+a.join("")); | |
//}; | |
function str(arr){ | |
var str = ""; | |
var sym = [".","x","o","~"]; | |
for (var i=0, l=arr.length; i<l; ++i) | |
str += sym[arr[i]]; | |
return str; | |
}; | |
function pad(len, chr, str){ | |
while (str.length < len) | |
str = chr+str; | |
return str; | |
}; | |
function fhash(arr){ | |
var h = 0, p = Math.pow(2, 50); | |
for (var i=0, l=arr.length; i<l; ++i) | |
h = (h * 3 + arr[i]) % p; | |
return h; | |
}; | |
function sum(arr){ | |
var s = 0; | |
for (var i=0, l=arr.length; i<l; ++i) | |
s += arr[i]; | |
return s; | |
}; | |
function all(symbols, L, heavy){ | |
var R = Math.pow(symbols, Math.pow(symbols, 2)); | |
var A = []; | |
for (var i=0; i<L; ++i) | |
A.push(Math.floor(Math.random()*symbols)); | |
//A.push(0); | |
//A[0] = 1; | |
var a = A.slice(0); | |
var results = []; | |
//for (var r=0; r<R; r+=Math.floor(Math.random()*4000)){ | |
for (var r=0; r<R; ++r){ | |
var log = ""; | |
var visited = {}; | |
var rule = toBase(symbols, Math.pow(symbols, 2), r); | |
for (var i=0; i<L; ++i) | |
a[i] = A[i]; | |
//if (heavy && sum(r) !== 24){ | |
//if (heavy && r % 5000 === 0) | |
//console.log("rule "+r+"/"+R); | |
//continue; | |
//}; | |
if (!heavy) log += ("RULE "+r+"/"+R+" "+JSON.stringify(rule)+"\n"); | |
for (var i=0; i<1000000; ++i){ | |
if (!heavy) log += (pad(6," ",String(i))+" "+str(a)+"\n"); | |
tick(rule, i%2, a); | |
var s = fhash(a); | |
if (visited[s]) break; else visited[s] = i+1; | |
}; | |
if (!heavy) log += (pad(6," ",String(i+1))+" "+str(a)+" ("+visited[s]+")\n"); | |
results.push({ | |
log: log, | |
len: i, | |
r: r, | |
rule: rule}); | |
if (heavy && r % 5000 === 0) | |
console.log("rule "+r+"/"+R); | |
}; | |
return results; | |
}; | |
var res = all(3, 10, 0).sort((a,b) => a.len - b.len); | |
//console.log(res.slice(-16).map(x => x.log).join("\n")); | |
console.log(res.slice(-256).map(x => JSON.stringify({r:x.r, rule: x.rule, len:x.len})).join("\n")); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment