Как стать автором
Обновить

Поиграем в жизнь

Время на прочтение 4 мин
Количество просмотров 25K
Игры и игровые консоли
Представьте себе листок бумаги в клетку. Подозреваю, что уже на этом этапе некоторые хабралюди догадались, о чем пойдет речь. Что ж, моё почтение им. Остальные же продолжают представлять себе листок бумаги в клетку. Во всех подробностях. В мельчайших деталях.

А теперь представьте, что на этом простом листочке мы создадим простой, но оттого не менее впечатляющий симулятор жизни. Ни больше, ни меньше. Конечно, он будет очень упрощенный, но ведь чтобы понять что-то сложное надо начать с простого, не так ли? Этот симулятор можно применить ко множеству наук и с каждой из них он будет иметь множество достаточно интересных точек соприкосновения. От социологии до астрономии, от биологии до электротехники.

Ладно, хватит завлекалок. Пора удариться в математику.


Включить мозги
Всего голосов 154: ↑135 и ↓19 +116
Комментарии 109

В игре «Жизнь» создали самый сложный организм, способный размножаться

Время на прочтение 1 мин
Количество просмотров 5.3K
Дизайн игр *Игры и игровые консоли
На Хабре уже обсуждалась уникальная двухмерная математическая вселенная Game of Life — пространство для создания клеточных автоматов.

Так вот, месяц назад там произошла настоящая революция. Никому не известный канадский программист Эндрю Уэйд (Andrew Wade) опубликовал на игровом форуме исходники организма Gemini, способного размножаться и перемещаться, уничтожая предыдущие копии (видео).
Читать дальше →
Всего голосов 166: ↑156 и ↓10 +146
Комментарии 131

Игра «Жизнь». Опять. На этот раз в 3D

Время на прочтение 5 мин
Количество просмотров 42K
C++ *Алгоритмы *Параллельное программирование *
Из песочницы
За последнюю неделю Хабр пополнился сразу несколькими статьями об игре «Жизнь». Что ж, тогда и я поделюсь своими наработками по этой теме.

Предисловие


Минувшим летом мне довелось побывать на летней школе по параллельному программированию, проводимой НГУ. В рамках школы каждый студент должен был подготовить какой-либо проект по одной из тематик, озвученных на лекциях. Меня заинтересовали клеточные автоматы. У меня первая ассоциация при фразе «клеточный автомат» это именно «Жизнь».
Я понимал, что никому не будет интересно наблюдать за черными клеточками, живущими на экране. Да и слишком просто это для такого проекта. Нужно было придумать что-то принципиально новое. Я решил расширить диапазон своих мыслей и выйти за пределы двухмерного пространства. В прямом смысле. Я подумал, а почему бы не сделать эту игру трехмерной? Ведь это гораздо интереснее!
Подробности под катом
Всего голосов 58: ↑47 и ↓11 +36
Комментарии 19

Как заставить мир аплодировать стоя. Делаем стартап популярным

Время на прочтение 4 мин
Количество просмотров 24K
Алгоритмы *Математика *
Представьте, что мир — это концертный зал, а ваш только что запущенный стартап — это шоу, которое секунду назад завершилось, и публика вот-вот начнёт рукоплескать вам стоя, либо отделается вялыми хлопками в разных углах зала. Почему по-настоящему гениальные спектакли искушённая публика иногда встречает сдержанно и даже холодно, а некоторые посредственные — криками «Браво»? Как сделать так, чтобы ваш стартап оценили по достоинству, и даже лучше? Как заставить мир аплодировать вам стоя?

image

Профессор Мичиганского Университета Scott E. Page, известный по курсу Model Thinking на Coursera, в соавторстве с John H. Miller в 2004 году предложили изящную модель «Standing Ovations», которая с помощью клеточного автомата описывает, будет ли зал аплодировать стоя, в зависимости от некоторых факторов. В этой статье я сначала опишу модель максимально упрощённо, а затем, под катом, перейду к небольшим математическим и околоматематическим выкладкам, к построению клеточного автомата, а в конце — к выводам применительно к стартапу и другим сферам жизни.

