#include ?stdafx.h?
#include ?stdio.h?
// Количество клеток
const int count=23;
// Функция, обеспечивающая ?заворачивание? структуры
// клеточного автомата в тор во избежание возникновения
// краевых эффектов
inline int TorIt(int x)
{
if (x<0) return x+count; else return x%count;
}
// Функция поведения клетки
// U - Верх; UR - Верх-Право; R - Право; DR - Низ-Право;
// D - Низ; DL - Низ-Лево; L - Лево; UL - Верх-Лево
int f(int y, int yU, int yUR, int yR, int yDR, int yD, int yDL, int yL, int yUL)
{
// Вычисление количества живых соседей
int i=yU+yUR+yR+yDR+yD+yDL+yL+yUL;
// Мертвая клетка оживет, если у нее имеются три
// живых соседа
if (y==0 && i==3) return 1;
// Живая клетка останется живой, если у нее имеются
// два или три живых соседа
if (y==1 && (i==2 || i==3)) return 1;
// В остальных случаях клетка будет мертвой
return 0;
}
// Главная функция приложения
int main(int argc, char* argv[])
{
// Массив для хранения текущих состояний клеток
int y[count][count];
// Массив для хранения новых состояний клеток
int y1[count][count];
// Переменная, используемая при обработке нажатия на
// клавиши и q
char c;
// Счетчик итераций
long iter=0;
// Начальное заполнение массива клеток
for (int i=0; i и q
c=getchar();
if (c==?q?) return 0;
iter++;
}
return 0;}