46 FreeBASIC. Программируем "Жизнь"
Мой второй пост на голосе был о "Жизни", о простенькой игре, но это лишь на первый взгляд простой. Даже узнав о ней я просто поражался ею, но когда я увидел её в интернете... это оказалась не просто "Жизнь" - это целая ВСЕЛЕНАЯ.
Её простота в простых правилах, но в этих правилах нашли столько жизни - поэтому её так и назвали.
Я поначалу так и думал что это просто забава, забавная игра, но эта игра повлияла на многие точные науки - математику, информатику, физику. И даже больше - она имеет схожесть со многими другими, не "точными" науками)) - биология, бактериология, физиология, социология, философия...и много других. Ею знанимались и занимаются многие учёные.
Сейчас я вспоминаю о ней лишь в контексте программирования.
ну какой программист не писал её реализацию, нашёл опрос на Хабре
Когда я писал её впервые на своем ZX клоне, мне не хватало его быстродействия, я использовал компиляторы(в то время это были ускорители программ) а на финише написал "Жизнь на ассемблере"... увидев всю его красоту(ассемблера)
Правила "Жизни" Конвея
Жизнь эволюционирует на клеточном поле, которое может быть бесконечным, ограниченным или замкнутым.
Каждая клетка имеет восемь соседей - клетки её окружающие.
Клетка выживает, переходит в следующее поколение, если у неё 2 или 3 соседа. Еслиже соседей больше трёх или меньше двух - клетка погибает.
Рождение. Если у пустой клетки ровно три соседа - там рождается новая клетка.
Как видно правила очень просты.
Многие, даже маленькие изначально конфигурации, могут разрастаться до огромных размеров, занимает сотни, тысячи поколений и просчитать это всё вручную невозможно.
Сейчас есть потрясающие программы для исследования колоний(конфигураций клеток), в некоторых программах есть даже другие правила "Жизни", но много-много лет назад программу приходилось писать самому.
Исследуем эволюцию лини шести клеток
1 поколение - слева и справа клетки погибают, а сверху и снизу появятся по 4 новые клетки
На втором поколении получится прямоугольник 4х3 клетки, средние погибнут от перенаселения, сверху/снизу появятся по две клетки. Справа и слева - по одной.
В третьем поколени погибших нет, а в середине фигуры появятся шесть новых клеток.
В четвёртом ходу гибнут почти все клетки, но восемь новых появляется.
На седьмом ходу появится такая конфигурация. Мне стоило подробней описать как я "рисую" ходы, что я и сделаю на примере седьмого хода
Перерисовую начисто фигуру которая появляется после 6 хода.
Закрашиваю те клетки которые погибнут,(их не будет в следующем поколении)
Точками отммечаю те места, где в следующем поколении появятся новые клетки.
И рисую новую ступень эволюции.
А что будет с колонией дальше??