На секунду представьте себя в зрительном зале в волнительный момент опускания занавеса. Что может заставить вас встать и начать аплодировать? Во-первых, разумеется, вам должен понравиться спектакль. Во-вторых, вы, скорее всего, будете чувствовать себя неловко, если окажетесь единственным человеком в зале, аплодирующим стоя (равно как и если все вокруг встанут, а вы будете сидеть). Значит, необходимо, чтобы некоторая часть аудитории уже решила встать. В-третьих, если вы пришли на спектакль с друзьями или семьёй, и кто-то из них встал, то вы, вероятно, захотите его поддержать и встанете тоже. В-четвёртых, вам виден не весь зал. В зависимости от места, которое вы занимаете, вам могут быть видны только первые ряды партера, половина зала или, если вы сидите в первом ряду, то вообще никто кроме ваших соседей. Следовательно, в первую очередь на ваше решение влияет только та часть зала, которая вам видна.

Таким образом, можно выделить четыре фактора, влияющих на то, встанете ли вы:
  1. Ваше впечатление от шоу;
  2. Доля аудитории, которая уже решила встать;
  3. Поведение ваших соседей по ряду;
  4. Поведение «звёзд», сидящих в первых рядах;

А теперь немного теории автоматов
Всего голосов 69: ↑59 и ↓10 +49
Комментарии 9

Клеточные автоматы на Dart

Время на прочтение 8 мин
Количество просмотров 18K
Программирование *Dart *
Реализация классического клеточного автомата — конуээвской «Жизни» — это такая же задачка для начинающего программиста, как для радиотехника — спаять простейший радиоприемник. Для тех кто не знает, что такое «Жизнь», прочитайте эту статью: Википедия: Жизнь (игра).

Напомню правила: действие происходит на клеточном поле. Каждая клетка имеет 8 соседей — клетки, примыкающие к ней сторонами или углами. В начале игры некоторые клетки заполнены, образуя начальный организм, остальные — пусты. Эволюция происходит так: в следующем поколении очищаются все заполненные клетки, имеющие менее 2 или более 3 соседей и заполняются пустые, имеющие ровно 3 соседа.

После того, как поиграешь с интересными конфигурациями, становится немного скучно. В самом деле, за 40 лет все, что можно описано, разжевано на сотнях страниц различных статей и книг. Найти что-то новое и интересное сложно. Тогда возникает желание поменять правила — а вдруг новые организмы будут вести себя совершенно по-иному?


Здесь вы можете сразу посмотреть демо.
Читать дальше →
Всего голосов 44: ↑38 и ↓6 +32
Комментарии 9

Клеточные автоматы с помощью комонад

Время на прочтение 5 мин
Количество просмотров 14K
Haskell *Функциональное программирование *
Из песочницы
Одним вечером я наткнулся на статью о реализации одномерного клеточного автомата с помощью комонад, однако материал неполон и немного устарел, в связи с чем решил написать русскоязычную адаптацию (заодно рассмотрев двумерные клеточные автоматы на примере Game of Life):

life_anim
Читать дальше →
Всего голосов 33: ↑31 и ↓2 +29
Комментарии 5

Эксперименты с бит-реверсными паттернами в двумерных аддитивных клеточных автоматах

Время на прочтение 17 мин
Количество просмотров 14K
Ненормальное программирование *Алгоритмы *Математика *
Как-то я экспериментировал с клеточными автоматами. С одномерными и двумерными. Придумывал на каком исходном состоянии применить какое-то правило. Когда, в качестве исходного состояния двумерного клеточного автомата я начал использовать бит-реверсивную перестановку диагональной линии, то после применения автомата получались своеобразные узоры. Время от времени среди узоров появлялись явно выраженные характерные паттерны. Я выделил эти паттерны и немного с ними поэкспериментировал. С тем, что мне удалось выяснить, я делюсь в этой статье.

