|
Блин, ну ладно, давайте остановимся и прикинем количество участников. Хоть человек 10 должно набраться, иначе смысла конкурса нет. Э-эй! Программеры! Желающие участвовать отписываемся сюда!
|
GrAnd | |||
|
Ну по сравнению с алгоритмом - библиотека просто детский лепет. Зато уже сурьезный продукт. Впрочем, повторяю, я и не предлагал на самом деле это на конкурс. Разве что-то подобное на второй-третий тур. Это я так поерничал. |
GrAnd | |||
|
А зачем отписываться? Заводи тему, бросай туда пару-тройку задачек разной сложности, определяй сроки (только не меньше 2-х/3-х суток) и порядок. Будь проще и люди к тебе потянутся. Это же пробный конкурс. Потом уже можно и более четкие правила определять. А пока нужно, "чтобы было". |
tetro | |
|
2GrAnd: AVL деревья у нас лично (в Alma-Mater) входят в базисный курс за 3й семестер - что в них сложного?!!! Ну самые известные и самые древние и почти самые эффективные утавновешенные деревья... То что вы просили я могу сноровить задать в качестве задачи на интервью и дать на это 20 минут. (Уважающий себе программер, по памяти должен успеть) Это сообщение отредактировал tetro - 30-05-2006 - 13:37 |
GrAnd | |||
|
Хм ... Оказывается их даже где-то изучают :) ... Приятно услышать. И пусть даже так. В любом случае интересно посмотреть, насколько эффективна реализация алгоритма. Да и насколько сам алгоритм эффективен ... Но 20 минут тут не катит. Удаление узла с восстановлением балансировки достаточно заморочный процесс. Впрочем, если память хорошая, то может быть и получится ... Только вот дело как раз не в том, чтобы что-то по памяти, а чтобы алгоритм разработать самому ... |
tetro | |
|
Да к слову как в том анекдоте: АВЛ - это 2 мужика, а не 3 ... причем в 1962 когда они это написали они жили в СССР. А что там сложного, если предположить что у нас нет совпадения ключей? Далее все из перво-принципов, то что по памяти, так это то что вращение осуществляем когда разница высот между правым и левом поддеревом 2. АВЛ от простого дерева отличается тем что в нем хранится высота под-дерева. Добавляем: бинарное дерево - как обычно добавлен лист. Далее "рекурсивно" (скорее в ковычках, чем без) у папы корректируем высоту и проверяем на уравновешенность: если стало неуравновешенным, то вращаем в противоложную сторону: заменяем папу на след./пред. в поддереве узел, а папу всовываем туда с соотв. коррекцией... После вращения, высота в точке вращения осталась как прежде (до добавления), значит и выше ничего не надо менять. Если высота изменилась (но здесь явно не было вращения), то корректим и его папу и продолжаем наверх. Легко доказать, что к-во вращений максимум логарифмично, т.е. сложность О(log) как и для обычного дерева ... |
GrAnd | |||
|
Ну да ... А Слава Капээсэс - это вообще не мужик :) ... Ну то, что ты описал, это действительно не сложно, ибо описывает включение нового узла в АВЛ-дерево. А я писал, об удалении ... Ведь после удаления узла остаются 2 хвоста, которые надо куда-то прицепить. Да еще так, чтобы баланс не нарушился. Но мы что-то отвлеклись ... Когда конкурсные задания-то будут? |
tetro | |
|
1) АВЛ - это фамилии 2х человек АВ (что-то типа Адисон-Вейский) и Л (Ландес) - я таки читал их оригинальную статью за 1962 год - они первыми подняли вопрос о сбалансированых деревьях. 2) Удаление, есть замена вершины - в данном случае практически листом (он не может быть выше 2го этажа) - для удобства и определенности мы берем его с более высокой стороны, т.е. в точке удаления нет нарушения критерия... А далее от него (где был вышедший на замену) наверх идем и вращаем, если надо (от папы вышедшего на замену) максимум на 1цу до его нового места... Это сообщение отредактировал tetro - 31-05-2006 - 14:29 |
GrAnd | |||
|
Адельсон-Вельский Г.М., Ландис Е.М. Один алгоритм организации информации. :) |
|
Други мои! Ну так что с конкурсом? Участники наберутся? А то пока я смотрю, собралось вас трое продвинутых, и тишина!
|
Roman | |||
|
Боюсь, что об этом никто не знает, надо дать объявление. И чтобы тему не засоряли сообщениями типа "Я поучаствую!" предлагаю заявки на участие на почту сбрасывать, я так один раз делал, в TheBat фильтр поставил и он все письма отсортировал в отдельную папку. |
Lem0nti | |
|
Отставить палево... Всем кто видел и не видел конкурсы программистов, предлагаю для начала всего 2 тривиальнейшие задачи: 1. Составить алгоритм рисования n-конечной звезды, с учётом что перо не отрывается от бумаги. Для тех, кому формулировка показалась расплывчатой - это значит что каждый следующий пиксель рисуется рядом с предыдущим, а n-конечная, значит что количество лучей неизвестно, то есть вводится пользователем. Глубина луча зависит от фантазии программиста, но это должна быть звезда, а не выпуклый многоугольник. 2. Есть стол неизвестной длины и ширины, есть неизвестное количество листов бумаги неизвестной ширины и высоты, которые хаотично разбросаны по столу, но однозначно вертикальной (горизонтальной) ориентации. Требуется составить алгоритм, который бы рассчитывал каким образом можно прибить гвоздями эти листки к столу таким образом, чтобы каждый лист был прибит не более чем одним гвоздём. Для тех, кому формулировка показалась расплывчатой - это значит что на экране нужно случайно или посредством ввода пользователя разместить энное (неизвестное, то бишь вводимое пользователем) количество прямоугольников, которые ориентированы вертикально (горизонтально) и придумать как найти систему точек экрана, входящих в состав этих прямоугольников, но в каждый из них не более чем 1 раз. Доп пункт для 2-й задачи - добавить в алгоритм анализ ситуаций что если два и более листов можно прибить одним гвоздём, то они обязательно должны быть прибиты одним гвоздём. Платформа - неважно, при схожих вариантах решений претендентов, победителем считается тот, у кого минимальное количество полезных строчек кода. Полезной строчкой кода считается реализация оператора вне зависимости от его сложности или вызов функции или процедуры, входящих в состав стандартной поставки языка реализации. А то, ребята, на тему жалко смотреть - громкое начало и ни одного дельного предложения. Если что - участвовал в придумывании подобного рода задач, завсегда подкину пару-тройку интересностей. |
GrAnd | |||
|
Причем, один из них (т.е. я) в конкурсе участвовать не будет по причине нехватки времени. Работа, дом, дети, панимаш .... |
|
В соавторах\проверяющих будешь? |
|
Отставить палево... (с) :) Думается мне участвовать в конкурсе будешь ты один. Конкурс должен быть в первую очередь народным. К примеру у меня просто не будет времени для решения столь "тривиальных", как ты считаешь, задач. Это сообщение отредактировал GregZ - 01-06-2006 - 12:47 |
|
Тогда ты не народный программист! Это же тривиально! Буквально каких-то пару дней.. Отпросись у начальства. Как маленький, ей богу! |
-=Велла=- | |
|
Ребята.. ну вы тут как-нить определитесь.. Или может объвление дать по форуму? Дык скажите что написать.. как народ завлечь.. может где по форуму ходит гений придумывания задач по программированию?
|
tetro | |
|
1) Я скорее если что-то и буду решать, то явно вне конкурса... 2) Есть 2/3 пути построить такой конкурс: - что-то вкусное из темы красивой имплементации (скорее прогаммные трюки чем математика), тут я не слишком силен в задачах но, например, Написать класс имплементирующий матрицы с операторами над ними, позволяющий писать марричные выражения в классической форме с минимальным overhead копирования при вычислении... Или какие нибудь гадости из Design Patterns... AVL, skip-list и пр, стуктуры данных были бы ничего если бы были гарантированно вне программы... Здесь бонус скорее на стороне опыта... - Какие-нибудь каки из Вычислительной геометрии или что-нибудь типа предложенного, т.е. олимпиада для студентов и школьников в ее лучшем смысле ... т.е. гибкость мозгов намного важнее опыта... |
|
А проще? К примеру: вычислить день недели используя только математические операции. Циклы, сравнения и пр. запрещены. :)
|
-=Велла=- | |
|
А вы уверены, что найдутся те, кто сумеет решить эти задачи.. из числа пользователей с нее менее 100 постов на форуме?
|
|
Понятно. Устраивать конкурс по программированию дохлый номер. GregZ, имхо, среднему программеру часа 4 максимум для решения 2-х задач, предложенных Lem0nti потребуется.И задачи должны быть именно такие, не слишком сложные - но и не слишком легкие, ибо в первом случае справятся 2-3 человека, а во втором - каждый получит по максимуму. |
|
А смысл устраивать именно для программеров не ниже среднего? Таки программеры живут на других форумах и сайтах. А тут если и конкурс, то для всех. Серии: "попробуйте свои силы". Нормальный программерский конкурс должен быть серьезным, ну а о какой серьезности речь может идти в виртуальности? Лучше, как сказал выше, для всех. А там и видно будет, кто любитель, кто профи... :) |
|
ОК, тогда до завтра подберу задачку, сделаем объявление, сутки на выполнение - это что-то типа отборочного тура будет. Кто справится - участвуют в конкурсе. Как вам такой вариант?
|
|
Только на самом деле простейшие.. От меня записывайте персональные 100 сексо понравившейся мне участнице конкурса. |
Roman | |||
|
Из всего вышесказанного можно сделать вывод, что непонятно какие задания давать, даже те кто хорошо программируют не имеют времени, чтобы решать сложные задачи. А задачи можно и не придумывать, у меня задачник есть, в нём и простые задачи есть и сложные, от которых башню сносит (по крайней мере у меня). Вот примеры заданий: 1) Известно, что заданный граф - не дерево. Выяснить, можно-ли из него удалить одну вершину (вместе с инцидентными ей рёбрами) так, чтобы в результате получилось дерево. 2) Изобразить графически заданный планарный граф так, чтобы его рёбра не пересекались. 3) Дан целочисленный массив a(n).Определить сколько пар (положительное число, отрицательное число) находится в начале массива. 4) По заданным целочисленным координатам четырёх точек на плоскости определить, какую геометрическую фигуру они образуют, если их соединить в порядке ввода точек. Ответы: четырёхугольник с самопересечением, четырёхугольник, трапеция, параллелограмм, ромб, прямоугольник, квадрат. 5) Переформировать мартицу таким образом, чтобы её столбцы располагались по убыванию их поэлементных сумм... Ну и т. д... Не вбивать же сюда весь задачник... В общем, надо объявление дать по форуму, чтобы народ отписался сколько будет участников и какие задания давать. А объявление можно дать вот такое: "Конкурс по программированию, хотите принять участие?" А дальше пусть все заинтересованные пишут: 1) Будут-ли они участвовать. 2) На каком(их) языке(ах) они могут программировать. 3) Какой сложности давать задания. |
Рекомендуем почитать также топики: Неисправность монитора. Help.. Помогите Конвертировать!!! Как создать свой сервак??? Указатели в Си нужна защита |