ну для 3д пространства нужно вводить правила смены z уровня, а в плоскости можно строить любые эксперименты.
Надо будет тоже попробовать сделать такой вариант, а в js можно сделать это просто через передачу функции валидатора нахождения на игровом поле муравья, только для этого нужно будет все в виде модулей переписать, а не огромной лапши
А что за алгоритм? Я на досуге делал «жизнь» на JS, так она работает на порядок быстрей: осторожно, рекламная ссылка :-). Мне казалось, что между муравьём и жизнью принципиальной разницы нет. Или я ошибаюсь?
Таймеры с 0 интервалом,
setInterval(function () { }, 0);
жаль только setTimeout тут не катит, он был бы побыстрее, но слишком быстро падает с перполнением стека
А я на досуге решил посмотреть, что будет если в пространстве для «жизни» будут случайные глюки «вакуума» с заданной вероятностью — тоже на canvas: allter.github.io/misc/life_canvas.html Если кому интересно — можете заглянуть внутрь и посмотреть, как сделано ускорение просчётов (при задержке 0), что бы считалось быстрее обновлений графики.
После просмотра кода у меня появилось предложение по его улучшению — 5 раз записан один и тот же код, различие лишь в индексах у используемых массивах. Кажется, достаточно лишь передать в функции таймера индекс и цвет, чтобы скрипт сократился в более чем 4 раза.
Думается мне, что просто когда муравей входит в точку выхода другого муравья, он начинает повторять все движения предшественника задом на перёд. Ведь поведение муравьёв вполне инвертируемо. Вот и выходит, что если в любой момент муравья развернуть строго на 180 градусов, то он начнёт всё стирать как на обратной перемотке, пока не наткнётся на работу другого муравья.
Не уверен, понятно ли объяснил. Если что, спрашивайте.
Муравей Лэнгтона на JS и Canvas