В статье я вкратце расскажу про аддитивные клеточные автоматы. А также приведу последовательность моих наблюдений и задач, которые я ставил. Каждый этап будет сопровождаться изображениями состояния клеточного автомата. Кроме того, для лучшей наглядности, я написал веб-приложение, которое добавит интерактивности при чтении статьи. Приложение основано на React и должно работать в современных браузерах. Также я буду сопровождать некоторые действия ссылками с кусками кода на Python.

Disclaimer: Статья носит чисто информационно-развлекательный характер, поскольку мне не известны приложения предлагаемой информации. Также, мне интересно упорядочить обрывочные сведения, которые мне удалось выяснить. И, возможно, обнаружить в них шероховатости. Возможно, мне придут в голову новые эксперименты.

Надеюсь, что статья развлечет вас, хотя я буду писать четко и по делу.
Осторожно! Чтение может привести к квантовому реверсу сознания...
Всего голосов 49: ↑44 и ↓5 +39
Комментарии 11

Интересные примеры клеточных автоматов

Время на прочтение 4 мин
Количество просмотров 29K
Математика *
Интересные примеры клеточных автоматов.

На хабре много статей по клеточным автоматам (http://habrahabr.ru/post/168291/, http://habrahabr.ru/post/227003/), особенно по игре “Жизнь” (http://habrahabr.ru/post/67790/, http://habrahabr.ru/post/154509/, http://habrahabr.ru/post/237629/). Я хочу рассказать что-то новенькое — про другие клеточные автоматы, привести неожиданные и интересные, по моему мнению, примеры. Мы посмотрим на структуру, которая постепенно копирует свою исходную конфигурацию; и на структуру, которая рисует круг.

Осторожно, большие gif-ки
Читать дальше →
Всего голосов 53: ↑52 и ↓1 +51
Комментарии 3

Простейшие клеточные автоматы и их практическое применение

Время на прочтение 6 мин
Количество просмотров 99K
JavaScript *Программирование *Алгоритмы *Canvas *Математика *
Этот мир просто охренеть какой сложный, каждый день поражаюсь.

Чтобы хоть как-то его познавать и при этом не съехать с катушек, нам, людишкам, с нашими жалкими мозгами приходится задумчиво смотреть на происходящее, анализировать увиденное и строить модели — абстракции, с помощью которых мы с некоторой точностью кое-что иногда можем предсказывать и даже наивно полагать, что понимаем, что же на самом деле происходит.

И знаете, что удивительно? Этот подход замечательно работает. Ну, почти всегда. По крайней мере, ничего лучше мы до сих пор не придумали.

Но вообще-то я не об этом. Я хочу рассказать об одной чрезвычайно интересной как с эстетической, так и с математической точки зрения категории этих самых моделей.

image

Да, я о клеточных автоматах, а именно — об их подмножестве, простейших клеточных автоматах (Elementary cellular automaton). В этой статье я поведаю, что это такое, какие они бывают, какими свойствами обладают, а также отвечу на главный, на мой взгляд, и совершенно правильный вопрос, который часто несправедливо игнорируется в подобных статьях. Звучит он так: А это всё вообще зачем?

Забегая вперед, скажу, что простейшие клеточные автоматы используются в криптографии, моделировании физических процессов, поведения людей, в биологии, и в целой куче других важных и интересных штук. И вообще: во-первых, это красиво.

Я искренне надеюсь, что после прочтения статьи вы сами захотите поиграться с ними, и на этот случай у меня припасен собранный из JS и палок генератор.
Хватит воды, давай к сути
Всего голосов 89: ↑88 и ↓1 +87
Комментарии 15

Логика сознания. Часть 1. Волны в клеточном автомате

Время на прочтение 7 мин
Количество просмотров 64K
Программирование *Алгоритмы *Машинное обучение *
Начнем разговор о мозге с несколько отвлеченной темы. Поговорим о клеточных автоматах. Клеточный автомат – это дискретная модель, которая описывает регулярную решетку ячеек, возможные состояния ячеек и правила изменений этих состояний. Каждая из ячеек может принимать конечное множество состояний, например, 0 и 1. Для каждой из ячеек определяется окрестность, задающая ее соседей. Состояние соседей и собственное состояние ячейки определяют ее следующее состояние.
Наиболее известный клеточный автомат – это игра «Жизнь». Поле в игре «Жизнь» состоит из ячеек. Каждая ячейка имеет восемь соседей. Задается начальная комбинация. Затем начинается смена поколений. Если у занятой ячейки два или три занятых (живых) соседа, то ячейка продолжает жить. Если соседей меньше 2 или больше 3, то ячейка умирает. Когда у пустой ячейки оказывается ровно 3 соседа в ней зарождается жизнь. Задав произвольную начальную комбинацию можно пронаблюдать ее эволюцию.
Читать дальше →
Всего голосов 31: ↑30 и ↓1 +29
Комментарии 65

Вариация на тему моделирования жизни. Часть 1

Время на прочтение 5 мин
Количество просмотров 8K
Алгоритмы *Математика *
Из песочницы
🔥 Технотекст 2020

Жизнь Джона Конвея


Полагаем, всем программистам хорошо известен клеточный автомат жизнь (или эволюция), придуманный английским математиком Джоном Конвеем в 1970 году. Возможно, некоторые даже корпели над самописной программой, моделирующей клеточный автомат Конвея.
Читать дальше →
Всего голосов 22: ↑22 и ↓0 +22
Комментарии 12

Вариация на тему моделирования жизни. Часть 2

Время на прочтение 5 мин
Количество просмотров 2.3K
Алгоритмы *Математика *

Жизнь продолжается


Продолжим эксперименты с клеточным автоматом, начатые в предыдущей статье (Вариация на тему моделирования жизни. Часть 1).
Вкратце напомним основные положения. Модель представляет собой бесконечное (замкнутое) поле, состоящее из клеток. В каждой клетке может располагаться только один простейший организм, который условно назовём растением. Изначально поле может содержать в каждой клетке некоторое количество ресурса, необходимое для питания растений.

Наделим растение со следующими параметрами: a) начальная масса (в единицах), b) питание ресурсом (в единицах), c) продолжительность жизни (в тактах), d) количество спор для размножения.
Читать дальше →
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 15

