Closed TopicStart new topicStart Poll

Страницы: (5) 1 2 3 4 5 
дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
Блин, ну ладно, давайте остановимся и прикинем количество участников. Хоть человек 10 должно набраться, иначе смысла конкурса нет. Э-эй! Программеры! Желающие участвовать отписываемся сюда!
GrAnd
дата: [ i ]
  • Group Icon
  • Мастер
  • Репутация: 146
  • Статус: Нас призвали не руки, а желание (С) Пинхэд.
  • Member OfflineМужчинаЖенат
QUOTE (Kosyak @ 30.05.2006 - время: 11:50)
Классная задачка - просто испугало АВЛ ... 3 минуты поиска - понял ... можно в принципе и такой вопрос... только вот зачем библиотека? lol.gif тут и с алгоритмом войны хватит - пока придумаешь как ...

Ну по сравнению с алгоритмом - библиотека просто детский лепет.
Зато уже сурьезный продукт.
Впрочем, повторяю, я и не предлагал на самом деле это на конкурс. Разве что-то подобное на второй-третий тур. Это я так поерничал.
GrAnd
дата: [ i ]
  • Group Icon
  • Мастер
  • Репутация: 146
  • Статус: Нас призвали не руки, а желание (С) Пинхэд.
  • Member OfflineМужчинаЖенат
QUOTE (jalt @ 30.05.2006 - время: 12:08)
Блин, ну ладно, давайте остановимся и прикинем количество участников. Хоть человек 10 должно набраться, иначе смысла конкурса нет. Э-эй! Программеры! Желающие участвовать отписываемся сюда!

А зачем отписываться? Заводи тему, бросай туда пару-тройку задачек разной сложности, определяй сроки (только не меньше 2-х/3-х суток) и порядок.
Будь проще и люди к тебе потянутся.
Это же пробный конкурс. Потом уже можно и более четкие правила определять. А пока нужно, "чтобы было".
tetro
дата: [ i ]
  • *
  • Специалист
  • Репутация: 15
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
2GrAnd: AVL деревья у нас лично (в Alma-Mater) входят в базисный курс за 3й семестер - что в них сложного?!!! Ну самые известные и самые древние и почти самые эффективные утавновешенные деревья...

То что вы просили я могу сноровить задать в качестве задачи на интервью и дать на это 20 минут. (Уважающий себе программер, по памяти должен успеть)

Это сообщение отредактировал tetro - 30-05-2006 - 13:37
GrAnd
дата: [ i ]
  • Group Icon
  • Мастер
  • Репутация: 146
  • Статус: Нас призвали не руки, а желание (С) Пинхэд.
  • Member OfflineМужчинаЖенат
QUOTE (tetro @ 30.05.2006 - время: 14:34)
2GrAnd: AVL деревья у нас лично (в Alma-Mater) входят в базисный курс за 3й семестер - что в них сложного?!!! Ну самые известные и самые древние и почти самые эффективные утавновешенные деревья...

То что вы просили я могу сноровить задать в качестве задачи на интервью и дать на это 20 минут. (Уважающий себе программер, по памяти должен успеть)

Хм ... Оказывается их даже где-то изучают :) ... Приятно услышать.

И пусть даже так.
В любом случае интересно посмотреть, насколько эффективна реализация алгоритма. Да и насколько сам алгоритм эффективен ...

Но 20 минут тут не катит. Удаление узла с восстановлением балансировки достаточно заморочный процесс.
Впрочем, если память хорошая, то может быть и получится ...

Только вот дело как раз не в том, чтобы что-то по памяти, а чтобы алгоритм разработать самому ...
tetro
дата: [ i ]
  • *
  • Специалист
  • Репутация: 15
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
Да к слову как в том анекдоте: АВЛ - это 2 мужика, а не 3 ... причем в 1962 когда они это написали они жили в СССР.

А что там сложного, если предположить что у нас нет совпадения ключей? Далее все из перво-принципов, то что по памяти, так это то что вращение осуществляем когда разница высот между правым и левом поддеревом 2.
АВЛ от простого дерева отличается тем что в нем хранится высота под-дерева.

