Различные реализации игры «Жизнь» описывались на Хабре уже неоднократно. В этой статье, в качестве продолжения этой темы, рассматривается ещё один её вариант: в качестве игрового поля используется регулярная решётка на плоскости Лобаческого. Описываются общие методы использования плоскости Лобачевского в программах и необходимые для этого математические приёмы.
Как возникла плоскость Лобачевского, достаточно известно. В позапрошлом веке господа Гаусс, Лобачевский и Бойяи, проживавшие примерно в одно время в разных странах тогдашней Европы, задумались, что будет, если отменить пятый постулат Евклида и заменить его на противоположную аксиому. Оказалось, что не случится ничего плохого, и никаких противоречий не возникнет. Заметная часть последующего изучения неевклидовой геометрии была посвящена выяснению того, кто из них у кого украл идею этой самой геометрии.
Менее известно, что несмотря на «отрицательный» способ определения неевклидовой геометрии (вместо того, чтобы сказать, что через точку проходит ровно одна прямая, не пересекающая данную, мы говорим, что таких прямых может быть сколько угодно), мы, тем не менее, получаем систему теорем и формул, не менее стройную, чем та, что есть в евклидовой геометрии. И одновременно, у нас есть гораздо большее разнообразие геометрических фигур, в том числе, разбиений плоскости на правильные многоугольники.
Рубрика «игра жизнь» - 4
Жизнь на плоскости Лобачевского
2013-02-05 в 20:25, admin, рубрики: game development, game of life, Алгоритмы, игра жизнь, математика, метки: game of life, игра жизньEvo, часть 2 — о скрещивании
2012-10-28 в 10:30, admin, рубрики: evo, qt, qt4, Алгоритмы, естественный отбор, игра жизнь, искусственный интеллект, метки: evo, Qt, qt4, естественный отбор, игра жизнь Приветствую вас, читатели!

В продолжение поста «Аналог игры «Жизнь» — Evo» хотелось бы дать более подробное описание команд «языка генов», который используется в Evo, и поделиться своими соображениями по методам скрещивания особей в этой игре.
Читать полностью »
Аналог игры «Жизнь» — Evo
2012-10-27 в 14:04, admin, рубрики: evo, qt, Qt Software, qt4, Алгоритмы, естественный отбор, игра жизнь, искусственный интеллект, метки: evo, Qt, qt4, естественный отбор, игра жизнь Приветствую вас, читатели!

Недавно прочитал статью про игру Жизнь, и вспомнилось мне, что я в мае этого года начинал писать свой проект подобной направленности. Только вот интерес к нему за рутиной работы быстро угас, хотя написано было немало. И сейчас, вдохновлённый этой статьёй, я взял этот проект с пыльной полки и добавил несколько фич, о которых расскажу далее.
Вкратце, мой вариант имеет следующие условия:
- жизнь развивается на поле 256*256 клеток;
- на поле могут размещаться объекты трёх типов: живность, пища(назовем её травой) и камень (препятствие);
- живность представляет собой фактически модифицированную машину Тьюринга, если точнее, то это больше похоже на Автомат с магазинной памятью, т.е. живность является «процессором», выполняющим свой «генетический» код;
- живность имеет возможность совершать определенные действия (двигаться, есть, размножаться (пока только клонированием, мутации будут со дня на день, скрещивание в перспективе)), отдавая соответствующие команды;
- наступив на траву, живность её вытаптывает;
- для поглощения еды надо дать команду «Ешь в этом направлении!», находясь в соседней клетке;
- живность имеет память, что позволяет строить циклы, условия и т.п., т.е. полная по Тьюрингу (поправьте меня, если не прав!), объем памяти неограничен;
- живность может складывать и вычитать значения в уме, разрядность ограничена одним байтом;
- существует возможность реализации генетических алгоритмов (пока не реализовано).
Кому интересны подробности, прошу под кат!
Игра «Жизнь» Конвея в непрерывной среде
2012-10-11 в 21:27, admin, рубрики: geek porn, Алгоритмы, игра жизнь, клеточные автоматы, метки: geek porn, игра жизнь, клеточные автоматыНемецкий учёный Штефан Рафлер создал интересную модификацию «Жизни» — клеточного автомата, придуманного в 1970 году Джеймсом Конвеем, в которой вместо дискретной прямоугольной сетки жизнь развивается в непрерывной среде. «Клетки» в ней имеют форму дисков, планеры могут летать в любых направлениях и водить хороводы — получается совершенно завораживающая картина.
Вот слайд-шоу с кратким описанием алгоритма и документ с более глубоким погружением в детали.
Игра «Жизнь»: моделируем эволюцию
2012-10-11 в 5:37, admin, рубрики: Conway's game of Life, Алгоритмы, игра жизнь, искусственный интеллект, эволюция, метки: Conway's game of Life, игра жизнь, эволюция
В комментариях к моему предыдущему посту «Игра «Жизнь» и моделирование естественного отбора» первое же, что предложили, — добавить скрещивание, чтобы новая клетка получала не копию генома одного родителя, а смесь от нескольких. Я подозревал, что итог это не изменит. Но, покрутив в голове идею, заинтересовался: ведь так можно получить модель не просто естественного отбора, а уже полноценной эволюции. Благо, реализовать это было не сложно. Так что встречайте: «Жизнь», теперь со скрещиванием и мутациями.
Ну да, ещё и с мутациями. Моделировать, так моделировать.
Подробности, как водится, под катом.
Читать полностью »
Игра «Жизнь» и моделирование естественного отбора
2012-10-08 в 11:25, admin, рубрики: Conway's game of Life, Алгоритмы, естественный отбор, игра жизнь, искусственный интеллект, метки: Conway's game of Life, естественный отбор, игра жизнь
Валялся я на прошлой неделе в больнице. И так как обсуждать с дедушками в холле рецепт яблок, мочёных в капусте, и как хорошо на Покров гулять по заливным лугам — особого желания не было, пришлось придумывать себе развлечение.
Я задумался об игре «Жизнь», которую на Хабре не так давно вспоминали. Мне стало обидно за несчастные клетки, которые живут и умирают в зависимости от одних только начальных условий, и ничего сами для своего выживания сделать не могут. В результате я придумал расширение для правил игры, с которым можно моделировать не только изменение численности популяции, но и естественный отбор внутри неё.
Самые нетерпеливые сразу могут посмотреть, что получилось, а остальных прошу под кат за рассказом.
Читать полностью »
Перестаньте писать классы
2012-03-23 в 13:33, admin, рубрики: java, python, игра жизнь, классы, ооп, проектирование, Проектирование и рефакторинг, рефакторинг, метки: java, python, игра жизнь, классы, ооп, проектирование, рефакторинг
Признак того, что объект не должен быть классом — если в нём всего 2 метода, и один из них — инициализация, __init__. Каждый раз видя это, подумайте: «наверное, мне нужна просто одна функция».
Каждый раз когда из написанного класса вы создаёте всего один экземпляр, используете только раз и тут же выбрасываете, следует думать: «ой, надо бы это отрефакторить! Можно сделать проще, намного проще!»
Перевод доклада Джэка Дидриха, одного из клчюевых разработчиков языка Питон. Доклад прозвучал 9 марта 2012 на конференции PyCon US.
Читать полностью »


