Лабораторная 2
Барьерная синхронизация (игра "Жизнь, без компромиссов!")

Игра «Жизнь» (англ. Conway's Game of Life) — клеточный автомат, придуманный английским математиком Джоном Конвеем в 1970 году.

Задача заключается в разработке параллельного варианта данной игры ("Жизнь, без компромиссов!"), где различные анклавы жизни стартуют и развиваются одновременно, стараясь вытеснить из Вселенной другие анклавы. Правила оригинальной игры модифицированы для обеспечения развития конкурирующих анклавов и повышения вероятности зарождения жизни.

Правила игры:

  1. Место действия игры — двумерный массив.
  2. Каждая клетка на этой поверхности может находиться в двух состояниях: быть «живой» (принадлежащей конкретному анклаву) или быть «мёртвой» (пустой). Клетка имеет восемь соседей, окружающих её.
  3. Распределение живых клеток в начале игры называется нулевым годом жизни. Каждый следующий год рассчитывается на основе предыдущего по таким правилам:
    • если вокруг клетки имеется три или более живые клетки, принадлежащие анклаву X, а сама клетка - мертвая или принадлежит чужому анклаву, то в клетке появляется жизнь анклава X.
    • если живая клетка анклава X имеет меньше двух или больше трех живых соседей любых анклавов, то клетка умирает от недостатка ресурсов.
  4. Каждый год все анклавы начинают одновременно, в конкурентной борьбе друг с другом.
  5. Игра бесконечна, ибо Вселенная - ВЕЧНА!
Скачать шаблон кода и эталонную бинарную реализацию под Linux x86-64, GTK

Пример:

Используя предоставленный шаблон (или разработав средства визуализации самостоятельно), и ориентируясь на эталонную бинарную реализацию, студент должен разработать указанную игру. Требования и ограничения:
  1. Следование правилам игры.
  2. Использование средств параллельного исполнения кода.
  3. Обеспечение всех возможностей, предоставленных эталонной бинарной реализацией
  4. Скорость игры (лет в секунду) - 90% и выше от скорости эталонной бинарной реализации