COLORREF CCADlg::f(COLORREF y, COLORREF yU, COLORREF yUR,
 COLORREF yR, COLORREF yDR, COLORREF yD, COLORREF yDL,
 COLORREF yL, COLORREF yUL)
{
  // Переменная содержит единицу только в бите, соответ
  // ствующем первой плоскости
  COLORREF c=0x800000;

  // Переменная содержит единицу только в бите, соответ-
  // ствующем второй плоскости
  COLORREF b=0x400000;

  // Переменная, в которой хранится число живых соседей
  // клетки на второй плоскости
  int i=((yU&b)?1:0)+((yUR&b)?1:0)+((yR&b)?1:0)+
  ((yDR&b)?1:0)+((yD&b)?1:0)+((yDL&b)?1:0)+((yL&b)?1:0)+ 
	((yUL&b)?1:0);

  // Мертвая клетка оживет, если у нее три живых соседа
  if ((y&b)==0 && i==3) y|=c; else

  // Живая клетка останется живой, если у нее два
  // или три живых соседа
  if ((y&b)!=0 && (i==2 || i==3)) y|=c; else

  // В остальных случаях клетка мертва
  y&=(~c);

  return y;
}
446