Результаты конкурса

в 9:12, , рубрики: diablo, game development, life, Блог компании Инфопульс Украина, метки: ,

Результаты конкурсаИтак, вот они результаты нашего последнего конкурса. Спасибо всем, кто принял участие.
В принципе, задачка была совсем не сложной (она такой и планировалась) и целых 56 человек с ней справились. Вот имена людей, которые сделали это первыми:

Под катом можно найти решение задачи и ссылки по теме.

Итак, задача в картинке. Скачиваем картинку и рассматриваем. Зумим. К стати, говоря, имеет значение, чем именно зумить. Например, Paint зумит эту картинку верно, а вот Irfan View и стандартный вьювер из пакета Microsoft Office начинают «фантазировать» и их «виденье» данной картинки могло очень затруднить определение того, что, собственно говоря, мы тут видим.

Результаты конкурса

Присмотревшись к увеличенному в Paint варианту мы видим какие-то смутно знакомые фигурки из точек. Что же это, где же я это видел? Ну конечно же! На картинке выше — классический «глайдер» (или «планер») из игры «Жизнь» — не менее классического примера клеточного автомата.

Результаты конкурса

Еще одним намеком на игру «Жизнь» было размещение топика в хабе «Game Development» — ну не из-за типа призов же он там находился. Соответственно, вся картинка в целом, наверное, представляет собой состояние популяции в какой-то момент времени. Самым логичным в этом месте рассуждений было бы перенести её с картинки в какую-нибудь программу, позволяющую запустить процесс генерации следующих поколений и понаблюдать за происходящим. Истинные джедаи в этом месте могли написать собственный парсер png-файлов и свою реализацию «Жизни». Чуть более практичные люди — преобразовали бы png в bmp (его уж всяко легче парсить), прочитали его и получили бы массив, который можно скормить в какую-нибудь из существующих реализаций игры. А совсем уж лентяи (в хорошем понимании этого слова) могли предположить, что, наверное, уже есть реализации, способные открывать графические файлы с популяциями и запускать их. И такие программы действительно есть. Одна из лучших — Golly. Она спокойно открывает предложенную картинку и вот что мы видим при запуске генерации следующих поколений:

И вот он текст — "HI TO @INFOPULSE_UKR FROM #HABR!"

Теперь пару пояснений к происходящему на экране. Мы уже знаем, что такое «глайдер» (см. выше). Именно из глайдеров и состоит текст, перемещение которого мы видим на экране.

Однако как же получился текст? Опять таки, давненько было придумано «глайдерное ружье» — фигура, способная генерировать бесконечное количество глайдеров, выстреливая их в пространство. Первые ружья просто генерировали поток глайдеров.

Результаты конкурса

То, что мы видим в данном случае — это модификация стандартного ружья, именуемая «Golly-gun» (по крайней мере мне данная фигура впервые встретилась под таким названием). Она позволяет генерировать поток глайдеров с пропусками, которые определяются количеством и положением глайдеров в «магазине» — начальном состоянии ружья. Фактически, мы имеем бинарный код. На сайте ранее упоминаемой программы Golly в шапке можно увидеть пример такого ружья.

Результаты конкурса

Но как же написать произвольный текст? Вручную создавать такое ружье весьма долго. К счастью, это и не нужно. Во-первых, существует готовый шаблон ружья с «полным магазином». Вы можете взять его и просто удалить лишние глайдеры, получив пропуски в генерируемых потоках. Во-вторых, можно не делать и этого — существует Ruby-скрипт, позволяющий сгенерировать ружье для определенного текста. Именно он и был использован для подготовки данной задачи. Всё просто, правда?

Поздравляю победителей — для согласования получения призов свяжитесь со мной (через личку Хабра или почту tangrofromhabr\gmail.com (\ = @) ).

Спасибо всем заинтересовавшимся — надеюсь, задача вам понравилась.

Автор: tangro

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js