| Следующий конкурс |
[Apr. 6th, 2008|01:04 am] |
|
Поскольку на текущий конкурс ответы вряд ли уже появятся :) давайте начнём ( следующий ). |
|
|
| Итожки |
[Mar. 29th, 2008|05:15 pm] |
Ну вот, наконец-то дошли руки до чего-то там. Победителей выявлять не будем, это же разминка. Отмечу только то, что показалось мне неожиданным или особенно заслуживающим внимания.
ilya_dogolazky использовал встроенную в bash функцию раскрытия скобок — оригинальное решение, но довольно громоздкое, по причине жестко заданного формата ввода. Да и производительность, честно говоря, не очень. Я так и не дождался, пока программа сгенерирует все 10000000 семизначных чисел.
ivan_ghandhi решил, что комбинацию проще всего генерировать по ее порядковому номеру (программа на javascript, view source из браузера). Вполне прямолинейное, хотя и не очень эффективное решение.
mungobungo написал программу на J, перед которой я могу только благоговейно снять шляпу и помолчать. Программировать на J — удел титанов ;)
Некоторые граждане из числа пишущих на Хаскеле знают, что combinations — это sequence из Control.Monad, кое-кто помнит про lines и unlines, а вот применить встроенную функцию interact почему-то не догадался никто. В загоне у нас такие прозаические вещи, как ввод-вывод.
Радует наличие программ на C++, иногда ведь и производительность важна ;) Но почему-то только permutations, а combinations никто не сделал.
Пока я тут телился, mikkim08 опубликовал следующее задание. У меня в принципе наготове задание посложнее, где важно реальное программирование, а не только чистая алгоритмика (хотя и она есть). Но раз уж mikkim08 оказался проворнее, давайте все-таки порешаем сначала его задачку. До 5 апреля, 23:59 GMT. |
|
|
| А как вам такая задачка ? |
[Mar. 29th, 2008|10:25 am] |
|
Дан массив строк. Требуется сгенерировать строку наименьшего размера, в которую бы все строки из данного массива входили б как подстроки. Например: {aaa, abc, bca} --> aaabca |
|
|
| |
[Mar. 22nd, 2008|03:35 pm] |
Уважаемые участники,
я о вас помню, не забыл, и итоги будут подведены. Но — в силу неожиданных личных обстоятельств — попозже. Завтра-послезавтра, надеюсь. |
|
|
| Ну что, приступим? |
[Mar. 13th, 2008|12:55 pm] |
Первое задание — разминочное. Я позаимствовал его из одной англоязычной тусовки, ссылаться на которую пока не буду, потому что это будет не разминка, а жульничество. 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, чтобы никто никуда не торопился. |
|
|