?

Log in

Программируем для удовольствия's Journal
 
[Most Recent Entries] [Calendar View] [Friends]

Below are the 9 most recent journal entries recorded in Программируем для удовольствия's LiveJournal:

Tuesday, December 30th, 2008
12:34 pm
[yba]
Участников сообщества с Новым Годом!
Есть идея одной задачи, которую хочу после НГ здесь сформулировать. Желание еще есть у присутствующих?
Sunday, June 15th, 2008
11:16 pm
[dimrub]
Как насчет продолжения?
Жаль будет, если идея заглохнет. Первое задание было good clean fun, так что стоит продолжить. Идей у меня особо интересных нет, поделюсь неинтересной. Каждый пишет бота для какой-нибудь настольной игры, скажем реверси или шашки (шахматы писать слишком долго, если на приличном уровне). Дальше проверка задания происходит следующим образом: объявляется playoff, для участия в котором надо зайти на некую страничку, и занести там в формочке имя участника и URL, по которому расположен бот. В каком смысле он там расположен? В том, что отвечает на запросы в определенном формате (ему говорят либо начать игру определенным цветом, и если не он начинает игру, то ему сообщают первый ход противника, либо просто сообщают ход противника и айди партии, и он должен ответить своим ходом). Так вот, объявляется playoff и в определенный момент регистрация заканчивается, и список участников передается программе - судье, которая:

1. Случайным образом составляет турнирную таблицу
2. Проводит в соответствии с этой таблицей игры
3. Объявляет результаты (включая запись игр)

При этом эта программа еще и за временем следит (время партии ограничено, так что понятно, что выиграет наиболее эффективный бот).

Ну что, кому-то интересно? Или, может быть, хотя бы кто-то вдруг проснется, и какую-нибудь свою идею выскажет?
Saturday, June 7th, 2008
9:11 pm
[dbg]
Отдельным постом, т.к. у предыдущего коменты закрыты.

Уважаемый zhuzh, большое спасибо за организацию этого коммьюнити и за те задачи, которые Вы опубликовали. Вы как-то намекали, что Вас есть еще одна. Может быть, на прощание опубликуете и ее? Я понимаю, что судейство отняло бы у Вас много времени и сил, поэтому не прошу о судействе, а только о публикации самой задачи. А для судейства добровольцы может быть найдутся, а может и нет - это не главное.
7:21 pm
[ex_ex_zhuzh]
Извинения
Простите, дорогие друзья, что не оправдал возложенных ожиданий. Я не смогу вести это сообщество, да и журнал свой, наверное, тоже. Я сделал смотрителями всех членов сообщества, надеюсь, кто-то из вас возьмет на себе этот груз и сообщество продолжит существовать в каком-то виде. Простите еще раз.
Sunday, April 6th, 2008
1:04 am
[ex_ex_zhuzh]
Следующий конкурс
Поскольку на текущий конкурс ответы вряд ли уже появятся :) давайте начнём Collapse ).
Saturday, March 29th, 2008
5:15 pm
[ex_ex_zhuzh]
Итожки
Ну вот, наконец-то дошли руки до чего-то там. Победителей выявлять не будем, это же разминка. Отмечу только то, что показалось мне неожиданным или особенно заслуживающим внимания.

ilya_dogolazky использовал встроенную в bash функцию раскрытия скобок — оригинальное решение, но довольно громоздкое, по причине жестко заданного формата ввода. Да и производительность, честно говоря, не очень. Я так и не дождался, пока программа сгенерирует все 10000000 семизначных чисел.

juan_gandhi решил, что комбинацию проще всего генерировать по ее порядковому номеру (программа на javascript, view source из браузера). Вполне прямолинейное, хотя и не очень эффективное решение.

mungobungo написал программу на J, перед которой я могу только благоговейно снять шляпу и помолчать. Программировать на J — удел титанов ;)

Некоторые граждане из числа пишущих на Хаскеле знают, что combinations — это sequence из Control.Monad, кое-кто помнит про lines и unlines, а вот применить встроенную функцию interact почему-то не догадался никто. В загоне у нас такие прозаические вещи, как ввод-вывод.

Радует наличие программ на C++, иногда ведь и производительность важна ;) Но почему-то только permutations, а combinations никто не сделал.

Пока я тут телился, mikkim08 опубликовал следующее задание. У меня в принципе наготове задание посложнее, где важно реальное программирование, а не только чистая алгоритмика (хотя и она есть). Но раз уж mikkim08 оказался проворнее, давайте все-таки порешаем сначала его задачку. До 5 апреля, 23:59 GMT.
10:25 am
[mikkim08]
А как вам такая задачка ?
Дан массив строк. Требуется сгенерировать строку наименьшего размера, в которую бы все строки из данного массива входили б как подстроки. Например: {aaa, abc, bca} --> aaabca
Saturday, March 22nd, 2008
3:35 pm
[ex_ex_zhuzh]
Уважаемые участники,

я о вас помню, не забыл, и итоги будут подведены. Но — в силу неожиданных личных обстоятельств — попозже. Завтра-послезавтра, надеюсь.
Thursday, March 13th, 2008
12:55 pm
[ex_ex_zhuzh]
Ну что, приступим?
Первое задание — разминочное. Я позаимствовал его из одной англоязычной тусовки, ссылаться на которую пока не буду, потому что это будет не разминка, а жульничество. Credit where credit is due будет при подведении итогов.

Итак, задание. Напишите две программы.
  • combinations:
    • читает из стандартного ввода последовательность слов
    • печатает на стандартный вывод все слова, в которых i-й символ взят из i-го слова
    • пример: на входе слова 01 01 01, на выходе — все трехзначные двоичные числа
  • permutations:
    • читает из стандартного ввода единственное слово
    • печатает на стандартный вывод все слова, полученные из входного слова перестановкой символов
    • пример: на входе слово 123, на выходе — 123 132 213 231 312 321
В каждом слове все символы можно полагать различными (и отличными от пробела). Можно считать, что символы — это байты, так что юникод поддерживать не нужно. Слова на входе и на выходе оканчиваются переводом строки, этот символ не является частью слова. Символов в каждом слове и самих слов будет не более 100.

Постарайтесь сделать вашу реализацию корректной, эффективной и элегантной (в этом порядке).

Пишите на любом языке, который вам нравится, если для него есть бесплатный компилятор или интерпретатор для Linux или Windows (если язык очень уж экзотический, не забудьте указать адрес, с которого этот самый компилятор можно скачать).

Если кому-то это кажется слишком простым — пожалуйста, не пренебрегайте, покажите пример подрастающему поколению! Публикуйте решения в виде комментариев к этому посту (не забудьте преобразовать код в HTML, чтобы ЖЖ не съел ваши пробелы и <>&).

Призов победителям не обещаю, но восхищение современников и благодарность потомков почти гарантированы.

Сроку пусть будет неделя, до 20.03.2008 23:59 UTC, чтобы никто никуда не торопился.
About LiveJournal.com