Добавляем: бинарное дерево - как обычно добавлен лист. Далее "рекурсивно" (скорее в ковычках, чем без) у папы корректируем высоту и проверяем на уравновешенность:
если стало неуравновешенным, то вращаем в противоложную сторону: заменяем папу на след./пред. в поддереве узел, а папу всовываем туда с соотв. коррекцией... После вращения, высота в точке вращения осталась как прежде (до добавления), значит и выше ничего не надо менять.
Если высота изменилась (но здесь явно не было вращения), то корректим и его папу и продолжаем наверх.

Легко доказать, что к-во вращений максимум логарифмично, т.е. сложность О(log) как и для обычного дерева ...
GrAnd
дата: [ i ]
  • Group Icon
  • Мастер
  • Репутация: 146
  • Статус: Нас призвали не руки, а желание (С) Пинхэд.
  • Member OfflineМужчинаЖенат
QUOTE (tetro @ 30.05.2006 - время: 16:39)
Да к слову как в том анекдоте: АВЛ - это 2 мужика, а не 3 ... причем в 1962 когда они это написали они жили в СССР.

А что там сложного, если предположить что у нас нет совпадения ключей?

Ну да ... А Слава Капээсэс - это вообще не мужик :) ...

Ну то, что ты описал, это действительно не сложно, ибо описывает включение нового узла в АВЛ-дерево. А я писал, об удалении ... Ведь после удаления узла остаются 2 хвоста, которые надо куда-то прицепить. Да еще так, чтобы баланс не нарушился.

Но мы что-то отвлеклись ...
Когда конкурсные задания-то будут?
tetro
дата: [ i ]
  • *
  • Специалист
  • Репутация: 15
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
1) АВЛ - это фамилии 2х человек АВ (что-то типа Адисон-Вейский) и Л (Ландес) - я таки читал их оригинальную статью за 1962 год - они первыми подняли вопрос о сбалансированых деревьях.
2) Удаление, есть замена вершины - в данном случае практически листом (он не может быть выше 2го этажа) - для удобства и определенности мы берем его с более высокой стороны, т.е. в точке удаления нет нарушения критерия... А далее от него (где был вышедший на замену) наверх идем и вращаем, если надо (от папы вышедшего на замену) максимум на 1цу до его нового места...

Это сообщение отредактировал tetro - 31-05-2006 - 14:29
GrAnd
дата: [ i ]
  • Group Icon
  • Мастер
  • Репутация: 146
  • Статус: Нас призвали не руки, а желание (С) Пинхэд.
  • Member OfflineМужчинаЖенат
QUOTE (tetro @ 31.05.2006 - время: 15:20)
1) АВЛ - это фамилии 2х человек АВ (что-то типа Адисон-Вейский) и Л (Ландес) - я таки читал их оригинальную статью за 1962 год - они первыми подняли вопрос о сбалансированых деревьях.

Адельсон-Вельский Г.М., Ландис Е.М. Один алгоритм организации информации. :)
дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
Други мои! Ну так что с конкурсом? Участники наберутся? А то пока я смотрю, собралось вас трое продвинутых, и тишина!
Roman
дата: [ i ]
  • Group Icon
  • Спонсор форума
  • Репутация: 868
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
QUOTE (jalt @ 31.05.2006 - время: 18:50)
Други мои! Ну так что с конкурсом? Участники наберутся? А то пока я смотрю, собралось вас трое продвинутых, и тишина!

Боюсь, что об этом никто не знает, надо дать объявление.
И чтобы тему не засоряли сообщениями типа "Я поучаствую!" предлагаю заявки на участие на почту сбрасывать, я так один раз делал, в TheBat фильтр поставил и он все письма отсортировал в отдельную папку.
Lem0nti
дата: [ i ]
  • *
  • Профессионал
  • Репутация: 65
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
Отставить палево...
Всем кто видел и не видел конкурсы программистов, предлагаю для начала всего 2 тривиальнейшие задачи:

