Clone wiki

SaveEndo / Save_Endo

Введение

Начнем со ссылок: Отчет Адепта: http://users.livejournal.com/_adept_/67233.html Сайт организаторов: http://save-endo.cs.uu.nl/

В 2006 году нужно было спасти инопланетянина Эндо потерпевшего крушение и адаптировать к земным условиям жизни. "На входе" у нас есть ДНК Эндо (7 мегабайт символов I,C,F,P), набор правил "исполнения" ДНК. При исполнении ДНК мы на выходе получаем РНК с помощью которого рисуется картинка. Если "запустить" ДНК как есть, то в итоге должна получиться картинка с грустным Эндо. В результате решения задачи нужно получить картинку максимально приближеную к картинке "весёлого Эндо" (адаптированного к земным условиям). Картинки грустного и весёлого Эндо (полоразмерные картинки можно увидеть на сайте организаторов):

Грустный Эндо Веселый Эндо

Подробнее о задании можно почитать у Адепта или на сайте организаторов.

Что уже готово и как принять участие

На данный момент написаны DNA->RNA и RNA->PNG трансляторы. Написаны на C# (потому что я знаю его хорошо), собираюсь переписать на Python (потому что хочу с ним познакомится).

Ознакомиться с кодом можно тут: https://bitbucket.org/akava/saveendo

Принять участие может любой желающий. Но нужно иметь ввиду, что задача решается for fun. Т.е. никак организовывать ее я не собираюсь, каждый будет ковыряться потихоньку, искать как же "сделать Эндо веселее". Общаться будем через bitbucket (там есть Вики и Issue tracker). Личные встречи тоже могут быть, но никаких раздач тасков и контроля выполнения не будет. С другой стороны -- если вы мегамозг и пощелкали все головоломки за выходные -- не портите мне фан, спасайте Эндо отдельно ;-) Вполне возможно, что мы так и будем действовать -- каждый работает отдельно, но каким-то образом будем обмениваться результатами. Это нужно для того чтобы не портить удовольствие друг другу и с другой стороны не оказаться в тупике при решении задачи (в принципе, именно для этого я все тут и рассказываю).

Что необходимо: Спецификация, Endo's DNA string (MD5 hash c496125ef1d22a61cb86aeb1a02c4092), source picture, target picture.

И еще: я собираюсь решать эту задачу очень неспешно -- на протяжении нескольких месяцев. Т.е. если вы возьметесь за нее серьёзно -- решайте ее, плиз, самостоятельно. Советоваться можно, но рассказывать как что получали нет :) Не портите мне удовольствие. И обязательно делитесть прогрессом на случай моего затыка :)

Текущий статус

На данный момент написаны DNA->RNA транслятор и RNA->PNG рендер. Написаны на C# (потому что я знаю его хорошо), собираюсь переписать на Python (потому что хочу с ним познакомится).

DNA->RNA выдает такой же трэйс как и тут: http://save-endo.cs.uu.nl/endo.trace Одна итерация ДНК занимает 32ms (не сильно быстро, но пока хватает. Как оптимизировать я знаю, но это трудоемко)

RNA->PNG -- кое как работает, выдает картинку, но что-то я не до конца разобрался с прозрачностью и поэтому получается не совсем то, что нужно.

DNA->RNA на ДНК без префикса прерывается на 133 итерации и, похоже, это неправльно потому как картинку грустного Эндо я не видел. Это не только потому, что рендерилка РНА плохо работает, но и потому, что РНК команд вываливается явно недостаточно.

Self Test пока не проходит, прерывается на 69 итерации с эксепшеном и Рендерер выдает не ту картинку (см. внизу, сравните с тем что должно быть :) http://pics.livejournal.com/_adept_/pic/0000bx97 )

Префикс для доступа к Repair Guide я уже получил и, в принципе, могу уже решать головоломки, но хотелось бы добить рендерелку и транслятор.

Моя рендерелка не работает скорее всего потому, что я использую .net цвета в которые уже встроена прозрачность, а формулы для рисования эту ирозрачность учитывают. Получается, что прозрачность срабатывает дважды -- в формулах расчета цвета и при рисовании картинки самим .net

SelfTest:

Images/SelfTest_Fail_rev15.jpg

Updated