Привет.
Внезапно (наверное, чтобы не готовиться к экзаменам =) решил накодить что-нибудь большое и интересное, чтобы серьезно, с контролем версий, интерфейсом и пр.) Выбрал в качестве платформы андроид, благо у меня есть телефон на нем, и я знаю Яву.
Писать я решил клеточные автоматы - это интересно, и на маркете я не нашел приложения с тем функционалом, что я планировал реализовать.
Вот что получилось:
// извиняюсь за лого, нарисованное в 4 ночи в пейнте)
Фичи:
- относительно быстро считает
(самое эффективное, что придумал: для каждой клетки динамикой узнаем количество живых клеток в ее окрестности, знаем, живет она или умирает)
// интересно, можно ли быстрее?
- можно создать свои правила для клеточного автомата или выбрать существующие (Conway's Life, Day And Night, HighLife и много еще на выбор)
- можно создавать свои собственные паттерны или тоже выбрать существующий
- вес в 30 кб
Просьба качать, ставить, тестить и оценивать =)
И у меня такой вопрос к опытным в этом деле людям (такие, думаю, здесь найдутся =).
Как привлечь народ?
Это ж не тру подход! ;-)
Я на первом курсе когда интересовался (в очередной раз) этой игрушкой, стал хранить только живые клетки в массиве, сортируя по одной из координат. Тогда шаг алгоритма занимает что-то вроде O(log(N)*sqrt(N))... (upd: я дурак, забыл что сортировка кой-чего тоже требует по времени - однако можно наверное в Heap хранить, чтобы не пересортировывать, как делал я) Очевидный плюс - игра на бесконечном поле - второй плюс - быстродействие не зависит от линейных размеров колонии (т.е. десяток разлетающихся в разные стороны планеров обрабатываются за понятное время). Очевидный гемор, впрочем, небольшой - поиск клеток, где должны зародиться организмы.
Потом я поумнел, ужаснулся и переделал с хранением в хэш-таблице. Получилось немного хуже, но таблица была самодельная. Думаю, с HashMap<Cell> шансы будут отличные. ;-)
По поводу "как привлечь народ", думаю, что шансов мало - эта забава популярна почти строго среди программистов, и то среди отнюдь не всех. Хотя считаю что это не должно смущать. Мне самому было её интереснее программировать, чем потом играть. %)
Это игра для 0 пользователей на которую были потрачены терраватты энергии и миллионы машино-часов (и баксов) во времена когда компы были большими. ;-)
Life
Жизнь (by Гарднер, по-русски)
To Abrackadabra видишь, а ты людей завлекать хотел. ;-)
Upd: пример эволюции одной из популярных конфигураций в Life (из той же википедии, для рекламы):
Нда, все стало ясно) Просто я тут, на физтехе, поспрашивал, все вроде знают =)