1. Составить алгоритм рисования n-конечной звезды, с учётом что перо не отрывается от бумаги.
Для тех, кому формулировка показалась расплывчатой - это значит что каждый следующий пиксель рисуется рядом с предыдущим, а n-конечная, значит что количество лучей неизвестно, то есть вводится пользователем. Глубина луча зависит от фантазии программиста, но это должна быть звезда, а не выпуклый многоугольник.
2. Есть стол неизвестной длины и ширины, есть неизвестное количество листов бумаги неизвестной ширины и высоты, которые хаотично разбросаны по столу, но однозначно вертикальной (горизонтальной) ориентации. Требуется составить алгоритм, который бы рассчитывал каким образом можно прибить гвоздями эти листки к столу таким образом, чтобы каждый лист был прибит не более чем одним гвоздём.
Для тех, кому формулировка показалась расплывчатой - это значит что на экране нужно случайно или посредством ввода пользователя разместить энное (неизвестное, то бишь вводимое пользователем) количество прямоугольников, которые ориентированы вертикально (горизонтально) и придумать как найти систему точек экрана, входящих в состав этих прямоугольников, но в каждый из них не более чем 1 раз.
Доп пункт для 2-й задачи - добавить в алгоритм анализ ситуаций что если два и более листов можно прибить одним гвоздём, то они обязательно должны быть прибиты одним гвоздём.

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

А то, ребята, на тему жалко смотреть - громкое начало и ни одного дельного предложения.
Если что - участвовал в придумывании подобного рода задач, завсегда подкину пару-тройку интересностей.
GrAnd
дата: [ i ]
  • Group Icon
  • Мастер
  • Репутация: 146
  • Статус: Нас призвали не руки, а желание (С) Пинхэд.
  • Member OfflineМужчинаЖенат
QUOTE (jalt @ 31.05.2006 - время: 19:50)
Други мои! Ну так что с конкурсом? Участники наберутся? А то пока я смотрю, собралось вас трое продвинутых, и тишина!

Причем, один из них (т.е. я) в конкурсе участвовать не будет по причине нехватки времени. Работа, дом, дети, панимаш ....
дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
QUOTE (GrAnd @ 01.06.2006 - время: 07:50)
QUOTE (jalt @ 31.05.2006 - время: 19:50)
Други мои! Ну так что с конкурсом? Участники наберутся? А то пока я смотрю, собралось вас трое продвинутых, и тишина!

Причем, один из них (т.е. я) в конкурсе участвовать не будет по причине нехватки времени. Работа, дом, дети, панимаш ....

В соавторах\проверяющих будешь?
дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
QUOTE (Lem0nti @ 31.05.2006 - время: 22:17)
Всем кто видел и не видел конкурсы программистов, предлагаю для начала всего 2 тривиальнейшие задачи:

Отставить палево... (с) :)

Думается мне участвовать в конкурсе будешь ты один. Конкурс должен быть в первую очередь народным.

К примеру у меня просто не будет времени для решения столь "тривиальных", как ты считаешь, задач.

Это сообщение отредактировал GregZ - 01-06-2006 - 12:47
дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
QUOTE (GregZ @ 01.06.2006 - время: 12:44)
К примеру у меня просто не будет времени для решения столь "тривиальных", как ты считаешь, задач.

Тогда ты не народный программист! Это же тривиально! Буквально каких-то пару дней.. Отпросись у начальства. Как маленький, ей богу!
-=Велла=-
дата: [ i ]
  • Group Icon
  • Акула пера
  • Репутация: 2775
  • Статус: Паникёрша и скандалистка )))
  • Member OfflineЖенщинаСвободна
Ребята.. ну вы тут как-нить определитесь.. Или может объвление дать по форуму? Дык скажите что написать.. как народ завлечь.. может где по форуму ходит гений придумывания задач по программированию? wink.gif
tetro
дата: [ i ]
  • *
  • Специалист
  • Репутация: 15
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
1) Я скорее если что-то и буду решать, то явно вне конкурса...
2) Есть 2/3 пути построить такой конкурс:
- что-то вкусное из темы красивой имплементации (скорее прогаммные трюки чем математика), тут я не слишком силен в задачах но, например,
Написать класс имплементирующий матрицы с операторами над ними, позволяющий писать марричные выражения в классической форме с минимальным overhead копирования при вычислении...
Или какие нибудь гадости из Design Patterns...
AVL, skip-list и пр, стуктуры данных были бы ничего если бы были гарантированно вне программы...
Здесь бонус скорее на стороне опыта...
- Какие-нибудь каки из Вычислительной геометрии или что-нибудь типа предложенного, т.е. олимпиада для студентов и школьников в ее лучшем смысле ... т.е. гибкость мозгов намного важнее опыта...
дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
А проще? К примеру: вычислить день недели используя только математические операции. Циклы, сравнения и пр. запрещены. :)
-=Велла=-
дата: [ i ]
  • Group Icon
  • Акула пера
  • Репутация: 2775
  • Статус: Паникёрша и скандалистка )))
  • Member OfflineЖенщинаСвободна
