Jabbers.org.ru
i2008
i2008@conference.xmpps.ru
Среда, 2 июля 2008< ^ >
Конфигурация комнаты

GMT+0
[03:03:56] Fly изменил(а) имя на Fly33
[03:04:15] Fly33 вышел(а) из комнаты: I'm happy Miranda IM user. Get it at http://miranda-im.org/.
[03:04:24] Fly вошёл(а) в комнату
[06:57:31] gpfault вошёл(а) в комнату
[06:59:04] Fly вышел(а) из комнаты: I'm happy Miranda IM user. Get it at http://miranda-im.org/.
[06:59:24] Fly вошёл(а) в комнату
[07:04:17] keguar вошёл(а) в комнату
[07:04:21] <keguar> я уже тут
[07:04:59] <Fly> Привет
[07:05:06] <Fly> Авторизуй меня
[07:05:32] <keguar> а аське я авторизовал целых 3 контакта
[07:05:42] <Fly> В jabber
[07:06:09] <keguar> про jabber погоди
[07:09:44] keguar вышел(а) из комнаты
[07:12:16] keguar вошёл(а) в комнату
[07:15:12] <gpfault> jabber.org - его uptime не превышает 98% несмотря на громкое название
[07:17:43] <Fly> Будите Мишу, и будем начинать. :)
[07:18:02] <keguar> он не рад будет
[07:18:43] <Fly> А jabber.org случаем не в США? О.о
[07:19:05] <keguar> а что с ним не так?
[07:19:23] <gpfault> может он и в США, но то что он каждые 2 недели на час-два падает это точно
[07:19:35] <Fly> Ну, как бы это далековато от Москвы.
[07:19:41] <keguar> какой сервер не падает?
[07:19:49] <Fly> Может лучше jabber.ru
[07:22:17] keguar-ru вошёл(а) в комнату
[07:22:23] <keguar-ru> мы тут
[07:22:28] <Fly> О.о
[07:22:42] keguar вышел(а) из комнаты
[07:22:54] <Fly> Тот jid можно удалять?
[07:25:46] keguar-ru вышел(а) из комнаты
[07:58:00] <Fly> jabber.org USA Chicago :)
[08:13:45] keguar вошёл(а) в комнату
[08:17:42] <gpfault> так что?
icfp 2007
http://save-endo.cs.uu.nl/
условие - http://save-endo.cs.uu.nl/Endo.pdf
данные - http://save-endo.cs.uu.nl/endo.zip
образцы - http://save-endo.cs.uu.nl/source.png http://save-endo.cs.uu.nl/target.png
А Миша пусть пока спит?..
[08:20:45] <Fly> Разбудите его что ли :)
[08:21:37] <gpfault> у меня нет никаких его координат кроме icq
[08:21:53] <Fly> У меня мобильник его есть.
[08:22:11] <Fly> Только мне дороговато из Ярославля звонить :)
[08:22:17] <Fly> Дать?
[08:22:46] <gpfault> давай, только мне а не сюда, а то он не оценит что его мобильник в публичных логах в инете
[08:22:55] <keguar> я уже похвонил
[08:23:03] <gpfault> ну хорошо
[08:23:10] <Fly> Дозвонился?
[08:23:18] <keguar> да, щас он проснется
[08:23:22] <Fly> :)
[08:28:57] mikleb вошёл(а) в комнату
[08:29:10] <mikleb> я тут
[08:29:14] <Fly> Круто.
[08:29:15] <gpfault> ура
[08:30:37] <mikleb> вы уже услвоие прочитали?
[08:30:48] <Fly> Шутишь что ли?
[08:30:59] <Fly> Там на несколько часов минимум
[08:31:13] <mikleb> фига там 22 страницы
[08:31:20] <gpfault> Во-во, в процессе. Там чтива не на 1 час
[08:50:52] <mikleb> может 2004 год писать:)?
[08:51:10] <Fly> Думаю, что там читать не меньше :)
[08:53:24] <keguar> http://alliance.seas.upenn.edu/~plclub/cgi-bin/contest/ants.html
[08:54:15] <Fly> Давайте, раз уж начали, то будем 2007 писать
[08:55:07] <mikleb> но в 2004 меньше написано
[08:55:18] <Fly> Не факт
[08:55:46] <mikleb> ну ладно..
[08:56:01] <Fly> Потом и его напишем :)
[08:57:46] <keguar> тут почти всё уже записано в кусках кода, требуются лишь пояснительные комментарии
[08:58:01] <Fly> Где?
[08:58:18] <keguar> в условии за 2007 год
[08:58:29] <Fly> Ты уже прочитал? О.о
[08:58:41] <keguar> нет, я в процессе
[09:49:13] <mikleb> ужас какой то
[09:49:34] <Fly> Кто уже на какой странице?
[09:49:40] <keguar> я уже заметки пишу
[09:49:51] <Fly> Ты уже прочитал?
[09:49:52] <gpfault> 17
[09:49:55] <Fly> 9
[09:51:10] <mikleb> а я хз на какой
[09:51:23] <Fly> Там внизу номера написаны
[09:51:40] <mikleb> ну всмысле что я не по порядку читаю
[09:51:48] <Fly> О.о
[10:24:08] <gpfault> мелкая деталь, однако видимо требует уточнения - в описании proc compose ()
у них может произойти переполнение (значение пиксела >255). Вероятно используется арифметика с насыщением, но явно я этого не нашёл. Я что-то не заметил, или там насыщение подразумевается по умолчанию?
[10:24:23] <gpfault> ~стр 19
[10:24:46] <Fly> Мде до туда ещё далеко :)
[10:28:10] <keguar> подготовил заметки. когда можно будет обсуждать, напишите мне что-нибудь в асю - она громко орет.
[10:28:34] <Fly> А что имеется в виду под заметками?
[10:28:48] <keguar> заготовки для обсуждения.
[11:13:35] keguar вышел(а) из комнаты: Replaced by new connection
[11:15:05] keguar-ru вошёл(а) в комнату
[11:18:14] <keguar-ru> как успехи?
[11:18:39] <Fly> Читаемс
[11:18:54] <Fly> Уже на 17-й странице
[11:19:25] <keguar-ru> Миша, а у тебя как?
[11:19:47] <gpfault> я дочитал.
вероятно, стоит определиться какие мы ставим подзадачи, чтоб была возможность начать их писать
[11:20:39] <keguar-ru> еще следует обсудить что писать и как.
[11:20:44] <gpfault> в частности стоит ли и можно ли раздробить задачу dna->rna на меньшие или это не имеет смысла
[11:21:17] <gpfault> да, некие общие концепции API необходимы
[11:21:18] <Fly> Там писать-то нечего.
[11:21:30] <keguar-ru> интересно, а Миша-то здесь?
[11:21:36] <Fly> :)
[11:22:11] <gpfault> > Там писать-то нечего.
хорошо, слово писать заменим на "отлаживать" :)
[11:22:15] <mikleb> тут я
[11:22:21] <keguar-ru> отлично, все в сборе.
[11:22:34] <keguar-ru> давайте по порядку.
[11:22:40] <Fly> gpfault, надо сразу правильно писать, чтобы отлаживать не пришлось. :)
[11:22:50] <keguar-ru> у кого есть вопросы по прочтенной части условия?
[11:22:57] <Fly> Стоять, я ещё не дочитал!
[11:23:19] <keguar-ru> мы знаем :-)
есть ли вопросы по той части, которую ты уже прочитал?
[11:23:39] <mikleb> нету
[11:23:40] <Fly> Нету. Я вдумчиво читаю.
[11:23:48] <gpfault> у меня принципиальных вроде тоже нет
[11:24:04] <keguar-ru> Вася, по заданному тобой вопросу ответ есть в faq на сайте контеста.
[11:24:12] <keguar-ru> зато у меня есть вопрос.
[11:24:33] <keguar-ru> стр. 11: quote(eps) = eps???
[11:24:57] <Fly> Помоему это очевидно
[11:25:23] <keguar-ru> лучше переспросить.
[11:26:09] <keguar-ru> по работе алгоритма вопросов тоже нет?
[11:26:23] <keguar-ru> замечательно, что всем все понятно :-)
[11:27:06] <keguar-ru> тогда можно обсудить как это реализовывать ))
[11:27:22] <Fly> Все пишут на C++?
[11:27:28] <gpfault> по работе алгоритма есть наблюдение что насколько я понимаю начать выдавать rna можно в процессе, не дожидаясь конца
[11:27:39] <keguar-ru> да, все пишут.
[11:28:04] <keguar-ru> можно. ты предлагаешь распараллеливать чтоли?
[11:28:37] <Fly> Я так понимаю, что его можно сразу же и исполнять.
[11:28:43] <keguar-ru> а зачем сразу?
[11:28:56] <Fly> А чего ждать-то?
[11:29:01] <keguar-ru> лучше разбить процесс на две независимые задачи.
[11:29:29] <gpfault> и сохранять rna в файл/etc, да
[11:29:34] <Fly> Возможно. Но это будет медленнее работать.
[11:29:40] <keguar-ru> почему же?
[11:29:55] <Fly> Мне кажется, что генерация картинки может занять много времени.
[11:30:26] <keguar-ru> 2 миллиона итераций над DNA тоже займут немало времени (см. главу 6)
[11:30:34] <gpfault> Тем логичнее сохранять в файл промежуточный результат - rna
[11:30:51] <keguar-ru> поддерживаю)
[11:31:14] <Fly> Значит надо заоптимайзить всё очень жёстко.
[11:31:35] <gpfault> когда работать будет - заоптимайзим
[11:31:58] <keguar-ru> текс. мне кажется что вторую часть алгоритма реализовать очень просто :)
[11:32:18] <Fly> Вторую, это какую?
[11:32:22] <Fly> Рисование?
[11:32:29] <keguar-ru> да, рисование.
[11:32:33] <keguar-ru> сделать это прямо в raw-memory и сохранять результат в bmp-файл, или что-нибудь посложнее.
[11:32:47] <keguar-ru> посложнее - в файл со сжатием без потерь, вроде PNG.
[11:32:57] <Fly> Мне дак первая больше нравится, ибо рисовать я вообще не умею.
[11:33:26] <gpfault> для меня первая тоже кажется более простой
[11:33:49] <keguar-ru> у кого-нибудь есть идеи по второй части алгоритма(рисованию)?
[11:34:04] <Fly> Я её ещё не дочитал до конца.
[11:34:17] <keguar-ru> Вася?
[11:34:18] <gpfault> есть (очевидная впрочем) идея что вычисления paint bucket можно кардинально упростить
[11:34:27] <keguar-ru> да, конечно :)
[11:35:23] <keguar-ru> у меня есть идея о том, что для отладки будет полезно смотреть промежуточные результаты рисования.
[11:35:43] <keguar-ru> особенно - в моменты смешивания слоев.
[11:36:06] <gpfault> сохранение в промежуточные файлы?
[11:36:18] <keguar-ru> лучше на экран конечно, но для начала можно и в файлы.
[11:36:44] <keguar-ru> bmp файлы имеют очень естественную структуру, их можно делать ручками.
[11:37:58] <keguar-ru> интерпретировать во второй части почти ничего не надо.
трудоемких операций там четыре - линия, заполнение, два вида смешивания слоев.
[11:38:18] <keguar-ru> проблемы могут возникнуть только при ускорении этих операций.
[11:38:45] <keguar-ru> текс.
[11:39:07] <keguar-ru> еще понадобится утилита - diff для изображений.
кто-нибудь слышал про существующие аналоги?
[11:39:32] <Fly> А что это вообще такое?
[11:40:04] <gpfault> для чего понадобится? для проверки результата?
[11:40:06] <keguar-ru> нам нужно
1) знать число отличающихся пикселей в двух изображениях
2) строить визуальную разницу двух изображения (xor-ом, например)
[11:41:23] <keguar-ru> первое потребуется для того чтобы посчитать risk своего ответа, и сравнить его со значениями из таблицы: http://save-endo.cs.uu.nl/submits/scoreboard
[11:41:28] <keguar-ru> http://save-endo.cs.uu.nl/submits/scoreboard
[11:42:10] <keguar-ru> risk вычисляется по формуле 10*число различных пикселей + длина префикса (глава 5.1)
[11:42:42] <keguar-ru> второе понадобится нам для работы :)
[11:42:44] <gpfault> я думаю, что эту утилиту следует сделать на основе программы-второй части после того как мы закончим с решением задачи, ибо в задачу она не входит
[11:42:58] <gpfault> а просто визуально оценить?
[11:43:20] <keguar-ru> цвета трудно на глаз различить.
[11:43:51] <keguar-ru> ок, значит сделаем такую утилиту сами, когда дойдет дело до тонкостей :)
[11:43:52] <gpfault> ну изначально там картинки настолько разные что отличение цветов и не нужно
[11:44:04] <gpfault> да, утилита скорее не горит
[11:44:05] <keguar-ru> ок.
[11:44:16] <keguar-ru> по второй части у мну всю.
[11:44:31] <keguar-ru> по первой я могу сказать много больше )
[11:45:02] <keguar-ru> давайте кто-нибудь еще тоже что-нибудь скажет :)
ваши идеи - welcome
[11:45:23] <Fly> Есть идея тупо это написать.
[11:45:37] <keguar-ru> насколько тупо?
[11:45:45] <gpfault> стоит ли делать для первой части сразу/только на C++ или делать альтернативную (медленную) версию на python/etc для проверки C++ной?
[11:46:04] <Fly> По примерам можно проверить.
[11:46:25] <keguar-ru> note: 2 миллиона итераций, 300 тыщ rna команд, cost = 192 миллиона
[11:46:26] <Fly> Да и в конце концов, проверить на начальной днк с сайта
[11:46:45] <gpfault> это да
[11:47:07] <gpfault> на cost я полагаю вначале можно вообще забить
[11:47:31] <Fly> Из 300 тысяч рнк команд используется 20/2^14=0,001220703125
[11:47:44] <Fly> от общего числа
[11:48:40] <keguar-ru> я не понял записи 20/2^14 = 0.001...
[11:48:41] <gpfault> эээ я видимо не понял откуда числа 20 и 2^14
[11:49:10] <gpfault> а, нашёл
[11:49:10] <Fly> 20 - количество рабочих рнк
[11:49:22] <gpfault> хотя нет
[11:49:24] <Fly> 2^14 = 4^7 = количество рнк
[11:49:37] <Fly> (различных)
[11:49:47] <gpfault> и что это даёт?
[11:50:11] <gpfault> фильтрация вывода? Лучше на стадии ввода, я полагаю
[11:50:19] <Fly> Все нерабочие рнк можно фильтровать.
[11:50:32] <keguar-ru> хорошая идея.
[11:51:42] <keguar-ru> я посмотрел что в первой части алгоритма делается с данными.
[11:51:44] <gpfault> там написано что они не содержат никакой инфы. Просто они не входят в описанные команды рисования. Фильтровать их при выводе не стоит
[11:51:47] <Fly> Да можно ещё тупее сделать. Готова рнк - если она рабочая, то вызываем для неё функцию отрисовки.
[11:52:19] <gpfault> выводим в файл/пайп а что с ней делать решит отрисовщик
[11:52:35] <keguar-ru> все возможные rna могут быть отрисованы :0
[11:53:29] <gpfault> данные вроде бы нигде не модифицируются и все склейки происходят только с одной из сторон
[11:53:52] <keguar-ru> с данными вообще очень интересные вещи происходят.
[11:54:23] <Fly> Если задуматься, то там каждую рекурсию в линейный цикл можно переделать.
[11:54:33] <keguar-ru> и нужно.
[11:54:56] <keguar-ru> про данные:
5) в функции matchreplace: c - это не список, а обыкновенный стек; e - обыкновенный list/vector (никаких магических операций кроме random access индексирования к нему не применяется); замечу что при работе с e сначала он ведет себя как list, а потом он ведет себя как vector, а значит в определенный момент можно выполнить преобразование list->vector;
[11:56:22] <gpfault> e - list? почему? я не вижу вставки в середину
[11:56:31] <keguar-ru> вставки только в конец.
[11:56:40] <Fly> Тогда чистый вектор
[11:56:50] <keguar-ru> тем лучше.
[11:57:19] <keguar-ru> далее, члены списка/вектора e - это интервалы в dna. это ясно?
[11:57:33] <Fly> угу
[11:57:39] <gpfault> да
[11:57:57] <Fly> Длину этого вектора можно посчитать заранее по количеству скобочек :)
[11:58:01] <keguar-ru> далее, конкатенация строк неизвестной длины происходит только в replace
[11:58:10] <Fly> Так что динамическая структура не нужна
[11:58:51] <keguar-ru> replace вообще можно сильно заоптимизировать, если особым образом хранить dna :)
[11:59:20] <keguar-ru> в условии сказано, что длина dna в любой момент времени не должна превышать 25 миллионов символов.
[11:59:33] <gpfault> там происходит фактически замена старого (отработанного) префикса на новый
[11:59:40] <keguar-ru> это значит что можно один раз выделить буфер на 25 мегабайт.
[11:59:42] <Fly> Опять стек
[11:59:48] <keguar-ru> и хранить dna в его конце.
[12:00:01] <gpfault> да, это самое разумное с буфером
[12:00:28] <keguar-ru> когда работает функция replace, она может перебирать t из template в обратном порядке.
[12:00:42] <keguar-ru> это не влияет на результат.
[12:01:09] <Fly> круто
[12:01:10] <keguar-ru> и соответственно, она может присоединять новые символы к началу dna в пределах выделенного буфера.
[12:01:45] <gpfault> нет. Она использует e[n], которые суть есть память там
[12:02:00] <gpfault> оно может перезаписаться ненароком
[12:02:15] <keguar-ru> нет, не может, поскольку e ссылается на неизменный суффикс dna.
[12:02:47] <gpfault> так этот суффикс уже отработан и префикс приписывается на его место
[12:03:12] <Fly> 117-118
[12:03:15] <keguar-ru> dna хранится в конце буфера, и префикс записывается на неиспользуемую память.
[12:04:26] <keguar-ru> e[n] ссылаются на ту часть строки dna, которая не изменяется при работе replace.
[12:04:40] <keguar-ru> эта часть даже не перемещается в памяти никуда.
[12:05:17] <gpfault> e[n] ссылаются на ту часть строки dna, которая уже отработана, так?
[12:05:52] <keguar-ru> жаль.
[12:06:15] <keguar-ru> понятно, значит все менее круто.
[12:06:34] <gpfault> для r надо завести ещё один массив на 25Мб
[12:06:50] <keguar-ru> и как конкатенировать будем 2 миллиона раз?
[12:07:31] <gpfault> только если будет очень много вызовов protect(0, большая_строка) это будет неэффективно
[12:07:47] <keguar-ru> похоже что и ссылочная организация e идет лесом.
[12:07:54] <Fly> protect можно линейно развернуть.
[12:08:47] <Fly> По каждому символу сразу писать, что из него получится
[12:09:05] <gpfault> если protect(0, большая_строка) вызов мало то конкатенация не будет самой дорогой операцией
[12:09:32] <keguar-ru> Fly: ты имеешь ввиду задом на перед?
[12:09:41] <Fly> Как угодно
[12:10:02] <keguar-ru> для asnat можно сделать кеширование.
[12:10:19] <keguar-ru> (возможно)
[12:11:13] <keguar-ru> rna можно массивом сделать.
[12:11:20] <keguar-ru> (очевидно :))
[12:11:25] <Fly> рна можно вообще не делать :)
[12:11:46] <Fly> Вызывать сразу отрисовку для куска днк
[12:11:47] <gpfault> rna это просто поток вывода :)
[12:12:01] <keguar-ru> :)
[12:13:46] <keguar-ru> получается - делаем в лоб через массивы, не используя рекурсий.
[12:13:58] <Fly> Угу
[12:14:28] <gpfault> даже в matchreplace без рекурсии?
[12:14:55] <keguar-ru> а где там рекурсии?
[12:15:08] <gpfault> Операция ?s
[12:15:08] <Fly> Там стек только
[12:15:24] <Fly> Это разве рекурсия?
[12:15:24] <keguar-ru> ?s = поиск
[12:15:28] <Fly> Это кмп
[12:15:54] <gpfault> а s та фиксированно?
[12:16:04] <keguar-ru> нет, оно записано в паттерне
[12:16:14] <Fly> Оно задаётся при построении p
[12:16:29] <gpfault> а, точно. Я подумал что это ещё один паттерн
[12:16:44] <gpfault> тогда да там тоже не надо рекурсии
[12:17:00] <keguar-ru> кстати, в e могут быть пустые строки)
[12:17:15] <gpfault> и что?
[12:17:30] <keguar-ru> длину строки s[9; 3] надо определять корректно :)
[12:17:54] <gpfault> не может там такого вроде получиьтся
[12:18:15] <Fly> Не может
[12:18:20] <gpfault> текущее i вроде не меньше предыдущего
[12:18:27] <keguar-ru> значит это глюк.
[12:19:04] <keguar-ru> в http://save-endo.cs.uu.nl/endo.trace
есть какие-то вспомогательные данные для отладки первой части алгоритма.
[12:20:11] <keguar-ru> кто что будет писать?
[12:20:53] <gpfault> по структурам данных для первичной реализации 1-ё части ещё идеи есть? Если нет, то надо определиться с интерфейсрм первой части.
[12:21:20] <gpfault> Я полагаю .\part1 inputfile outputfile
[12:21:21] <Fly> Чаровские массивы.
[12:22:07] <keguar-ru> отличный интерфейс)
[12:22:10] <gpfault> если захотим сразу рисовать запустим как .\part1 inputfile con|.\part2 con
[12:22:48] <gpfault> *надеюсь что так заработает
[12:23:26] <Fly> Может лучше тогда stdin и stdout использовать?
[12:23:39] <keguar-ru> не нужно
[12:23:43] <Fly> .\part1 <inputfile >outputfile
[12:23:49] <keguar-ru> в stdin лучше отладочную печать делать
[12:23:54] <keguar-ru> *в stdout
[12:23:54] <gpfault> если хочется использовать stdin и stdout - пишешь con вместо аргумента
[12:23:55] <Fly> \part1 <inputfile|.\part2 >outputfile
[12:24:16] <Fly> Лучше в stderr
[12:24:25] <gpfault> да, логи в stderr
[12:24:33] <keguar-ru> отладочная печать должна быть в интерактивном канале
[12:25:05] <keguar-ru> как вывести stderr в консоль?
[12:25:17] <keguar-ru> и вообще это несерьезно, stderr
[12:25:21] <gpfault> эээ, а его там нет???
[12:25:28] <keguar-ru> никто из вас не будет писать fprintf(stderr,...)
[12:25:29] <Fly> Она по умолчанию там.
[12:26:03] <Fly> Придётся писать
[12:26:08] <keguar-ru> команд для отладочной печати будет явно больше чем команд для вывода ответа
[12:26:17] <Fly> Потому, как printf( = fprintf( stdout,
[12:27:02] <keguar-ru> я предлагаю ввод/вывод через файлы, а stdin/out оставить для отладки.
[12:27:40] <gpfault> в общем, да
[12:28:30] <gpfault> ладно с интерфейсом ясно. Вроде. Есть ли идеи по дроблению первой части на подчасти?
[12:28:33] <Fly> О.о У нас град идёт.
[12:29:03] <Fly> Есть идея первую часть сделать монолитной :)
[12:29:21] <keguar-ru> нас четверо.
[12:29:30] <keguar-ru> (если у Миши не пропало желание писать)
[12:29:46] <Fly> В любом случае, я сейчас дочитаю и пойду кушать :)
[12:30:06] <keguar-ru> надо решить что делать.
[12:30:20] <keguar-ru> я могу вторую часть написать. легко, кажется.
[12:30:36] <Fly> Пиши.
[12:30:48] <Fly> Ты, кажется, единственный, кто это может. :)
[12:31:11] <keguar-ru> я не понимаю какие там могут быть сложности.
[12:31:29] <keguar-ru> разве что с выводом в PNG)
[12:32:17] <gpfault> именно, API библиотеки по работе с графикой
относительно первой части.
насколько я понимаю и я и Витя готовы её написать
[12:32:57] <gpfault> Можно или сделать 2 реализации на С++ или одну на С++ вторую на python или поступить както ещё
[12:33:04] <keguar-ru> хотите стриминг RNA прямо в part2?
[12:33:21] <Fly> Я толко C++
[12:33:41] <gpfault> я понимаю, на python я могу/возможно хочу
[12:34:00] <keguar-ru> *я ушел жить в svn/part2
[12:34:00] <gpfault> ну пусть part2 читает из файла
[12:34:16] <gpfault> тогда и стримминг будет ей
[12:34:25] <Fly> Дак может из stdin?
[12:35:04] <gpfault> из файла - универсальней. stdin - частный случай. Хотя не суть.
[12:35:36] <Fly> Дак stdin может быть и файлом
[12:36:40] <keguar-ru> *пользую vs2005
[12:36:48] <Fly> Аналогично
[12:38:11] <gpfault> может. А потом мы захотим (например) передавать второй какой-нибудь второй поток данных. И тогда придётся всё равно их файла.
Но это непринципиально - хотите stdin - делайте stdin.
Вопрос (к keguar в частности), что скорее будет разумней - 2 версии на C++ или C++ и python?
[12:39:06] <keguar-ru> две версии будет разумнее.
пусть каждый пишет свою версию на том языке, на котором у него это получится лучше.
[12:40:22] <gpfault> >пусть каждый пишет свою версию на том языке, на котором у него это получится лучше.
это значит 2*C++
[12:40:52] <Fly> А потом помержим.
[12:41:01] <Fly> Или просто выберем быстрейшую.
[12:41:22] <keguar-ru> наша задача состоит в повышении вероятности написания хорошей версии, а не в обеспечении максимального языкового разнообразия.
[12:42:38] <gpfault> потом - посмотрим :)
пользую vs2005 EE (без windows.h)/vs2008(c windows.h)/gcc-mingw(c windows.h)
поэтому если не надо - windows.h просьба не включать
[12:43:04] <Fly> А он вообще нужен?
[12:43:13] <keguar-ru> хм...
[12:44:01] <keguar-ru> потом уберу его.
[12:44:06] <gpfault> имхо -нет, но мнения бывают разные
[12:44:32] <gpfault> если надо - включай, ничего страшного
[12:44:34] <keguar-ru> никогда не любил общаться с бинарными файлами через crt.
[12:45:17] <gpfault> тогда забей, я переживу
[13:42:01] <gpfault> Fly: наверное ты и сам заметил но я лучше скажу: в функции nat() даже и стек делать не надо - он уже фактически есть, представленный самой dna
[13:48:12] <Fly> В nat вроде вообще всё очевидно
[14:07:53] <Fly> Погодь. Ты хотел nat через стек разворачивать? О.о
[14:33:56] <keguar-ru> ура!! у нас тоже град =)
[14:36:48] <keguar-ru> не хотел бы я быть сейчас на улице)
[15:39:39] <gpfault> есть ещё мысля по поводу константных строк в pattern и templates. Наиболее эффективно их представлять в виде указателя на начало и вычислять с помощью известного преобразования лишь при необходимости. Правда я, видимо, вначале дойду до работающей версии (ещё очень-очень далеко), а потом подкорректирую её так.
[15:40:48] <Fly> Ты про consts()?
[15:41:02] <Fly> Или про что?
[15:41:15] <gpfault> и про consts() и просто про константные куски, которые представляются тем же преобразованием
[15:41:42] <gpfault> там на самом деле можно немного переписать/упростить определение через consts
[15:41:57] <Fly> consts() я пишу прямо в pattern
[15:42:08] <gpfault> сейчас я тоже
[15:42:15] <Fly> А как надо?
[15:42:25] mikleb вышел(а) из комнаты: Replaced by new connection
[15:42:25] mikleb вошёл(а) в комнату
[15:43:23] <gpfault> сохранить указатель на начало, и пропустить. А когда дело дойдёт до обращения к нему при паттерн матчинге (если дойдёт - а я думаю обычно не будет доходить)- тогда вычислить
[15:44:22] <Fly> А как ты обойдйшься без вычисления?
[15:45:37] <gpfault> вычислять я его буду, но только когда оно понадобится, не раньше. А оно может и не понадобиться
[15:56:42] keguar-ru вышел(а) из комнаты
[16:22:37] <gpfault> тут оказывается у Саши интернет отвалился :(
[16:22:50] <Fly> О.о
[16:29:52] keguar вошёл(а) в комнату
[16:30:57] <keguar> провайдер оправдывается что это плановые работы)
[16:31:24] <Fly> Фигасе. У вас провайдеры оправдываются? О.о
[16:31:58] <keguar> я написал нечто, сейчас буду отлаживать.
[16:41:23] <gpfault> keguar:если хочешь поэксперементировать есть 9Кб кусок rna, который получается (я надеюсь правильно) на первой итерации.
в svn файл rna_results\v0_default_rna_start.
[16:41:55] <keguar> о, спасибо большое!
я его обязательно попробую после простых тестов
[16:56:35] Lubagov_H вошёл(а) в комнату
[16:57:53] <keguar> у нас гости?
[16:58:37] <Lubagov_H> Ну, да смотрю конфа, новая... и еще и люди в ней..
[16:58:40] <Lubagov_H> Привет
[16:58:43] <Lubagov_H> всем
[16:59:48] <Lubagov_H> Интересная такая история... чет тварите?
[17:01:03] <keguar> http://save-endo.cs.uu.nl/
[17:02:56] <gpfault> привет.
к icfp готовимся.
искали где можно попростому создать конфу с сохранением истории в web, и вот у вас можно оказалось можно, спасибо за это, а то эту опцию выключают везде.
[17:04:47] <Lubagov_H> У... ТОка смотри я периодами все скидываю (истории сервера пока мало еще не скидывал) но логи ботов, убераю, на lubagov.yadviga.ru
[17:05:21] <Lubagov_H> А то у меня места нет на сервере, а боты наговаривают, по 250 мб за 15 дней...
[17:05:46] <gpfault> нам только на несколько дней надо. Мегабайты постить не будем, ботов не держим.
[17:11:40] <Lubagov_H> Ладно, я смотрю тут всё дико серьёзно, пошёл я дальше делать калькулятор, на lex и yacc...
[17:12:50] Lubagov_H вышел(а) из комнаты
[17:14:38] <keguar> у меня линия нарисовалась :)
[17:15:29] <gpfault> на том вводе?
[17:28:46] <keguar> mark; go x40; turn_cw; go x20; add_red; line
[17:29:04] <keguar> даже закрашивание работает.
[17:30:33] <gpfault> а на том rna что-то есть?
[17:30:47] <keguar> еще не пробовал :(
[17:35:02] <gpfault> кхм, кажется там неправильное rna - судя по http://save-endo.cs.uu.nl/endo.trace
там должно быть 1343 байта, а у меня много больше
Хотя многие другие параметры корректны.
[17:35:34] <gpfault> не, всё правильно. Оно в 7 раз отличается
[17:47:19] <Fly> Ты на примерах из Figure 16 отлаживайся
[17:52:46] <keguar> я запустил ваш пример))
[17:53:00] <keguar> угадайте что там?)
[17:53:22] <keguar> а ничего!! :)
[17:53:35] <keguar> 73 lines drown
2 flood filled
1 layers added
1 layers composed
0 layers clipped
[17:55:54] <gpfault> и что оно рисовало 73 линиями?
[17:56:17] <keguar> это были черные линии
[17:56:51] <gpfault> оно рисовало чёрным по чёрному, да. Но рисовало же
[17:57:11] <gpfault> можно похачить цвет
[17:57:36] <keguar> сделаем
[18:04:19] <keguar> Statistics:
73 lines drown
2 flood filled
1 layers added
1 layers composed
0 layers clipped
also: 1 times color added to a bucket
1 times alpha added to a bucket
3 times bucket has been cleared
1024 times brush was moved
86 times direction was turned clockwisely
78 times direction was turned counter-clockwisely
73 mark commands used
Total meaningfull commands processed: 1343
[18:05:20] <keguar> все команды оказались со смыслом.
[18:08:29] <gpfault> off, keguar: гроза на улице есть?
[18:08:35] <keguar> хм... я хакнул цвет и увидел что оно нарисовало как в верхнем левом углу экрана след. последовательность:
IPIFFCPICFPPICIICCIICIPPPFIIC
[18:08:47] <keguar> есть.
[18:08:51] <keguar> но далеко.
[18:09:04] <Fly> Она у нас :)
[18:09:16] <gpfault> гхм, у меня
[18:09:19] <keguar> её слышно.
[18:09:28] <gpfault> и видно:)
[18:09:47] <keguar> а у меня пурпурный облачный закат. дождя нет.
[18:11:11] <keguar> вообще странно это, потому что закат я наблюдаю в направлении центра города.
[18:12:13] <keguar> текс. сгенерить чтоле себе случайную картинку :)
[18:13:21] <Fly> gpfault, у тебя твой вариант уже работает?
[18:13:29] <gpfault> скорее да
[18:13:35] <Fly> Это как?
[18:13:49] <gpfault> первые 9ть итераций совпадают с http://save-endo.cs.uu.nl/endo.trace
[18:14:06] <gpfault> но там не все операции используются
[18:14:23] <gpfault> а у тебя?
[18:14:32] <Fly> Ща проверю.
[18:15:16] <gpfault> я думаю следует для проверки корректности сравнить наши логи после 9ти итераций между собой.
сейчас выложу.
[18:15:34] <Fly> А что в логах? рнк?
[18:16:21] <gpfault> в логах продолжение http://save-endo.cs.uu.nl/endo.trace для следующих шагов
[18:16:47] <Fly> Я пока на примерах отлажусь.
[18:20:30] <keguar> слачайные файлы неинтересны :)
[18:21:18] <keguar> обычно результат случайных действий - это одноцветное поле
[18:21:37] <keguar> Вася, можешь выложить свою RNA?
[18:21:40] <keguar> всю?
[18:23:12] <gpfault> а её пока больше нет
[18:23:33] <gpfault> вернее её стало на 300 байт больше
[18:24:53] <gpfault> в общем генератор я выложил, он много гадит в stderr
надо будет дописать префикс который они советовали в части 6
[18:28:58] <keguar> по-моему он 90% времени занимается тем что гадит в stderr
[18:29:31] <gpfault> оченьможет быть
[18:29:40] <gpfault> сейчас отключу и отпрофилирую
[18:29:43] <keguar> > out.txt не работает.
[18:29:59] <gpfault> 2>out.txt потому что
[18:30:10] <keguar> хорошо.
[18:31:54] <gpfault> запустил, что-то он генерит но уменя нет никакой уверенности что он правилно работает после 9-й итерации, там далеко не все функции покрываются
[18:32:01] <keguar> каждый MANY итераций можно делать fflush(outputFile)
[18:32:46] <keguar> а иначе в outputFile что-то появится только в самом конце работы программы.
[18:33:19] <keguar> по крайней мере я езе не дождался чтоб что-нить появилось :)
[18:33:56] <gpfault> у меня появляется сразу же
[18:34:16] <gpfault> выложил v2_may_be_buggy. кусок побольше
[18:34:24] <gpfault> в svn
[18:36:40] <keguar> отлично! новый кусок закрашивает верхнюю 1/6 часть поля градиентной закраской :)
[18:37:02] <keguar> фиолетового цвета.
[18:37:34] <keguar> не похоже чтоб там были ошибки.
[18:38:43] <keguar> Вася, а у тебя до конца не досчитывается никак?
[18:39:12] <keguar> ну да, меня тупит.
[18:39:25] <gpfault> у меня там fflush стоял после КАЖДЫХ 7 байт :)
сейчас сниму.
Это результат порядка 10000 итераций. А обещают много больше
[18:39:44] <keguar> должно быть 300000.
[18:40:17] <keguar> пока ты оптимайзишь, я могу поставить на полчасика текущую версию считать.
[18:40:52] <keguar> но надо ффлашей понаставить раз в MANY итераций.
[18:41:07] <gpfault> японимаю, но быстрее не стало
[18:41:18] <keguar> ок.
[18:41:32] <keguar> кстати, у меня тут уже 100 kb сгенерилось.
[18:41:44] <keguar> автоматический ффлаш произошел после 30 мб логов :)
[18:42:01] <gpfault> странно, очень.
[18:42:16] <gpfault> сейчас выложу exe без логов
[18:44:26] <gpfault> выложил
[18:45:01] <gpfault> но там есть что пооптимизировать по идее.
некоторые вещи я просто забил.
[18:45:44] <gpfault> и ещё возможно там память течёт
[18:46:49] <keguar> 70 мегов скушало
[18:47:03] <Fly> Моя больше скушает. :)
[18:52:55] <keguar> Вася, вообще что-то не так.
[18:53:29] <keguar> все внезапно становится черным после 6000-ной команды.
[18:53:53] <gpfault> а перед этим что?
[18:55:15] <keguar> посмотри в svn/images
[18:56:24] <keguar> возможно, баги в рендерере, потом что потом все равно какие- правдоподобные линии рисуются.
[18:56:57] <gpfault> какая ревизия? 12? images нету
[18:57:36] <keguar> тогда part2/part2.rar
[18:58:58] <gpfault> вижу, всё чОрное
[18:59:48] <keguar> не всё
[19:00:06] <keguar> но кто-то там все зачерняет время-от времени
[19:01:13] <keguar> Statistics:
808 lines drown
4 flood filled
4 layers added
3 layers composed
0 layers clipped
also: 661 times color added to a bucket
44 times alpha added to a bucket
8 times bucket has been cleared
6168 times brush was moved
1836 times direction was turned clockwisely
848 times direction was turned counter-clockwisely
809 mark commands used
Total meaningfull commands processed: 11193
[19:02:12] <gpfault> запусти ту версию что я тебе дал, чтоб плучить плоное rna. Хрен я её ускорю, профалер почему-то несёт чушь
[19:02:13] <keguar> градиент чтоли слоями сделан???
[19:02:42] <keguar> или построчно...
[19:11:28] <gpfault> вернусь через 10 мин
[19:11:31] gpfault вышел(а) из комнаты
[19:19:52] gpfault вошёл(а) в комнату
[19:20:17] gpfault вышел(а) из комнаты
[19:22:18] <Fly> Для http://save-endo.cs.uu.nl/endo.trace какая днк входная?
[19:25:01] <Fly> keguar, тебе в каком ввиде вход подавать?
[19:25:26] <keguar> можно файлом.
[19:26:03] <Fly> В каком ввиде?
[19:26:10] <Fly> Формате каком?
[19:26:26] <keguar> в формате многабукф
[19:26:27] <Fly> По одной рнк на строчку сойдёт?
[19:26:50] <Fly> Или надо тупо подряд?
[19:27:09] <keguar> мне в принципе переделать можно за 30 секунд.
[19:27:13] <keguar> решай сам.
[19:27:23] <Fly> Тогда построчно
[19:27:41] <keguar> построчно считывать медленне будет.
[19:27:49] <keguar> это единственная разница наверное.
[19:27:56] <Fly> Значит подряд сделаю.
[19:28:54] <Fly> Тебе прогу дать мою или как?
[19:29:10] <keguar> лучше файл в свн.
[19:29:21] <Fly> Это как?
[19:29:46] <Fly> Это тот вчерашний чат?
[19:29:49] gpfault вошёл(а) в комнату
[19:30:11] <keguar> что такое?
[19:30:12] <Fly> gpfault, ты на какой днк запускал?
[19:30:25] <Fly> Чтобы сравнить.
[19:31:51] <gpfault> на endo.dna из архива http://save-endo.cs.uu.nl/endo.zip.
[19:32:51] <gpfault> профайлер отказывается работать с моей прогой :( Число вызовов считает, а общее время 0.01 сек
[19:33:14] <Fly> А сколько там рнк получается?
[19:33:23] <Fly> У меня 67 метров написала О.о
[19:33:34] <Fly> После чего я её снёс :)
[19:34:31] <gpfault> у меня не досчитывает до конца. Вернее я пока не дожидался.
67 метров - возможно, но многовато
[19:35:00] <gpfault> ты проверь результат после 10 итераций
[19:35:20] <Fly> ща
[19:36:28] <gpfault> keguar, ты запускал мою прогу надолго, чтоб получиь большой результат?
[19:36:30] <keguar> хм... на первых 11тыщ. итерациях рисуется небо, и никак не нарисуется.
рендерит моя прога все таки неверно.
[19:36:51] <keguar> да, уже готово 643кб RNA
[19:37:07] <keguar> 65 минут работает :(
[19:37:12] <Fly> О.о
[19:37:43] <gpfault> я хз, где именно там править можно конечно наугад, но...
[19:38:04] <keguar> может мой профайлер заюзать? )) только там pdb нужен
[19:38:22] <gpfault> можно, сейчас сделаю
[19:40:23] <gpfault> какой debug info format?
[19:40:26] <keguar> *слава двухядерным процессорам, кстати :-) *
[19:40:53] <keguar> да ставь ZI
[19:41:24] <keguar> хотя это может быть чревато потерей перформанса
[19:41:43] <keguar> Zi давай.
[19:43:10] <gpfault> пофиг на перформанс. Я вообще не знаю куда крутить
[19:43:15] <gpfault> залил
[19:44:26] <gpfault> он остановится после 10000 итераций
[19:44:28] <keguar> папка release?
[19:45:19] <gpfault> pdb_release и pdb_Debug
[19:48:07] <gpfault> оно ещё в вывод не пишет, но это не суть
[19:50:49] <keguar> BYTES=0 - это нормально?
[19:51:07] <gpfault> да, тав вывод отключён
[19:51:35] <keguar> лол
[19:51:37] <keguar> ну и результаты
[19:51:45] <keguar> PER MODULE STATISTICS:
REL % ABS cpu*sec ABS events MODULE INFORMATION
-======-============--==========-=================================================================================
99.69% 95.225 389946 MSVCR80.dll (loaded from file "C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.1433_x-ww_5cf844d2\MSVCR80.dll")
0.17% 0.160 655 ntdll.dll (loaded from file "C:\WINDOWS\system32\ntdll.dll")
0.08% 0.080 328 part1_g.exe (loaded from file "K:\part1_g.exe")
0.05% 0.052 213 MSVCP80.dll (loaded from file "C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.1433_x-ww_5cf844d2\MSVCP80.dll")
0.00% 0.005 19 kernel32.dll (loaded from file "C:\WINDOWS\system32\kernel32.dll")
-======-============--==========-================================================================================
100.00% 95.522 391161 SUM
100.00% 95.526 391178 TOTAL
[19:51:59] <keguar> PER FUNCTION STATISTICS (for modules enumerated in previous table):
REL % ABS cpu*sec ABS events MOD % FUNCTION INFORMATION
-======-============--==========-=======-========================================================================
0.00% 0.001 3 15.79% [public: unsigned int __thiscall std::vector<struct DNAPart,class std::allocator<struct DNAPart> >::size(void)const ] from compiland d:\Myfiles\Programs\i2008\part1\part1_g\Release\main.obj of module kernel32.dll (loaded from file "C:\WINDOWS\system32\kernel32.dll")
0.00% 0.000 2 10.53% [public: void __thiscall std::vector<struct DNAPart,class std::allocator<struct DNAPart> >::reserve(unsigned int)] from compiland d:\Myfiles\Programs\i2008\part1\part1_g\Release\main.obj of module kernel32.dll (loaded from file "C:\WINDOWS\system32\kernel32.dll")
0.00% 0.000 0 0.00% [public: __thiscall std::bad_alloc::bad_alloc(class std::bad_alloc const &)] from compiland d:\Myfiles\Programs\i2008\part1\part1_g\Release\main.obj of module kernel32.dll (loaded from file "C:\WINDOWS\system32\kernel32.dll")
-======-============--==========-=======-========================================================================
0.00% 0.001 5 0.00% SUM
100.00% 95.526 391178 100.00% TOTAL
[19:52:37] <keguar> чем ты там в "C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.1433_x-ww_5cf844d2\MSVCR80.dll занимаешься?
[19:52:55] <keguar> 99.69% времени!
[19:53:09] <gpfault> мне похожие вещи писал gprof
[19:53:21] <gpfault> может он не врал?
[19:53:30] <keguar> а он про какой модуль писал?
[19:53:35] <Fly> Что значит: template \0\1\1\1\1\2 ?
[19:53:50] <gpfault> там выше описание их винтаксиса
[19:54:13] <gpfault> он писал что прога работает в 1000 раз быстрее чем на самом деле
[19:54:42] <keguar> надо раздобыть отладочную инфу для msvcr80.dll
[19:54:52] <Fly> Нет там ничего
[19:55:18] <gpfault> The notation \n denotes backreference n at protection level 0
[19:55:35] <gpfault> то есть protect(0,n)
[19:55:56] <Fly> Первое всегда 0 что ли?
[19:56:02] <gpfault> у них в примере -да
[19:56:08] <Fly> Ясно
[19:56:12] <gpfault> я наверное понял. memmov
[19:56:23] <keguar> Вася, твоя отладочная версия у меня не работает.
[19:56:35] <keguar> "Не удается выполнить указанную программу."
[19:57:07] <gpfault> вообще видимо действительно дело в memmove
[19:57:17] <Fly> А что с ней?
[19:57:22] <Fly> Я тоже юзаю
[19:57:43] <gpfault> с ней всё в порядке, просто в моей проги он азанимает 99.9% времени
[19:58:09] <Fly> О.о Как это так?
[19:58:16] <Fly> У меня только при вводе
[20:01:25] <gpfault> вот мне тоже интересно :) Видимо при том сто в условии в строке 129 dna=r+dna r большое и копируется из другого места
[20:02:24] <keguar> я нельзя взять стековый профилировщик? gprof вроде такое умеет.
[20:02:36] <keguar> посмотреть откуда ты вызывал memmove
[20:03:06] <gpfault> да, я сейчас так и сделаю
[20:09:24] <gpfault> нет, это его не вразумило...
[20:10:07] <gpfault> стек я вижу, а время пишет 0
[20:19:07] <gpfault> да, я сам замерил memmove таки занимает 98% времени
[20:23:26] <Fly> У меня работает.
[20:23:31] <Fly> Куда слать?
[20:24:53] <Fly> keguar, как мне тебе послать прогу/результаты?
[20:24:59] <gpfault> нужно загрузить в svn-репозиторий. Для этого нужно поставить svn-клиент.
[20:25:10] <Fly> Есть уже, что с ним делать?
[20:25:25] <gpfault> какой, TortoiseSVN?
[20:25:39] <Fly> Да
[20:25:55] <Fly> У меня финальный вывод 9443 байта
[20:26:08] <Fly> Это нормально?
[20:26:19] <gpfault> это не финальный, это только несколько первых итераций
[20:26:40] <Fly> Не. У меня до конца прога отработала
[20:27:24] <gpfault> значит глюк. Над сравнивать промежуточные данные
[20:27:34] <Fly> Ну дак давай.
[20:27:36] <Fly> Как?
[20:27:50] <gpfault> http://svn.assembla.com/svn/i2008
[20:27:56] <gpfault> это не ссылка
[20:28:07] <Fly> А что это?
[20:28:08] <gpfault> это надо указать в SVN-клиенте
[20:28:27] <gpfault> логин пароль - как у тебя на assembla.com
[20:28:55] <Fly> И где в TortoiseSVN это указывать?
[21:15:15] gpfault вошёл(а) в комнату
[21:15:25] gpfault вышел(а) из комнаты
[21:21:35] mikleb вошёл(а) в комнату
[21:21:40] mikleb вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!