Вполне возможно, что он просто действовал перебором
Состояние ячейки определяется состоянием пяти ячеек. Существует 32 комбинации состояний пяти ячеек:
00000
00001
…
11110
11111
Новая ячейка может принимать одно из трех состояний: стена, проход, рандом. Можно составить 3^32 таблицы. 3^32=1853020188851841 — это не очень много, но вручную такое количество не перебрать. Если, скажем, на просмотр каждой таблицы тратить одну секунду — понадобится (((1853020188851841/60)/60)/24)/365.25=58718666.4655 — чуть больше 58-ми миллионов лет.
SaveFrom — приложение, которое добавляет зеленую кнопку «скачать» на YouTube. Полгода пользовался этим приложением, пока однажды не заметил, что uBlock блокирует запросы с пустой html-страницы. Начал выяснять, где «вирус» подцепил. Оказалось, что SaveFrom имеет недокументированные возможности — отправляет на свой сервер информацию о всех посещенный страничках.
В тороидальной модели Вселенной есть одно любопытное свойство — существует четырехмерное пространство «внутри» тора (откуда происходит расширение) и «снаружи» тора (куда Вселенная расширяется). Пользуясь этим свойством, можно строить интересные и бредовые гипотезы. Например, в процессе расширения, массивные объекты, благодаря своей инертности, стремятся оставаться «внутри» четырехмерного пространства, в результате чего и происходит искривление трехмерного пространства (ОТО). Можно пойти дальше и предположить, что если в какой-то момент Вселенная перестанет расширяться — тогда исчезнет и гравитация :)
Все возможные состояния автомата можно представить в виде ориентированного графа, ребра которого — переход из одного состояния в другое. Если у каждой вершины не больше трех ребер (два входа, один выход или один вход и один выход) — тогда количество Садов Эдема совпадет с количеством вершин, у которых три ребра.
Для небольших колец, можно перебрать все возможные начальные состояния автомата, далее записать для них следующее состояние и тем самым отсеять те состояния, для которых не существует предыдущего состояния (Сады Эдема).
Говнокод:
var rule=[0,0,0,1,1,1,1,0];
var sizex=9;
var pow=2**sizex;
var arr=[];
for(var i=0;i<pow;i++) arr[i]=0;
var b, temp, q;
for(var i=0;i<pow;i++){
b=[];
var ii=i.toString(2);
for(var j=ii.length;j<sizex;j++) ii='0'+ii;
for(var j=0;j<sizex;j++) b[j]=ii[j]*1;
temp=[];
for(var x=0;x<sizex;x++){
xm=x-1;
if(xm<0) xm=sizex+xm;
xp=x+1;
if(xp>=sizex) xp=xp-sizex;
q=''+b[xm]+b[x]+b[xp];
q=parseInt(q, 2);
temp[x]=rule[q];
}
b=temp;
q=b[0];
for(var j=1;j<sizex;j++) q=(q<<1)+b[j];
arr[q]++;
}
console.log(arr.join(','));
var s0=0;
var s1=0;
var s2=0;
for(var i=0;i<pow;i++){
if(arr[i]==0) s0++;
if(arr[i]==1) s1++;
if(arr[i]>=2) s2++;
}
console.log(s0, s1, s2);
Результат:
Для кольца из 10-ти клеток существует 101 Сад Эдема.
Можно отметить все Сады Эдема для автоматов с правилами от 0 до 255 в кольце из 9-ти клеток (чтобы картинка влезла в комментарий). Далее сложить их стопочкой:
По оси X — все комбинации автомата с правилом, отмеченным по оси Y. Белый пиксель — Сад Эдема.
На второй картинке, белыми пикселями отмечены состояния, для которых существует только одно предыдущее состояние:
Правило 30 и эквивалентные ему: 86, 135 и 149. Эквивалентные — это инвертированные и зеркальные.
Еще одно правило с хаотичным средним столбцом — правило 45 и эквивалетные ему правила: 75, 89 и 101.
Можно ли по n-му числу найти предыдущее?
Одномерные клеточные автоматы первого порядка — необратимы. Для следующего состояния существует несколько возможных предыдущих.
Есть еще один интересный вопрос. Если рассматривать автомат в кольце (левая граница соединена с правой) — каждый столбец становится периодическим. Вопрос:
— Как длина периода зависит от размеров кольца?
В качестве примера, кольцо с десятью клетками:
Длина периода — 15.
Для первых 12-ти колец, длина периода: 0, 0, 0, 8, 5, 0, 4, 40, 72, 15, 154, 102
Скажите, а для подготовки всего что выложили, вы реально использовали JS, или у вас есть аппаратно ускоренная реализация?
На чистом JS. Выкладываю пример для картинки «habr».
Здесь считает.
Запуск производится через консоль. Пишем в консоль evil(3000); и поехали. Туда же, в консоль, записываются массивы для «тепловой карты».
Считал в FireFox. Если считать автоматы с большим полем — Chrome перестает подавать признаки жизни. В FireFox появляется кнопка «Остановить это».
Тогда припадок может случиться не только у эпилептиков.
Два варианта сделал:
1. Цвет движется вместе со слоем.
2. Цвет каждого соответствующего слоя не меняется.
Можно. На вход даем двоичную последовательность. Эту последовательность можно составить комбинаторно — копируя, инвертируя и переставляя биты. На бильярдах это легко показать, но это тема для отдельной статьи.
Например, последовательность floor(n(sqrt(5)+1)%2, для n=1, 2, 3, ...:
10100101101001011010110100101101001010010110100101101011010010110100101…
Можно строить рекурсивно, не вычисляя квадратные корни и остатки от деления:
function invers(array){ //инвертируем биты
var temp=[];
var size=array.length;
for(var i=0; i<size; i++){
if(array[i]==0)
temp[i]=1;
else
temp[i]=0;
}
return temp;
}
function revers(array, s){ //берем последние s бит в обратном порядке
var temp=[];
var size=array.length;
for(var i=0; i<s; i++) temp[i]=array[size-i-1];
return temp;
}
function seqence(fn, fn1){ //fn и fn1 - числа Фибоначчи F(n) и F(n-1)
if(fn1==3) return [1];
fn1=fn-fn1;
fn=fn-fn1;
var array=seqence(fn, fn1); //рекурсия
var a0=invers(array); //инвертированные биты
var a1=[];
if(fn1%2==0) a1=[1]; //добавляем "1" бит, если F(n-1) четное
var a2=revers(array, Math.floor((fn-fn1)/2)); //биты в обратном порядке
return a0.concat(a1, a2);
}
console.log((seqence(610, 377)).join(''));
Категорически вас приветствую, поздравляю с написанием первой статьи на Хабре и получением приглашения в наше скромное сообщество.
Чтобы получить бинарную матрицу, вариант «не идёт*(-)» можно отбросить. Не идет только в тех случаях, если стороны прямоугольника x и y не являются взаимно простыми числами. Фактически, если убрать все варианты, когда «идет» и оставить только те, когда «не идет» — получим таблицу взаимно простых чисел:
(минусами отмечены числа, имеющие общий делитель)
Таблица взаимно простых чисел сама по себе очень интересная и ее можно разглядывать часами (начало координат — левый верхний угол):
600х600:
но в нашем случае, от нее лучше избавиться, чтобы она не мешала нам в поиске закономерности.
Эти соотношения сторон (не взаимно простые) можно сократить на общий делитель, чтобы получить взаимно простые числа. Например, 6 и 8 можно сократить на общий делитель 2 и получить паттерн 3х4 (или же сделать штрих размером в 2 клетки и получить тот же паттерн):
Конечно, останутся случаи, когда одна (или обе) из сторон сокращается до 1 — если одна из сторон является делителем другой (или они равны). Будем считать эти случаи неизбежным злом :)
Все паттерны для прямоугольников со сторонами от 1 до 16:
В виде графика (начало координат — левый верхний угол):
Антиматерия получена и даже произведено аннигилирование. Т.е. материя просто исчезла. При соединении материи и антиматерии происходит исчезновение обеих субстанций. Это самое верное доказательство того, что мы никакая не материя а информационный процесс.
— Получается аннигиляция — это просто математическое действие, когда ноль умножают на единицу?
— А что же еще?
Аннигиляция же — это полное исчезновение «материи».
При аннигиляции выделяется фотон — квант электромагнитного поля. Электромагнитное поле — вполне себе форма материи.
Невозможно сравнить и вывести единую формулу для процессов разной вложенности, так как они изначально выполняют разные задачи.
Спорное утверждение.
Квазиунофантазию про гипервизора не смог дочитать до конца. Почему вы не можете представить себе Вселенную без создателя? Зачем плодить эти невнятные сущности?