Доброго времени суток. Так заманчиво наблюдать, как шествует по «Хабру» негласный фестиваль в 30 строчек кода. И не только знатоки JavaScript участвуют, но и другие языки программирования присоединяются к этому очень увлекательному шествию. Вот и я не выдержал и решил по участвовать. Но так уж сложилось, что я не знаю сейчас на должном уровне других языков, кроме 1С.
По сему встречайте:

image


К сожалению из за попыток запихнуть в 30 сток, управление совершенно примитивно. А так же не реализована безграничность поля. Ну и понятно, что не «совсем честно» говорить о том, что здесь лишь 30 строк.

«Кликаем» на поле и выставляем начальный узор клеток, далее просто жмем кнопку «Сделать ход». Вот и все.

Собственно код обработки:
Процедура Установить(Х,У)
	Таблица.Область("R"+У+"C"+Х).ЦветФона(0,0,0);Таблица.Область("R"+У+"C"+Х).ЦветТекста(0,0,0);Таблица.Область("R"+У+"C"+Х).Значение=1;
КонецПроцедуры
Процедура Удалить(Х,У)
	Таблица.Область("R"+У+"C"+Х).ЦветФона(255,255,255);Таблица.Область("R"+У+"C"+Х).ЦветТекста(255,255,255);Таблица.Область("R"+У+"C"+Х).Значение=0;
КонецПроцедуры
Процедура Очистить()
	Для У=12 По 38 Цикл Для Х=2 По 42 Цикл Удалить(Х,У); КонецЦикла; КонецЦикла;
КонецПроцедуры
Процедура Ход()
	сз_Установить = СоздатьОбъект("СписокЗначений");
	сз_Удалить = СоздатьОбъект("СписокЗначений");
	Для У=12 По 38 Цикл Для Х=2 По 42 Цикл
			Итого = Таблица.Область("R"+(У-1)+"C"+(Х-1)).Значение+Таблица.Область("R"+(У-1)+"C"+Х).Значение+Таблица.Область("R"+(У-1)+"C"+(Х+1)).Значение
			      + Таблица.Область("R"+(У)+"C"+(Х-1)).Значение+Таблица.Область("R"+(У)+"C"+(Х+1)).Значение+Таблица.Область("R"+(У+1)+"C"+(Х-1)).Значение
			      + Таблица.Область("R"+(У+1)+"C"+Х).Значение+Таблица.Область("R"+(У+1)+"C"+(Х+1)).Значение;
			Если (Итого=3) И (Таблица.Область("R"+У+"C"+Х).Значение=0) Тогда сз_Установить.ДобавитьЗначение(Х,У); КонецЕсли;
			Если ((Итого=2) ИЛИ (Итого=3)) И (Таблица.Область("R"+У+"C"+Х).Значение=1) Тогда Продолжить; КонецЕсли;
			Если ((Итого<=1) ИЛИ (Итого>3)) И (Таблица.Область("R"+У+"C"+Х).Значение=1) Тогда сз_Удалить.ДобавитьЗначение(Х,У); КонецЕсли;
	КонецЦикла; КонецЦикла;
	Для СчетчикЦикла = 1 По сз_Установить.РазмерСписка() Цикл Х = сз_Установить.ПолучитьЗначение(СчетчикЦикла,У); Установить(Х,У); КонецЦикла;
	Для СчетчикЦикла = 1 По сз_Удалить.РазмерСписка() Цикл Х = сз_Удалить.ПолучитьЗначение(СчетчикЦикла,У); Удалить(Х,У); КонецЦикла;
КонецПроцедуры
Процедура ПриВыбореЯчейкиТаблицы(Адрес,Значение)
	ВремАдрес = СтрЗаменить(Адрес,"R","");
	У = Число(Лев(ВремАдрес,Найти(ВремАдрес,"C")-1)); Х = Число(Прав(ВремАдрес,СтрДлина(ВремАдрес)-Найти(ВремАдрес,"C")));
	Если (Х<=1) ИЛИ (Х>=43) ИЛИ (У<=11) ИЛИ (У>=39) Тогда Возврат; Иначе
		Если Таблица.Область("R"+У+"C"+Х).Значение = 1 Тогда Удалить(Х,У); Иначе Установить(Х,У); КонецЕсли;
	КонецЕсли;
КонецПроцедуры


P.S.: Изображение на картинке получено из узора в форме стрелки, а не нарисовано руками.

Ссылка на файл обработки: Life.ert
Почитать про игру «Жизнь» на Википедии: Жизнь (игра)