Что программисты делают для развлечения? Кто-то играет в гольф код, кто-то вносит свой вклад в открытый исходный код, но кто-то пытается построить альтернативную вселенную внутри Life. Waterbear — удивительное свидетельство того, чего можно достичь, если вы приложите к этому усилия.
Вы почти наверняка сталкивались с жизнью Конвея. Это один из самых простых в понимании и реализации клеточных автоматов, и это очень весело. Возможно, вы не знаете, что существует процветающее сообщество «пожизненников», которые строят фантастические машины, используя только расположение ячеек на стандартном симуляторе жизни. Конечно, для работы с таким большим расположением ячеек симулятор должен работать как можно быстрее, и необходимо проделать большую работу по созданию инструментов.
Одна из задач — открытие новых форм в определенных классах, и один из таких классов — космические корабли. Это группы ячеек, которые вместе движутся в определенном направлении и с определенной скоростью. Создать космический корабль непросто, но первым примером был оригинальный «планер», который медленно движется по диагонали — см. Ниже:
Последний космический корабль намного сложнее планера, намного больше — всего у него 197896 ячеек. Водяной медведь, названный так потому, что он немного похож на тихоходку, микроскопическую форму жизни, широко известную как водяной медведь, представляет собой космический корабль 23,5 c / 79. Это означает, что он перемещает 23 клетки вверх и 5 за каждые 79 поколений, и это первая известная форма, которая делает это. Большинство космических кораблей движутся в простых направлениях: по горизонтали, вертикали или диагонали.
Посмотрите видео, чтобы узнать, насколько сложна эта конструкция:
Первое впечатление у большинства людей — как можно построить что-то подобное?
Ответ заключается в том, что существует иерархия механизмов, которые можно объединить для создания новых механизмов. Например, Herschel — это форма, которая превращается в два блока, два планера и корабль после 128 поколений. Вы можете использовать это как строительный блок для других более сложных механизмов. Даже в этом случае взаимодействие строительных блоков непросто, но я полагаю, если вы работаете с ним достаточно долго, вы должны развить интуицию.
В чем смысл?
Во-первых, есть ли смысл в кодовом гольфе или других странных развлечениях?
Изучение того, как простые правила Жизни могут использоваться для создания сложного поведения, может дать нам информацию о том, как в целом развиваются сложные системы.
Если вы хотите присоединиться к нам, загляните в LifeWiki, чтобы узнать о том, что было обнаружено, и о том, чего мы не знаем.