Conways Game of life на Python

Время на прочтение 3 мин
Количество просмотров 22K
Python *
Из песочницы

Это мой первый пост, где я хочу рассказать про самый известный клеточный автомат "Игра жизнь", а также напишем её на Python с использованием графики Pygame.

Conways Game of life ( по русски 'Игра жизнь' ) - клеточный автомат, придуманный Джоном Конвеем в далеком 1970 году.

Правила очень просты, вся игра происходит в 2D пространстве (плоскости) на которой могут быть 2 типа клеток "Живые" - 0 и "Пустые" -1. Основные правила жизни клетки таковы Birth3 Survive23, что значит клетка рождается при трёх соседях и выживает при двух или трёх, иначе умирает.

Читать далее
Всего голосов 12: ↑6 и ↓6 0
Комментарии 11

Формат JPEG XL будет полным по Тьюрингу без ограничения 1024*1024 пикселей

Время на прочтение 4 мин
Количество просмотров 14K
Блог компании ITSumma Информационная безопасность *Обработка изображений *IT-стандарты *Математика *

В формате JPEG XL это изображение занимает 59 байт

Оказывается, полным по Тьюрингу может быть не только язык программирования, но и графический формат. В частности, таким потенциально является формат JPEG XL, если отменить в нём ограничение на максимальный размер группы обрабатываемых пикселей.
Читать дальше →
Всего голосов 48: ↑46 и ↓2 +44
Комментарии 67

Муравей Лэнгтона — загадочный клеточный автомат

Время на прочтение 4 мин
Количество просмотров 16K
Программирование *Алгоритмы *Математика *Читальный зал Научно-популярное