А вы уверены, что найдутся те, кто сумеет решить эти задачи.. из числа пользователей с нее менее 100 постов на форуме?
дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
Понятно. Устраивать конкурс по программированию дохлый номер.
GregZ, имхо, среднему программеру часа 4 максимум для решения 2-х задач, предложенных Lem0nti потребуется.И задачи должны быть именно такие, не слишком сложные - но и не слишком легкие, ибо в первом случае справятся 2-3 человека, а во втором - каждый получит по максимуму.
дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
QUOTE (jalt @ 01.06.2006 - время: 14:58)
среднему программеру часа 4 максимум для решения 2-х задач

А смысл устраивать именно для программеров не ниже среднего? Таки программеры живут на других форумах и сайтах. А тут если и конкурс, то для всех. Серии: "попробуйте свои силы".

Нормальный программерский конкурс должен быть серьезным, ну а о какой серьезности речь может идти в виртуальности? Лучше, как сказал выше, для всех.

А там и видно будет, кто любитель, кто профи... :)
дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
ОК, тогда до завтра подберу задачку, сделаем объявление, сутки на выполнение - это что-то типа отборочного тура будет. Кто справится - участвуют в конкурсе. Как вам такой вариант?
дата: [ i ]
  • Unregistered
  • Статус:
  • Свободен
Только на самом деле простейшие..

От меня записывайте персональные 100 сексо понравившейся мне участнице конкурса.
Roman
дата: [ i ]
  • Group Icon
  • Спонсор форума
  • Репутация: 868
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
QUOTE (-=Велла=- @ 01.06.2006 - время: 13:00)
Ребята.. ну вы тут как-нить определитесь.. Или может объвление дать по форуму? Дык скажите что написать.. как народ завлечь.. может где по форуму ходит гений придумывания задач по программированию? wink.gif

Из всего вышесказанного можно сделать вывод, что непонятно какие задания давать, даже те кто хорошо программируют не имеют времени, чтобы решать сложные задачи.
А задачи можно и не придумывать, у меня задачник есть, в нём и простые задачи есть и сложные, от которых башню сносит (по крайней мере у меня).

Вот примеры заданий:
1) Известно, что заданный граф - не дерево. Выяснить, можно-ли из него удалить одну вершину (вместе с инцидентными ей рёбрами) так, чтобы в результате получилось дерево.
2) Изобразить графически заданный планарный граф так, чтобы его рёбра не пересекались.
3) Дан целочисленный массив a(n).Определить сколько пар (положительное число, отрицательное число) находится в начале массива.
4) По заданным целочисленным координатам четырёх точек на плоскости определить, какую геометрическую фигуру они образуют, если их соединить в порядке ввода точек. Ответы: четырёхугольник с самопересечением, четырёхугольник, трапеция, параллелограмм, ромб, прямоугольник, квадрат.
5) Переформировать мартицу таким образом, чтобы её столбцы располагались по убыванию их поэлементных сумм...

Ну и т. д... Не вбивать же сюда весь задачник...

В общем, надо объявление дать по форуму, чтобы народ отписался сколько будет участников и какие задания давать.

А объявление можно дать вот такое: "Конкурс по программированию, хотите принять участие?"
А дальше пусть все заинтересованные пишут:
1) Будут-ли они участвовать.
2) На каком(их) языке(ах) они могут программировать.
3) Какой сложности давать задания.
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)

Страницы: (5) 1 2 3 4 5

Closed TopicStart new topicStart Poll0


Рекомендуем почитать также топики:

Неисправность монитора. Help..

Помогите Конвертировать!!!

Как создать свой сервак???

Указатели в Си

нужна защита



>