В мире существует около 14 000 видов муравьёв, каждый из которых имеет собственное название. Но, даже если вы зададитесь такой целью, вы не найдёте ни в одном биологическом справочнике муравья Лэнгтона. Дело в том, что этот муравей — математическая абстракция, модель для описания поведения динамической системы.

Невесёлая жизнь у муравья Лэнгтона, но, как мы увидим, он не готов мириться с такой возмутительной ситуацией и всеми силами старается сбежать.

Читать далее
Всего голосов 60: ↑59 и ↓1 +58
Комментарии 23

Моделирование лесных пожаров: теория, клеточный автомат на Python

Уровень сложности Средний
Время на прочтение 10 мин
Количество просмотров 5.2K
Python *Алгоритмы *Читальный зал Научно-популярное Экология
Обзор
Перевод

Математические модели распространения огня являются важной частью борьбы с пожарами. Модели могут помочь определить, где может начаться пожар, как быстро он будет распространяться (и в каком направлении), и сколько тепла он будет выделять. Эти важные подсказки могут спасти жизни и существенно сократить финансовые потери.

Очень идеализированный лесной пожар может быть представлен с помощью простого клеточного автомата.

👾
Всего голосов 23: ↑23 и ↓0 +23
Комментарии 14

10 удивительно зрелищных простейших клеточных автоматов

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 23K
Программирование *Алгоритмы *Читальный зал Дизайн Научно-популярное
Обзор

Самое простое представление двумерного клеточного автомата основано на двух характеристиках: клетки имеют всего 2 состояния; правила изменения состояния зависят только от количества живых соседей из окрестности Мура первого порядка (8 окружающих).

Такая категория КА называется «Life-like», по названию самого известного автомата с такими характеристиками – «Conway's Game of Life». Игра «Жизнь» Конвея работает на правиле B3/S23, т.е. для рождения клетки требуется ровно 3 живых соседа, для выживания – 2 или 3. Во всех других случаях клетка умирает (или же остаётся пустой).

Всего в данной категории у нас существует 218 вариантов правил. Очень немногая часть из них получила в сообществе собственные названия, сверх обычного именования нотацией.

Сегодня взглянем на самых интересных представителей.

👾
Всего голосов 158: ↑158 и ↓0 +158
Комментарии 24

10 зрелищных клеточных автоматов с поколениями

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 5.3K
Программирование *Алгоритмы *Читальный зал Дизайн Научно-популярное
Обзор

На прошлой неделе мы посмотрели на 10 правил простейших клеточных автоматов, где меняли только количество соседей необходимых для рождения и выживания клетки.

Сегодня мы немного дополним характеристики «life‑like» модели и добавим ещё одну часть к правилам — поколения.

👾
Всего голосов 66: ↑66 и ↓0 +66
Комментарии 1

Пятничные клеточные автоматы: 10 удивительных правил с нотацией Хенселя

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 5.8K
Программирование *Алгоритмы *Читальный зал Дизайн Научно-популярное
Обзор

Продолжим знакомиться с вариациями клеточных автоматов. Ранее мы рассмотрели базовую «life-like» конфигурацию и добавили к ней поколения.

Сегодня сделаем ещё один шаг – расширим правила учёта соседей так, что влиять на рождение и выживание клеток будет не только количество живых соседей, но и их расположение.

👾
Всего голосов 57: ↑57 и ↓0 +57
Комментарии 11

Генерация 2D мира с помощью клеточного автомата на Python

Уровень сложности Простой
Время на прочтение 8 мин
Количество просмотров 5.9K
Python *Программирование *Алгоритмы *Математика *

Всем привет! На написание этой статьи меня вдохновил автор YouTube канала PeaAshMeter. В своем видео автор показывает простейший генератор 2D мира, который основан на простейшем правиле клеточного автомата. Что такое клеточный автомат? Какие клеточные автоматы бывают? На эти и многие другие вопросы я попробую ответить.

Читать далее
Всего голосов 25: ↑25 и ↓0 +25
Комментарии 4
1