Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Общие вопросы > Конкурс среди Delphi-программистов |
Автор: Alexeis 10.10.2008, 09:53 | ||||||||
Конкурс среди Delphi-программистов Мы объявляем о начале конкурса по программированию. Участие в конкурсе – отличный способ оценить уровень своих знаний. Каждый день мы пишем какой-то код, решая различные задачи. Но все эти задачи являются типовыми и со временем выполняются на «автомате». Повышение мастерства программиста, наоборот, происходит при решении оригинальных задач, при изучении нового материала, когда программист думает. Данный конкурс позволит всем желающим проверить уровень своих знаний и сообразительность. Данный конкурс является первым у нас, и мы надеемся, что проведение подобных конкурсов в будущем станет хорошей традицией. Правила участия в конкурсе по программированию 1.Регистрация участников К участию в конкурсе допускаются все желающие, при соблюдении данных правил. Для того, чтобы стать участником, нужно быть зарегистрированным участником форума Vingrad. До 15 октября 2008 года надо направить заявку на участие в конкурсе. Для этого необходимо написать сообщение в данной теме с содержанием «Буду участвовать» или отправить ПМ представителям комиссии. http://forum.vingrad.ru/index.php?act=Msg&CODE=4&MID=13931 Участие в конкурсе бесплатное. 2.Сроки проведения конкурса Конкурсное задание высылается всем участникам по внутренней почте форума (PM) и публикуется на форуме 16 октября в 12-00 (МСК). С 16 по 19 октября 2008 года включительно будут приниматься решения внутреннюю почту (PM) участника http://forum.vingrad.ru/index.php?act=Msg&CODE=4&MID=13931 C 20 по 23 октября будет проводиться рассмотрение предоставленных решений путем тайного голосования внутри комиссии по проведению конкурса. К 24 октября будет объявлен победитель с его решением. И выставлены все решения, для того чтобы все убедились в справедливости решения. 3.Выбор победителя Победа в конкурсе подразумевает 100% правильное решение задачи (при всевозможных входных условиях задачи программа давала заданный условием результат). При отсутствии решений в соответствии с вышесказанным условием конкурс может быть признан недействительным. Критерии оценки правильности решения будут указаны в тексте задачи. По результатам конкурса будет только один победитель. Если решений, которые претендуют на победу, больше – будет отобрано то, которые было прислано раньше. 4.Призы Победитель будет немедленно переведен в группу «Эксперт», а также получит 5 баллов репутации. Всем участникам предоставившим рабочее решение хотя бы одной задачи будет повышена репутация на один балл. Занявшим 2 и 3е место на 3 и 2 бала соответственно. 5.Заключительные положения Исходные тексты решения необходимо писать 100% на Delphi в любой версии, но используя синтаксис Delphi 7. Информация о победителе и его решение будет опубликовано на форуме. Выбор победителей проводится силами комиссии по проведению конкурса. Её состав : Rrader, Alexeis, Snowy, Girder, December. Победитель объявляется один раз, без возможности пересмотра. Данный конкурс является некоммерческим. Комиссия по проведению конкурса обязуется неукоснительно соблюдать данные правила. В случае возникновения разногласий, которые на урегулированы данными правилами, – комиссия по проведению конкурса оставляет за собой право вносить односторонние изменения в правила с последующим уведомлением всех участников. --------------------------------------------------- Зарегистрированные участники: morpheyushka, kemiisto, THandle, Staruha, Coder, jsa, Bose, MakPocc, tHE_EGOiSTE, mr.Anderson, Qu1nt, MetalFan, Christoph, aktuba, SneG0K, Poseidon,klimrmad, WaReZMEN, ILyAHA, ilBEastli, ne0n, VICTAR, igimon, BaD_SeCt0R, VanHelsing, Shaggy, MadCoder,586, Mribo, Avers, Sanechichek,DCeres, Frees,Telepyz,safon777,Rennigth,pseud,bems, ~FoX~, AndreyZ53,AntonN,Alix,Felan,RockClimber,Matematik, Solitaire,Pichuser,Yanis,actual, Sajtran,Mauzer91, MERLIN123. ------------------------------------------------------------------------------------------------------------------- Задания на конкурс 1) Задача на алогоритм Дана матрица случайных чисел m x n (m и n) константы (например 10 на 10). Требуется отсортировать ее элементы по спирали. Т.е. для матрицы 3 х 3 получить примерно такой результат. 123 894 765 Вывод по своему усмотрению. Можно и в консоль. Критерии оценки задания: лучшим будет считаться такое решение, которое будет быстрее всех. ------------------------------------------------------------------------------------ 2)Задача на потоки. Условие: Есть Хулиган с мусорными пакетиками и дворник. Задача хулигана разбросать все мусорные пакетики и при этом не попасться на глаза дворнику. Задача дворника убирать мусор и накостылять хулигану ![]() Поле состоит из 60 ячеек (одномерное). Хулиган появляется в произвольной позиции на поле и выбрасывает за раз только 1 пакетик (занимает ячейку) в течении 60мс, после чего он исчезает чтобы через 300 мс появиться в новой позиции начать там гадить. У хулигана запас 22 пакетика. Дворник бегает от края до края поля за раз сметая 3 бумажки (очищая 3 соседние ячейки) в течении 400мс. Условие поимки. Попытка одновременного доступа (2х потоков) к общей ячейке. Требование к решению. В программе должно быть 3 потока (Основной, дворник, хулиган) + простейшая отрисовка в виде ячеек. В атаче пример реализации (зеркало http://narod.ru/disk/3216906000/huligan_vs_Dvornik.zip.html) . 3 красных квадарата это дворник в процессе уборки. Ячейки рисуются по XOR во время уборки и заполняется белым после очистки, пакетик хулигана на время выброса становиться желтым, а после ухода становиться синим. Красным кружком помечается позиция где пойман хулиган. Примечание: графическая отрисовка может отличаться от предложенной, но тогда, дополнительно, потребуется ее описание. Критерии оценки задания: лучшим будет считаться такое решение, которое будет правильнее всех, т.е. грамотная синхронизация потоков, без лишних простоев и одновременных обращений к общей памяти. Также будет учитываться прозрачность кода и наглядность визуализации. -------------------------------------------------------------------------------------- 3) На знание внутренних механизмов Delphi. В Delphi конструктор любого класса может работать в двух режимах: 1) Режим создания нового экземпляра объекта:
2) Но можно сделать и так:
Во втором случае просто произойдет реинициализация экземпляра класса. Представьте, что перед Вами возникла задача создать экземпляр некоторого класса в "чужом" приложении. Что для этого нужно? Ну, во-первых, сам класс, который будет создан, во-вторых, режим работы (создание нового или реинициализация уже созданного экземпляра). Если конструктор класса может принимать параметры, то они также понадобятся. Зная адрес конструктора, его можно вызвать. Отмечу один из важнейших моментов при работе с "чужими" приложениями - для начала все действия нужно проверять на своем приложении. Задание посвящено методике создания классов в "чужих" приложениях. Итак, дан простой класс, имеющий конструктор с целочисленным параметром. Он просто выводит сообщение с переданным при создании числом.
Требуется: 1) Написать обыкновенную функцию (не метод) CreateClass, которая бы создавала объект класса TDummy (т.е. написать аналог родного конструктора). Параметры функции - на Ваше усмотрение. Иными словами: Dummy := TDummy.Create(); будет эквивалентен коду: Dummy := CreateClass(); 2) Написать простой пример использования функции, создав экземпляр класса (в локальной переменной), передав в конструктор произвольное значение. Входные данные: 1) Можно пользоваться классом TDummy как типом данных. Условия: 1) Не использовать ассемблер. 2) Не вызывать конструктор напрямую:
3) Все остальное делать можно ![]() Критерии оценки задания: лучшим будет считаться такое решение, которое будет идеально моделировать "родной" конструктор в любом режиме его работы. Полезность задачи - позволяет динамически создавать классы и компоненты в "чужих" приложениях без использования модулей VCL в своих. ---------------------------------------------------------------------------------------------------------------- Победители конкурса. Всего можно было набрать 60 баллов, 10 за 1ю, 30 за 2ю, 20 за 3ю bems - 53 MetalFan - 53 actual - 45 Sajtran - 41 aktuba - 30 AntonN - 27 Poseidon - 24 jsa - 23 THandle - 19 ne0n - 10 Shaggy - 9 Felan - 9 tHE_EGOiSTE - 4 Qu1nt - 3 mr.Anderson -2 Staruha - 2 Очень хорошие решения представили Sajtran, AntonN, aktuba, jsa Суперское решение первой задачи представили ne0n, bems и Shaggy Очень хорошо 3е задание решил bems. 2е задание лучше всех удалось MetalFan. Очень грамотно, аккуратно, эффективно и прозрачно. Как и обещалось все кто прислал решения хотя бы одной задачи или попытку решения, получат по одному + Все задачи были просмотрены на предмет упущений, отступлений от задания, т.е. весьма подробно. |
Автор: morpheyushka 10.10.2008, 10:15 |
Хорошее решение. ![]() Буду участвовать |
Автор: ne0n 10.10.2008, 10:40 |
Alexeis, очень хорошая идея, на моей памяти это первый такой конкурс! Вообщем я клоню это к тому, чтобы проведение конкурсов стало традицией) Сам бы с радостью принял участие, но как по закону подлости - сейчас нет свободного времени( |
Автор: Alexeis 10.10.2008, 10:48 |
ne0n, Это идея Rrader я только помогаю. |
Автор: ne0n 10.10.2008, 11:02 |
![]() Alexeis, А раз задание будет общедоступным, значит можно поучаствовать внеконкурса? (хочу постараться урвать свободного времени) ![]() |
Автор: kemiisto 10.10.2008, 11:14 |
Я, конечно, любитель, но попробовать можно. Буду участвовать. |
Автор: THandle 10.10.2008, 11:36 |
Я, конечно же, участвую. Хоть и займу последнее место, но интересно ![]() |
Автор: Staruha 10.10.2008, 11:55 |
Буду участвовать.Только хотелось бы что бы срок был продлен до 20 хотя бы до обеда.За выходные можно что-нить решить, а вот интернета у меня на даче нет. |
Автор: Alexeis 10.10.2008, 12:02 |
Staruha, ну скажем часов до 8ми утра можно растянуть прием. Только для того чтобы можно было отправить. |
Автор: jsa 10.10.2008, 12:03 |
Буду учавствовать |
Автор: Bose 10.10.2008, 12:25 |
Я хочу проверить сообразительность. =) Запишите. |
Автор: morpheyushka 10.10.2008, 12:26 | ||
За это место я с тобой посоревнуюсь ![]() |
Автор: MetalFan 10.10.2008, 13:00 |
тоже чтоли попробовать? ))) запишите и меня ![]() |
Автор: mr.Anderson 10.10.2008, 13:07 |
Буду участвовать! |
Автор: tHE_EGOiSTE 10.10.2008, 13:17 |
Я тоже бы не прочь проверить себя в сообразительности. Буду участвовать! |
Автор: Qu1nt 10.10.2008, 13:24 |
Участвую! |
Автор: mr.Anderson 10.10.2008, 13:25 |
Блин, против MetalFan нет шансов... Даже неинтересно... :( ![]() |
Автор: kemiisto 10.10.2008, 13:49 | ||
И от кого я это слышу!? От человека с ником mr.Anderson!? Пора бы уже запомнить...
|
Автор: Poseidon 10.10.2008, 13:53 | ||
|
Автор: MetalFan 10.10.2008, 13:53 |
а я что? я ничего) ![]() ![]() |
Автор: Staruha 10.10.2008, 14:42 |
Насчет сдвига по времени. Дело не только во мне.Если будет интересное решение помчусь домой и кину.Но дома не у всех тоже есть интернет.А представляешь приходишь в понедельник на работу - телефон трезвонит а ты начхал на все и лезешь в Интернет.А многие программисты раньше 9 на работе не появятся - профессиональная болезнь ![]() ![]() |
Автор: Christoph 10.10.2008, 14:44 |
И меня запишите ![]() |
Автор: mr.Anderson 10.10.2008, 15:02 |
kemiisto, в точку, я как-то не подумал... ![]() ![]() |
Автор: aktuba 10.10.2008, 15:06 |
И я поучаствую. Чур сильно не пинать =) |
Автор: SneG0K 10.10.2008, 15:46 |
Ну и поучаствую=) Чтоб THandle занял не последнее место=) |
Автор: morpheyushka 10.10.2008, 17:34 |
Блин...все такие скромные ![]() |
Автор: Poseidon 10.10.2008, 17:54 |
Ладно, и я поучаствую. Так и быть, займу первое место ![]() |
Автор: THandle 10.10.2008, 17:59 |
Poseidon, фиг ты чо займешь ![]() Вообще выношу предложение: Раз уж тов. Посейдон так хочет занять первое место, то предлагаю не лишать его приза, то есть перевести сейчас же в группу "Ушастик Клуба". Так у него будет цель и желание, а иначе их может быть меньше. А если их будет меньше, то значит для конкурс будет менее интересным. Кто "За"? ЗЫ: при проигрыше обратно в Эксперты Посейдона естественно не возвращать... Сорри за офыфтоп. |
Автор: ILyAHA 10.10.2008, 18:50 |
Буду участвовать ![]() |
Автор: ilBEastli 10.10.2008, 19:00 |
Буду участвовать |
Автор: mr.Anderson 10.10.2008, 19:02 |
Ща точно весь форум сбежится... ![]() |
Автор: ne0n 10.10.2008, 20:40 |
А ладно, рискуну ![]() ![]() записываейте) постараюсь все успеть) |
Автор: Poseidon 10.10.2008, 23:18 |
THandle, эээ ![]() Добавлено через 1 минуту и 5 секунд Понятно, что для меня не перевод в Эксперты важен ![]() ![]() |
Автор: VICTAR 10.10.2008, 23:42 |
И меня возьмите тоже ![]() |
Автор: Kbl4AH 11.10.2008, 11:38 |
Я бы тоже поучавствовал, но не буду (даже ради балла репы), так как еще молодо выгляжу и это будет некрасиво с моей стороны. ![]() Обязуюсь стремиться к участию в последующих конкурсах. ![]() |
Автор: BaD_SeCt0R 11.10.2008, 13:58 |
Ого! Такие события и без меня! ![]() ![]() |
Автор: VanHelsing 11.10.2008, 14:48 |
Буду участвовать. Хочется проверить свои силы. Записывайте. |
Автор: Shaggy 11.10.2008, 17:18 |
Буду участвовать |
Автор: Rohoss 11.10.2008, 21:00 |
Буду участвовать, участия, по крайней мере добавляет опыт ![]() |
Автор: 586 12.10.2008, 01:19 |
Буду участвовать. |
Автор: Mribo 12.10.2008, 20:21 |
Буду участвовать. |
Автор: AntonN 12.10.2008, 23:17 |
Alexeis, тематика заданий будет озвучена? |
Автор: Sanechichek 13.10.2008, 00:29 |
Буду участвовать |
Автор: Avers 13.10.2008, 08:43 |
Буду участвовать Я так понимаю, это будет похоже на спортивное программирование? |
Автор: Alexeis 13.10.2008, 11:09 | ||
Добавлено @ 11:15 До сих пор нет полной определённости и заданиями. То ли выбрать простые и победителя выбирать по качеству решения, то ли выбрать очень сложные и тогда решивших все будет совсем мало или вообще никого. |
Автор: AntonN 13.10.2008, 11:33 |
Alexeis, может сделать два-три задания, по уровню сложности? ну и было бы хорошо заранее знать, что предстоит делать. А то может там какая нибудь скучная сортировка массива в условиях ограниченности памяти и по времени... Вообще, задания планируются полезные с точки зрения практического применения (быстрый поиск файлов, например, резка файла на части и склеивание - для новичков не сложно, опыт пригодитсЯ, в отличии от той же сортирвки, которая никому не нужна, а кому нужна - и сами знают как ее сделать), или просто теоретические задания в духе олимпиад? |
Автор: BaD_SeCt0R 13.10.2008, 11:41 | ||
Alexeis, можно же совместить. Добавлено через 3 минуты и 8 секунд Часть заданий легкие, а один-два сложные. А считать решения тогда уже побально. Легкие задания 1-3 балла, сложные 4-5, например. |
Автор: Alexeis 13.10.2008, 11:47 |
AntonN, ну собственно это и так будет. Планируется 3 задания, разной сложности на разные темы, включая задачи академического характера ну задание на знание глубин Delphi. Предварительные задания уже есть, осталось решить насколько сильно взрывать моск ![]() |
Автор: morpheyushka 13.10.2008, 11:48 | ||
а как на счет несколько туров сделать ![]() с каждым уровнем сложности будут отсеиваться участники, ну и останется один - единственный и неповторимый ![]() |
Автор: THandle 13.10.2008, 11:52 | ||
Alexeis, как я уже говорил - чем сложнее будут задания тем луче. Иначе комиссии придется смотреть кучу кода. Так что моск взрывайте как можно сильнее.
Ты думаешь rrader'у и прочим хочется придумывать много заданий? Ведь это не легкое дело. Тур должен быть один. Задания должны быть такой сложности, чтоб их могли решить от силы 5 человек(все задания). ИМХО. |
Автор: Alexeis 13.10.2008, 11:58 |
THandle, а я думаю пусть лучше всем будет интересно решать ![]() |
Автор: THandle 13.10.2008, 12:03 |
Alexeis, интересно пусть будет всем, но решат пусть только некоторые ![]() Зачем нужны легкие задания? Чтобы те кто это знает просто сделали задание еще раз, а те у кого опыта поменьше практически ничего нового не узнали? ИМХО должно быть так: Знающие люди прилагают довольно большие усилия чтобы сделать задание. А малознающие люди(то есть я) сидят, копаются, экспериментируют, грузут коленки... Те кто не знает и не хочет знать просто забьют на такое задание и победит действительно достойный. А с легкими заданиями возможно победа того, кто просто раньше пришлет свое решение, то есть того у кого будет больше свободного времени. ИМХО, это не правильно. Настоятельно требую прислушаться к моему мнению. |
Автор: Alexeis 13.10.2008, 12:05 |
THandle, бум решать не так как это будет выгодно тебе, а как всем ![]() |
Автор: BaD_SeCt0R 13.10.2008, 12:10 |
А зачем публиковать на форуме? Можно уже после конкурса. |
Автор: Frees 13.10.2008, 12:41 |
Буду участвовать |
Автор: Mayk 13.10.2008, 13:13 |
вопрос! А можно не дельфистам поучаствовать вне конкурса? Разумеется ради холивара "лалялялалаляля, а на c++/java/python решение короче на 60 KLOC и завершается до обеда" ![]() |
Автор: Frees 13.10.2008, 13:17 |
все как в спорте. допинг травмы..... |
Автор: THandle 13.10.2008, 13:21 |
Mayk, ну задания, как я понял, будут выложены в открытый доступ. Делай хоть на brainf*ck'е ![]() |
Автор: AntonN 13.10.2008, 13:29 |
вообще написано, что конкурс среди Дельфи-программистов, и решение должно компилиться на D7 - какой брейнфак и Си? ![]() |
Автор: THandle 13.10.2008, 13:31 |
AntonN, |
Автор: Rennigth 13.10.2008, 14:06 |
Участвую. п.с. если так и не поучаствую (по причине лени/нехватки времени и т.д.) влепите мне жирный минус ![]() |
Автор: pseud 13.10.2008, 15:57 |
участвую. только из отпуска. чуть не прозевал. |
Автор: MetalFan 13.10.2008, 17:34 |
балин, а если нету Д7??? или там будут такие задания, что есть вероятность, что будут попользовать возможности D2005-2009? |
Автор: Poseidon 13.10.2008, 17:44 |
MetalFan, ты что, не дочитал??? |
Автор: Rrader 13.10.2008, 18:16 |
MetalFan, такого не будет. ![]() P.S. Как много участников набралось! ![]() |
Автор: dumb 13.10.2008, 19:25 |
следует добавить "предоставившим рабочее решение" ![]() |
Автор: AntonN 13.10.2008, 19:39 |
dumb, кстати да, а то я сначала и не понял почему столько народу решило "поучавствовать", хотя даже не спросили тематики конкурса ![]() |
Автор: bartram 13.10.2008, 19:44 |
Хотелось бы поучаствовать, но нету сейчас времени вообще. Так что решу только ради спортивного интереса ![]() |
Автор: Alexeis 13.10.2008, 19:49 | ||
Спасибо за уточнение, подправил на
1ю задачу смогут решить многие, так что думаю никто не будет в обиде. |
Автор: bems 13.10.2008, 19:55 |
ну раз такой движ пошёл, то и я поучаствую |
Автор: ~FoX~ 13.10.2008, 19:59 |
Давно я не брал в руки шашки ![]() Попробуем... ![]() |
Автор: bems 13.10.2008, 19:59 |
а целевая ось, запрещенные приемы, права аккаунта, в котором жюри будет прогонять решения? |
Автор: AndreyZ53 13.10.2008, 20:20 |
Эх, ладно, учавствую, главное не победа, а участие |
Автор: Alexeis 13.10.2008, 20:43 | ||
На счет оси, ну линукса точно не будет ![]() ![]() Добавлено через 3 минуты и 7 секунд MetalFan, просто нужно чтобы все были в равных условиях, потому синтаксис Delphi 7 она есть почти у всех. |
Автор: AntonN 14.10.2008, 00:20 |
Ну ладно, меня тоже добавляйте, учавствую ![]() |
Автор: Mayk 14.10.2008, 08:05 | ||
ыыы. мне почему-то показалось что задания будут по пм высылаться(перепутал с отправкой решений). Раз в открытом доступе тогда да, brainf*ck определенно зарулитъ ![]() ![]() ![]() |
Автор: RockClimber 14.10.2008, 09:45 | ||
Я тоже хочу участвовать. Не, последнее место - мое. Без вариантов ![]() Добавлено через 1 минуту и 48 секунд
Я вообще участвую только для для того, чтобы посмотреть, какие задачи должны уметь решать труЪпрограммеры... А уж если даже решу что-то... |
Автор: BaD_SeCt0R 14.10.2008, 10:24 |
Mayk, не один ты перепутал ![]() |
Автор: Matematik 14.10.2008, 10:40 |
> Я вообще участвую только для для того, чтобы посмотреть, какие задачи должны уметь решать труЪпрограммеры... А уж если даже решу что-то... +1 Меня тоже запишите. |
Автор: Solitaire 14.10.2008, 10:52 |
Буду участвовать |
Автор: BaD_SeCt0R 14.10.2008, 10:57 |
Только мне вот кажется, что после размещения задания на форуме начнется острая дискуссия и, возможно, многие задания будут решены хоровым способом людьми, не участвующими в конкурсе, что, в свою очередь, может изрядно повлиять на результаты. |
Автор: THandle 14.10.2008, 11:01 | ||
Я думаю что стоит тему просто закрыть на время выполнения заданий. Если какие то конкретные вопросы не по заданиям будут, а по самой организации или что то в этом роде - можно тому же Alexeis'у на PM. Лично считаю что это было бы логично. Советую в очередной раз комиссии прислушаться к моему мнению. |
Автор: BaD_SeCt0R 14.10.2008, 11:27 | ||
THandle, есть и другие средства связи и обсуждения. Почему бы не рассылать задание только участникам в ПМ? |
Автор: pseud 14.10.2008, 11:38 |
все равно найдуться умники - получат задание реализовать фтп-траляля - создадут тему "не могу реализовать фтп-траляля" - или кинутся "ва усеагульнае" обсуждение |
Автор: BaD_SeCt0R 14.10.2008, 11:47 |
pseud, излагать свои мысли участникам во всеуслышание как-то не в их интересах, я думаю... А по поводу создания тем и.т.п. по решению комиссии можно снимать с конкурса, если ввести это правило. |
Автор: Mayk 14.10.2008, 11:52 | ||
не стоит. а вдруг формулировка задач потребует уточнений? |
Автор: BaD_SeCt0R 14.10.2008, 11:53 | ||
|
Автор: Poseidon 14.10.2008, 12:23 |
Мне вот что-то кажется, что если Rrader задаст что-нить из "глубин Дельфи", то завалимся все ![]() |
Автор: BaD_SeCt0R 14.10.2008, 12:30 |
Хм... А разрешены ли ассемблерные вставки в код? |
Автор: Mayk 14.10.2008, 12:35 | ||
BaD_SeCt0R,
я же говорил как раз ПО заданиям |
Автор: BaD_SeCt0R 14.10.2008, 12:39 |
Mayk, да и по заданиям можно тоже в ПМ. Добавлено через 47 секунд Иначе будет такая кутерьма, имхо... |
Автор: THandle 14.10.2008, 12:48 | ||
Вчера спрашивал у Alexeis'а. Низя.
Пусть задает. Будет очень интересно. Вообще, имхо, если бы товарищ Rrader был не в комиссии, а участвовал в конкурсе - остальным можно было бы даже не садится что то делать ![]() ![]() Насчет закрытия темы, и вопросов по заданиям: Я имел ввиду что "не по заданиям" - это не по их решению. А уточнения то - то почему ж нельзя....? |
Автор: Rrader 14.10.2008, 12:49 |
Poseidon, все задания вполне решаемы, а мое - тем более ![]() |
Автор: Qu1nt 14.10.2008, 12:53 |
Если все три задания будут на математику - я пропал ![]() |
Автор: BaD_SeCt0R 14.10.2008, 12:57 |
Предлагаю, несмотря на Delphi-тематику, сделать зеркала топика и в других разделах. Вдруг кто-то еще захочет опробовать свои силы? |
Автор: Alexeis 14.10.2008, 14:36 |
Знания АСМа вам пригодятся, но использовать его не прийдется. |
Автор: BaD_SeCt0R 14.10.2008, 15:40 | ||
Я так понял, заданий будет несколько. Как уважаемая комиссия будет принимать готовые решения участников? По одному решенному заданию? |
Автор: aktuba 14.10.2008, 19:21 | ||
Как-раз для того, чтобы все были в равных условиях - необходимо разрешить все версии Delphi. В новых версиях есть полезные вещи, которых нет в старых и много кто их использует. Отказываться в пользу старой версии = потерять время на поиск альтернативного решения. К тому-же, не пойму, почему выбрана D7, а не D2006... |
Автор: December 14.10.2008, 22:21 |
aktuba, D7 - абсоллютный лидер по популярности среди ИДЕ Delphi |
Автор: kemiisto 14.10.2008, 22:34 | ||
Подписываюсь. Не вижу смысла в таком ограничении. Как уважаемые организаторы себе это представляют. Я что должен писать в 2009, потом пытаться откомпилировать это в Delphi 7, натыкаясь на многочисленные грабли изменившегося синтаксиса. И просто грабли, ибо их в 7 куча. |
Автор: aktuba 14.10.2008, 23:23 | ||
Да я же не спорю с этим. Но у меня стоит Турба и D2009 - что делать? Ставить семерку? Я понимаю, что не так много поменялось, но все-же. Например, использование for..in, вместо обычного цикла... Вообще, кто-то может объяснить, в чем именно выражается равноправие участников, при использовании определенной версии Delphi? В том, что те, кто использует новые версии, не смогут использовать новые конструкции? Так это наоборот - вставляете палки в колеса, людям надо развиваться ;). В общем, прошу отменить это требование. Ничего практического оно не несет, а вот хлопоты добавить может. |
Автор: Alexeis 14.10.2008, 23:35 |
Не нужно было делать такой длительной регистрацию, а то народ от того что руки чешутся уже не нает чего делать ![]() Спокойно это всего лишь маленький конкурс, а не соревнование на лучшего в мире делфиста. ![]() |
Автор: Poseidon 14.10.2008, 23:50 |
Да ладно вам спорить. Хоть на синтаксисе Паскаля. Интерес ведь не в этом... ![]() |
Автор: aktuba 15.10.2008, 00:16 | ||
Так а я о чем? ![]() |
Автор: Poseidon 15.10.2008, 08:37 |
Я имею ввиду, раз оглашено D7, значит D7. aktuba, я не думаю что тебе не хватит опыта и знаний, что бы даже на D2009 написать код, который компильнется на D7. У меня вот 2007 установлена, D7 тоже нет и что? Я знаю что будет в семерке компилится, а что нет. Конечно, если по заданию нужно будет использовать что-то, для чего обязательно нужно будет D7 (типо Инди), то придется ставить семерку. Но, думаю, составители заданий не будут так извращаться. Посмотрим. Осталось пара часиков ![]() |
Автор: Alexeis 15.10.2008, 09:13 |
Не хулигань. |
Автор: Staruha 15.10.2008, 09:45 | ||
Вот-вот обещали проверку умения мыслить так понимаю находить нестандартные решения ![]() |
Автор: Rrader 15.10.2008, 11:33 |
Оглашу тематику заданий ![]() 1) Задача на алгоритм (работа с матрицей). 2) Задача на потоки и синхронизацию. 3) Третье задание посвящено внутреннему устройству классов в Delphi. Первые два задания составил Alexeis, третье составил я. |
Автор: Rennigth 15.10.2008, 12:45 |
нетерпится ![]() |
Автор: Alexeis 15.10.2008, 12:48 |
Rennigth, да каких же пару? Сутки еще. 16 го старт, а на 15 го. |
Автор: Rennigth 15.10.2008, 12:52 |
да я понял ![]() ![]() |
Автор: Poseidon 15.10.2008, 15:34 |
Да ну вас... ![]() |
Автор: MetalFan 15.10.2008, 15:49 | ||
/me довольно потирает руки ![]() |
Автор: Rennigth 15.10.2008, 16:08 | ||
А я то дурак думал, что все обрадуются первой математической задачке ![]() |
Автор: mr.Anderson 15.10.2008, 16:10 |
Rennigth, я обрадовался! ![]() ![]() |
Автор: Rennigth 15.10.2008, 16:42 | ||
Везет. Я математику вообще почти забыл. Недавно по работе нужно было простейшую тригонометрическую задачу 7-8го класса решить, дык без гугла яб неизвесно сколько времени бился головой ап стену. ![]() ![]() ![]() |
Автор: Mauzer91 15.10.2008, 17:59 |
Если еще не поздно, то я участвую ![]() |
Автор: aktuba 15.10.2008, 19:03 | ||
Я вообще ни одной не обрадовался ![]() ![]() |
Автор: mr.Anderson 15.10.2008, 19:04 |
aktuba, почему рано? ![]() ![]() |
Автор: bems 15.10.2008, 19:23 |
Я правильно понял, что при наличии двух рабочих решений побеждает более раннее, не зависимо от их скорости, размеров, ресурсоемкости и тд? |
Автор: Alexeis 15.10.2008, 19:36 | ||
Только при равной оценке обоих. |
Автор: bems 15.10.2008, 19:46 |
какой оценке? |
Автор: Alexeis 15.10.2008, 19:50 |
bems, уже столько народу собралось, так что будем ставить какие-то балы, не важно по какой системе ![]() Добавлено через 1 минуту и 41 секунду bems, за правильность, эффективность, прозрачность кода. |
Автор: Yanis 15.10.2008, 21:22 |
Я всё-таки за то, что бы вручать несколько призов: за оригинальность, за лаконичность, за производительность… Всё зависит от того какие задания будут в конкурсе. Один победитель это как-то не правильно ![]() |
Автор: Poseidon 16.10.2008, 01:02 |
Ёёё... ну и тематика. Хорошо что я уже Эксперт... ![]() Добавлено через 3 минуты и 31 секунду Кстати, я за несколько лет программирования еще не разу не сталкивался с задачей, которая каким-либо образом сводилась бы к матрице. Потоки - да. Классы - да. Но матрица... Ладно, что будет, то будет. |
Автор: MetalFan 16.10.2008, 09:01 | ||
аналогично... только давно на лабах в институте. хотя опять же зависит, в какой области программировать приходится) |
Автор: Alexeis 16.10.2008, 09:24 | ||
Гы... все намного проще ![]() ![]() Добавлено через 1 минуту и 34 секунды 1.5 часа до старта. Обратный отсчёт ![]() |
Автор: bartram 16.10.2008, 09:28 | ||
Матрицы нужны для того чтобы использовать их в олимпиадных задачах ![]() |
Автор: MetalFan 16.10.2008, 10:27 |
полчаса.... |
Автор: Rennigth 16.10.2008, 10:38 |
22 минуты |
Автор: MetalFan 16.10.2008, 10:58 |
2 минуты) |
Автор: Alexeis 16.10.2008, 10:59 | ||||||||
Задания на конкурс 1) Задача на алогоритм Дана матрица случайных чисел m x n (m и n) константы (например 10 на 10). Требуется отсортировать ее элементы по спирали. Т.е. для матрицы 3 х 3 получить примерно такой результат. 123 894 765 Вывод по своему усмотрению. Можно и в консоль. Критерии оценки задания: лучшим будет считаться такое решение, которое будет быстрее всех. ------------------------------------------------------------------------------------ 2)Задача на потоки. Условие: Есть Хулиган с мусорными пакетиками и дворник. Задача хулигана разбросать все мусорные пакетики и при этом не попасться на глаза дворнику. Задача дворника убирать мусор и накостылять хулигану ![]() Поле состоит из 60 ячеек (одномерное). Хулиган появляется в произвольной позиции на поле и выбрасывает за раз только 1 пакетик (занимает ячейку) в течении 60мс, после чего он исчезает чтобы через 300 мс появиться в новой позиции начать там гадить. У хулигана запас 22 пакетика. Дворник бегает от края до края поля за раз сметая 3 бумажки (очищая 3 соседние ячейки) в течении 400мс. Условие поимки. Попытка одновременного доступа (2х потоков) к общей ячейке. Требование к решению. В программе должно быть 3 потока (Основной, дворник, хулиган) + простейшая отрисовка в виде ячеек. В атаче пример реализации (зеркало http://narod.ru/disk/3216906000/huligan_vs_Dvornik.zip.html) . 3 красных квадарата это дворник в процессе уборки. Ячейки рисуются по XOR во время уборки и заполняется белым после очистки, пакетик хулигана на время выброса становиться желтым, а после ухода становиться синим. Красным кружком помечается позиция где пойман хулиган. Примечание: графическая отрисовка может отличаться от предложенной, но тогда, дополнительно, потребуется ее описание. Критерии оценки задания: лучшим будет считаться такое решение, которое будет правильнее всех, т.е. грамотная синхронизация потоков, без лишних простоев и одновременных обращений к общей памяти. Также будет учитываться прозрачность кода и наглядность визуализации. -------------------------------------------------------------------------------------- 3) На знание внутренних механизмов Delphi. В Delphi конструктор любого класса может работать в двух режимах: 1) Режим создания нового экземпляра объекта:
2) Но можно сделать и так:
Во втором случае просто произойдет реинициализация экземпляра класса. Представьте, что перед Вами возникла задача создать экземпляр некоторого класса в "чужом" приложении. Что для этого нужно? Ну, во-первых, сам класс, который будет создан, во-вторых, режим работы (создание нового или реинициализация уже созданного экземпляра). Если конструктор класса может принимать параметры, то они также понадобятся. Зная адрес конструктора, его можно вызвать. Отмечу один из важнейших моментов при работе с "чужими" приложениями - для начала все действия нужно проверять на своем приложении. Задание посвящено методике создания классов в "чужих" приложениях. Итак, дан простой класс, имеющий конструктор с целочисленным параметром. Он просто выводит сообщение с переданным при создании числом.
Требуется: 1) Написать обыкновенную функцию (не метод) CreateClass, которая бы создавала объект класса TDummy (т.е. написать аналог родного конструктора). Параметры функции - на Ваше усмотрение. Иными словами: Dummy := TDummy.Create(); будет эквивалентен коду: Dummy := CreateClass(); 2) Написать простой пример использования функции, создав экземпляр класса (в локальной переменной), передав в конструктор произвольное значение. Входные данные: 1) Можно пользоваться классом TDummy как типом данных. Условия: 1) Не использовать ассемблер. 2) Не вызывать конструктор напрямую:
3) Все остальное делать можно ![]() Критерии оценки задания: лучшим будет считаться такое решение, которое будет идеально моделировать "родной" конструктор в любом режиме его работы. Полезность задачи - позволяет динамически создавать классы и компоненты в "чужих" приложениях без использования модулей VCL в своих. |
Автор: MetalFan 16.10.2008, 11:24 |
пааанеслася!!! (эхх, срочные дела появились, надеюсь успею до конца конкурса хотяб одну задачку решить ) |
Автор: Alexeis 16.10.2008, 11:37 |
Возникли вопросы по первому заданию, отвечаю для всех Изначально матрица это двумерный массив типа array [0..n, 0..m] of Integer; или array of array of Integer; по желанию, дальше чего хотите то и делаете с ней. |
Автор: AntonN 16.10.2008, 12:26 |
вот почему не люблю примеры "с ООП" - все высасано из пальца и сами себе сделаны проблемы... еще вопрос - каким образом будет тестироваться скорость первого задания? |
Автор: X-Vlad 16.10.2008, 12:32 |
я б тоже хотел |
Автор: Rrader 16.10.2008, 12:50 |
Уточнение по поводу второго задания, чтобы потом не возникало пикантных вопросов. Все константы времени - 60мс, 300мс, 400мс являются условными (т.е. формально нужно использовать их, но фактически время может отличаться), так как Windows не является системой реального времени. |
Автор: AntonN 16.10.2008, 13:35 |
Rrader, думаю даже без учета rtos временной интервал в 60мс она спокойно выдаст. |
Автор: Felan 16.10.2008, 13:43 |
А в первом задании именно n*m матрица? Или все таки n*n? Т.е. учитывать надо, что матрица может быть прямоугольной? |
Автор: Alexeis 16.10.2008, 14:34 | ||||
В первую очередь скорость степень сложности n^2, n log2n , потому если будет спорный вопрос, то можно заюзать QueryPerformanceCounter для подсчета тактов проца. В принципе если участники не против, я запишу еще одного участника.
Да, по условию n * m зачем упрощать жизнь ![]() 60 мс это 6 * 10 мс, вполне реальное время для таймера, ну если разик из 100 попыток не успеет, то это скажется только на том что хулиган спасется лишний раз, это не критично. |
Автор: AntonN 16.10.2008, 14:45 | ||
Alexeis,
а смысл вообще рассматривать решение, которое не удовлетвояет условию, соответственно оно не есть решение поставленной задачи? сдавать проектом или просто листингом? |
Автор: Alexeis 16.10.2008, 15:09 | ||
Ну мы ж не звери ![]() Как удобно. Проще листингом, так легче будет публиковать. |
Автор: Poseidon 16.10.2008, 15:40 |
Сдавать по степени решения (т.е. по одному) или потом, в конце, все сразу? |
Автор: Rrader 16.10.2008, 15:54 |
Можно по степени решения. |
Автор: AntonN 16.10.2008, 16:18 |
уточнение небольшое: тов. Дворник находится сразу на трех ячейках (ну например на соседние он может метлой ударить ![]() |
Автор: Alexeis 16.10.2008, 16:40 |
Дворник находиться одновременно на трех ячейках, если в пределах 3х ячеек появился хулиган, то считается что он пойман, т.е. фактически система залпового огня ![]() На самом деле это имеет практическую подоплёку, иногда требуется обеспечить синхронное изменение более чем в одной записи, но при этом сохранить доступ других потоков к другим записям, т.е. произвести множественные изменения не блокируя целиком все хранилище. Если блокировать записи поочерёдно, то есть ненулевая вероятность того что 2 потока будут охотиться за за общими записями и при этом будут ждать друг-друга и ни один не сможет завершить до конца свою операцию. Чтобы полностью смоделировать такую ситуацию потребуется, чтобы хулиган разбрасывал не по одной бумажке за раз, а больше, это но к сожалению усложнило бы и так непростую задачу, но если кто из участников возьмётся и сумеет, то получит дополнительные балы. |
Автор: AntonN 16.10.2008, 16:49 |
Alexeis, ладно, сделал на три. Вообще, довольно плохо сформулированное задание (я про второе), например, что есть "ячейка"? В принципе, тут потоки как таковые не нужны совершенно (именно при такой формулировке), но раз надо - получай "пустыши" ![]() |
Автор: Virtuals 16.10.2008, 16:55 |
хм а ASM вставки нельзя только в 3 задании? и еще как будет оцениватся, так-называемые, "нерекомендуемые" конструкции и вункции самой винды например ктото говорит что absolute нерекомендуют (правда я так и не нашел почему), а мне нравится, при условии что использовать аккуратно., или какая либо функция типа пользуйте ее но рекомендуем другую?... |
Автор: Alexeis 16.10.2008, 17:04 | ||
AntonN, суть задания чтобы на простом задании приобрести опыт в решении сложной задачи на синхронизацию потоков. Что такое ячейка не важно, это некая сущность к которой требуется обеспечить атомарный доступ. Зачем заранее ограничивать людей? Кто-то сделает несколько массивов, кто-то массив записей или объектов, другой воспользуется списками или применит контейнер TObjectList, а может пронаследуется от него и сделает потокобезопасным ресурсом. Включаем фантазию ![]() |
Автор: AntonN 16.10.2008, 17:09 |
Alexeis, а, ну тогда я спокоен за свою реализацию ![]() |
Автор: aktuba 16.10.2008, 17:33 | ||
И с трехмерной графикой не работал? Везет ;) Мне когда-то пришлось вдоволь "насладится" матрицами... |
Автор: Alexeis 16.10.2008, 17:38 |
Если кто уже заюзал, то ладно уже не переделывайте, но вообще не рекомендуется, у нас конкурс по делфи, а не по асму. Задача написать оптимальный алгоритм, а не максимально приладить алгоритм к процессору. Короче дополнительных балов не ждите, но если все будет верно, то снижать тоже не будем. К остальным кто еще не решал, просьба воздержаться от асма. |
Автор: bems 16.10.2008, 18:25 |
а вот во второй задаче "Хулиган появляется в произвольной позиции" значит, что он сам выбирает где появляться или там обязательно должно быть случайное число? Если первое то какая информация у хулигана есть относительно положения дворника? |
Автор: bems 16.10.2008, 19:08 | ||
|
Автор: Alexeis 16.10.2008, 19:43 |
bems, в произвольной. На счет массива прошу прощения, там или [1..n,1..m] или [0..n-1,0..m-1], индексы не суть, главное число элементов. Добавлено через 2 минуты и 13 секунд Если позиция хулигана выбирается произвольной, он не знает где сейчас дворник. |
Автор: Virtuals 16.10.2008, 20:06 | ||
Alexeis,
но! он не знает где сейчас дворник, это неравно, позиция хулигана выбирается произвольной ![]() он не знает где дворник, но знает где был только что! тоесть можно ли сигануть в ту позицию откуда сигает? и что делать если он там уже нагадил, а дворник неубрал? особо интиресует задержка по времени: .гадить поверх за такое-же время .гадить вдвойне, и пусть дворник потом разгребает(тоже соответственно тому сколько нагадили х2,х3....) .увидеть что нагажено и свалить без затрат времени ??? Добавлено через 1 минуту и 23 секунды ЗЫ ух и ненавижу задачки высосаные из пальца... ![]() |
Автор: AntonN 16.10.2008, 20:41 | ||||||
Virtuals,
да, это не равно, одно есть следствие другого. знал бы он где дворник - смысл тогда в задаче искать одновременное обращение к одной ячейке?
Хулиган настолько туп, сколько и хамоват мусорить на улице, он, наверное, даже своего предыдущего места не помнит, не то, чтобы даже о дворнике знать ![]()
нагадить еще раз, потратив пакет мусора? дворник чистит ячейки, сколько бы в них мусора небыло, хулиган прыгает рандомно, при юзании одной ячейки побеждает дворник, при окончании пакетов мусора - хулиган, вес просто вроде бы. даже "демо" есть... |
Автор: Virtuals 16.10.2008, 21:04 |
AntonN, у меня демо написало "404 Нет такой страницы" ![]() теперь понял, тоесть абсолютно безусловно попал в ячейку-записал-потратил время, попал в дворника продул пойман - прога останавливается? или рисует что пойман и перезапуск пакеты кончились - останавливаемся или рисуем что выиграл и перезапуск...? |
Автор: AntonN 16.10.2008, 21:12 |
Virtuals, там в подсветку ссылки скобка попадает, потому и 404 ![]() |
Автор: actual 16.10.2008, 22:18 |
По первой задаче, space complexity учитывается или только time complexity? |
Автор: aktuba 16.10.2008, 22:28 | ||
![]() |
Автор: Poseidon 16.10.2008, 22:34 |
Кто-нить творение Rraderа решил? Я, как и писал, завалился на нем ![]() ![]() |
Автор: AntonN 16.10.2008, 22:40 |
Poseidon, об чем речь-то? ![]() |
Автор: Poseidon 16.10.2008, 22:49 | ||||
Добавлено @ 22:50
|
Автор: Alexeis 17.10.2008, 10:27 | ||
Балин я просто закинул ссылку, а форум решил что скобка тоже относиться к ссылке и самовольно ее туда добавил :( . Ладно я все поправил. Насчёт высасоной из пальца, см. ниже я описывал суть задачи. Если бы она описывал реальные сущности, то на решение ушло бы не несколько часов, а несколько недель, так что критика не принимается. Добавлено через 1 минуту и 45 секунд actual, aktuba все верно пояснил. Добавлено через 3 минуты и 36 секунд THandle, спокойно, а 4 дня на что? Зачем же все за 1 день ![]() |
Автор: AntonN 17.10.2008, 11:36 |
третья задача из разряда "а угадайте, что я задумал, но только как правильно делать нельзя, можно делать только как я задумал", с втыканием палок в колеса, с туманным объяснением самого задания (потому что чуть больше описания - и все сразу будет понятно). очень жду конца конкурса, чтобы посмотреть на "правильное решение", действительно ли оно такое, как мне кажется... и вот по этому поводу вопрос - конечно же решение в третьем задании следует принципам ООП и "общепринятыми" принципами работы с объектами (хотя бы выполнение конструктора/деструктора)? |
Автор: Rrader 17.10.2008, 12:00 | ||
AntonN, полегче. Задание на знание возможностей языка.
Что это за Дельфи-программист, который не понимает, как работает компилятор даже на базовом уровне? Задание не посвящено ООП. Оно покажет, умеете ли Вы создавать классы как-нибудь еще кроме TDummy.Create(); Конечно, об этом в книгах почти ничего не пишут, и в гугле трудно найти, но на то оно и задание, чтобы победил сильнейший. Virtuals, интересные решения приветствуются! Если совсем недокументированные возможности будете использовать, то обосновать не лишне будет ![]() |
Автор: Alexeis 17.10.2008, 12:23 |
Модератор: Давайте вернёмся к теме обсуждения. Просьба не оффтопить. Весь оффтоп удалил. |
Автор: AntonN 19.10.2008, 09:30 |
ну как там, сколько участников прислало работы? ![]() |
Автор: MetalFan 19.10.2008, 10:09 |
чорт, почти закончил %) только сегодня время появилось, в последний момент так сказать) |
Автор: MetalFan 19.10.2008, 10:41 |
а как архив с исходниками решений выслать через ЛС? или предлагается все исходники текстом слать? |
Автор: Poseidon 19.10.2008, 11:36 |
Я на мэйл выслал |
Автор: ne0n 19.10.2008, 18:06 |
Ыыы отправил свое решение 1-ой задачи) на 2 -ю времени не хватило, а на 3-ю ума ![]() |
Автор: Bose 19.10.2008, 18:16 |
меня можно вычёркивать у меня терпения ни на одну из задач не хватило ![]() |
Автор: Qu1nt 19.10.2008, 18:25 |
Только освободился, постараюсь успеть. |
Автор: THandle 19.10.2008, 19:09 |
Блин... У меня из за падения компа времени все сделать не хватило :( Не удачно... Ну ограничусь не лучшими решениями 1 и 3 задачи... Как бы этого Alexeis'а в асе что ли поймать... А то не понятно куда архив кидать. А вообще задания интеренсые были ![]() ![]() |
Автор: Alexeis 19.10.2008, 19:59 |
человек 12 будет с решениями. |
Автор: THandle 19.10.2008, 20:02 |
Alexeis, с полными решениями всех 3 задач? |
Автор: Virtuals 19.10.2008, 20:56 |
вне конкурса накидал решение первой, понял что это неинтересно, хотя есть очь интересная идейка с извращениями (основной изврат наложение спирали на линейную область памяти), на остальное времени нет, хотя вторая задачка точно есть в реализации,для своих нужд, а про 3 так и не понял нафига такое, классы да инжектить в чужое приложение,бррр.... |
Автор: AntonN 19.10.2008, 21:06 | ||
причем это как то относится к профессионализму работы в дельфи... понимаю, если бы то открыть метод, закрытый далеко в предках, а тут даже не ооп. вот потому и жду правильного решения, может я не так понял... кстати, сегодня уже закроется принятие работ, можно выставить решения от администрации конкурса (ну на первые две ладно, там нет однозначного решения, а вот третье...)? |
Автор: tHE_EGOiSTE 20.10.2008, 00:56 | ||||
Это используется для того, чтобы мы могли создавать объекты, классы которых неизвестны на этапе компиляции. \\ Реальная практическая задача, как и сказал Rrader - это например получить компоненты чужих программ из файла. \\ Я вот часа 2 возился с этой задачай.... ![]() ![]() |
Автор: Staruha 20.10.2008, 08:48 |
Вообще то если честно я уже в пятницу сошла с дистанции - оценила свои силенки -время и ... ![]() |
Автор: Alexeis 20.10.2008, 09:41 |
Все, ФИНИШ Вот список приславших решения: tHE_EGOiSTE, mr.Anderson, aktuba, Staruha, Shaggy, jsa, Felan, AntonN, Sajtran, Poseidon, bems, MetalFan, actual, ne0n, THandle, Qu1nt. Решения больше не принимаются. Проверьте, все ли решения я получил. |
Автор: Poseidon 20.10.2008, 09:58 |
Хехе. А решение-то прислала все-раво ![]() |
Автор: Alexeis 20.10.2008, 11:54 |
Ну вот возмущений было куча, а беглый просмотр выявил 2 правильных 3х задания. Вторые задания почти все с огрехами, кроме одного. Уже наметились 2 явных победителя ![]() Все задания были решаемыми более того на 2ю задачу был поясняющий пример, однако, из 8 ми решенных 2х задач только 1 ведет себя правильно, возможно в реализации не все ситуации отлова, но выглядит правильно. 1) ситуация Хулиган перед тем как занять, проверят не занята ли ячейка, если занята, то он пойман, иначе занимает ячейку, рисует себя желтым, ждет 60мс в течении которых его может поймать дворник, после чего если он оказался не пойман, он оставляет бумажку (рисует ячейку синим), освобождает ячейку бежим дальше. 2) ситуация Дворник сначала пытается занять 3 ячейки, отрисовывается, если одна из них занята то хулиган пойман, иначе ждем 400 мс, в течении которых Хулиган может еще попасть на одну из 3х ячеек. Только после ожидания очищаем ячейки, отрисовываемся, отпускаем ячейки, и бежим дальше. Только такое поведение будет считаться правильным. За любое отступление от алгоритма буду снимать балы. Я для простоты рисовал прям из потоков, лоча канвас на время рисования, это быстро и требует минимальной синхронизации. Все события отлова удобно отправлять в виде сообщений. Так решили многие. |
Автор: AntonN 20.10.2008, 12:34 | ||
Alexeis,
Означает ли это, что хулигану нельзя отрисовываться, когда ячейка занята дворником? если да - простестую, в задании таких подробностей нет. Даже логически поразмыслить - дворник (настоящий ![]() Так же нет подробностей по алгоритму оставления пакетика - сразу по прибытии или перед переходом на слудующую ячейку. |
Автор: Alexeis 20.10.2008, 12:55 | ||||||
Касательно отрисовки это второстепенно, к таким мелочам придераться не будем, тем более что сразу после такого события поверх всего должен появиться кружек. По этому пункту согласен.
Если пакетик будет оставлен перед переходом, а не до паузы в 60 мс, то хулигана не возможно будет поймать, по моему это очевидно, ведь если он ничего не выбросил, то за что его ловить? Ловят с поличным, после того как выбросил.
Выбрасывание пакетика эквивалентно занятию ячейки, но всякие флаги того что мусор уже выброшен или в процессе (у кого как), должны быть выставлены до периода в 60мс. Флаг "выбрасывает" или "выбросил" выставленный до 60 мс буду считать эквивалентными. |
Автор: AntonN 20.10.2008, 13:03 |
Alexeis, т.е. сел в клетку, тут же выкинул пакет, тут же получил по шее, если попал к дворнику? ну а если дворника нет - так и сидит в грязи 60мс ![]() а вот про сообщения я даже не догадался, тут действительно можно было применить ![]() |
Автор: Alexeis 20.10.2008, 13:09 | ||
60мс ну смотри, это ж очень мало, почти мгновенно, потом в течении 300 мс спокойно убегает. Т.е. в среднем он не так долго сидит ![]() ![]() |
Автор: MetalFan 20.10.2008, 13:35 | ||||
в задании это не было обязательным условием... было написано
а уже в примере реализации было про кружок... я посчитал это необязательным условием. |
Автор: Rrader 20.10.2008, 14:34 | ||||||||||
Правильное решение 3-го задания В Delphi конструктор может работать в двух режимах - создавать объект и реинициализировать созданный объект. Режим определяется способом вызова конструктора - в первом случае он вызывается как метод класса, во втором случае - как метод созданного объекта. Delphi различает эти режимы по скрытому параметру, неявно передающемуся в конструктор. Если рассмотреть конструктор как обычную процедуру, то его можно представить следующим образом:
По соглашению параметры будут переданы следующим образом: TypeInfo - EAX - информация о создаваемом классе. Alloc - EDX - флаг режима, выделять память или нет. Поскольку однобайтовый, то достаточно использовать для него регистр DL (так делает Delphi). Value - ECX - первый параметр конструктора. Адрес конструктора можно получить так:
Назначив его любой переменной процедурного типа, его можно вызвать:
Но зная, что при вызове Creator параметры уже подготовлены, можно переписать код более компактно:
А вот и пример использования:
Задание очень простое, и есть люди, его решившие ![]() ![]() |
Автор: THandle 20.10.2008, 14:39 |
Rrader, вон оно как... Блин. Ведь просто же... ![]() Rrader, Alexeis, огромное спасибо за интересные задания и за сам конкурс вообще ![]() |
Автор: Mayk 20.10.2008, 16:55 | ||
А теперь эталонное решение первой задачи на brainfuck'e для сетки 3х3(прямоугольные - скуучно) рядом с которым код дельфи скучен и уныл ![]() ![]() (код генерился [и даже оптимизировался] скриптом на питоне, поэтому без рабочего интерпретатора brainfuck'а с 16 ячейками вправо и переводом строк по 0x0D лучше не смотреть )
Добавлено через 40 секунд сам код слшиком большой чтобы пихать в сообщение :-( |
Автор: CodeMonkey 20.10.2008, 17:30 | ||
Аккуратнее надо.
Добавлено через 1 минуту и 27 секунд P.S. Допускаю, что может зависеть от версии компилятора и режимов компилирования, но выбор свободного общедоступного регистра eax, а не какого-либо другого - логичен. |
Автор: MetalFan 20.10.2008, 17:36 |
кстати, можно поспорить о пользе использования конструктора для "реинициализации" объекта... если в конструкторе создаются другие объекты, то будет утечка памяти. или я чегото недопонял) |
Автор: Poseidon 20.10.2008, 17:47 | ||
Rrader, вообще-то в условии задания было
лично я это расценил как запрет вообще ссылаться на Create класса TDummy. Т.к. условие можно трактовать так, что @TDummy.Create так же запрещено использовать. Конечно, в таком виде решение элементарное. А вот мне бы хотелось увидеть решение без ссылания на метод Create класса TDummy (как было по условию). Как-то не правильно получилось. По условию запрещаем, а потом в правильном решении используем... |
Автор: Rrader 20.10.2008, 17:49 |
CodeMonkey, у нас в заданиях D7. Ничего не затирается, смотрим ассемблерный код функции. EAX ни при чем. MetalFan, да, за этим нужно следить. Ну так уж создатели Delphi придумали, такую возможность. Добавлено @ 17:52 Poseidon, в задании было сказано, что запрещено вызывать конструктор только напрямую. Приведен пример неправильного вызова. И специально сделан пункт, где сказано, что все остальное можно. Посмотрел код на других версиях Delphi - дело имеет место быть, оптимизатор лучше сделан. |
Автор: aktuba 20.10.2008, 20:49 | ||||
Полностью согласен... Двигался в том же напралении. Теперь вод рад, что чуть раньше сошел (по личным причинам), не решая 3-ю задачу. А то ведь всю голову сломал, пытаясь в ручную выделить память, заполнить ее и вызвать конструктор. Если уж запретили конструктор использовать (я именно так понял из задачи), то "верный ответ" какой-то не правильный... В целом, конкурс хороший. Предлагаю проводить ежемесячно ![]() Добавлено через 46 секунд
Предлагал же отказаться от какой-то определенной версии ![]() |
Автор: MetalFan 20.10.2008, 20:55 |
по моему в задании было четко написано "не вызывать конструктор напрямую, все остальное делать можно". получение адреса конструктора - это же не прямой вызов. |
Автор: THandle 20.10.2008, 20:59 |
Так. Отъехали все от Rrader'а. Задание вам, товарищи, не понравилось, видимо потому что вы его не сделали ![]() На самом же дела все четко было написано: Разве взятие адреса есть вызов??? Я лично двигался в направлению к верному решению, но... забыл блин о том что по порядку передается, в регистрах. Пытался извращаться. В итоге получился бред ![]() Кто задания будет сочинять? ![]() Лично на следующий конкурс выдвигаю в комиссию участника под ником THandle. И вообще мне вот что интересно. Победитель получит приз - перевод в группу "эксперт". Но разве человек, который все это придумал не достоит того же? Я лично считаю что и Rrader должен быть повышен до "Эксперта". Добавлено через 23 секунды MetalFan, ![]() |
Автор: aktuba 20.10.2008, 21:14 | ||
Ну тогда можно было через NewInstance/InitInstance делать, насколько я понимаю... Да и вообще получится куча решений, которые будут вызывать конструктор не напрямую, но вызывать будут. И что-то мне подсказывает, что их бы не принли ![]() |
Автор: THandle 20.10.2008, 21:20 | ||
Ну я в принципе так и сделал. Только это неверно. Это не полностью имитирует конструктор. Ладно. Чо то оффтопик пошел уже. |
Автор: MetalFan 20.10.2008, 21:29 | ||
ага... только еще корректно вызвать код конструтра(ов) останется... |
Автор: aktuba 20.10.2008, 21:30 | ||
Так это просто пример. Таких примеров кучу можно сделать ![]() |
Автор: AntonN 20.10.2008, 21:41 |
тут главное не тучу примеров сделать, а правильно сформулировать задание с учетом "нужности" навыка. |
Автор: Alexeis 20.10.2008, 21:54 | ||
Гм... хорошо, когда есть кому почитать задание и глянуть со стороны. Нам не очень удалось собрать активных (не занятых участников), так что над заданиями фактически сидели всего 2е. Тебе кажется что все ясно и яснее быть не может, а другому не так. В любом случае идет проверка задний, выставление баллов, я проверяю вторые задания Rrader, 3ие, до первых мы еще не добрались. Так что терпение (мы все работаем, учимся). Кроме того в следующий раз, нужно договориться о формате решений задач, куда и в каком виде. Думаю нужно договориться с Вовой и завести общественное мыло для комиссии и соответственно менять пароль к каждому конкурсу. Так же принимаются идеи по темам задач. |
Автор: AntonN 20.10.2008, 22:02 | ||
Alexeis,
а можно написать страничку для закачки, где участники просто закачивают решение, комиссия потом просто забирает их из админки. Но врядли такое будет на мощностях этого сайта. Можно на собственном сайте реализовать, но там придется каждому зарегиться, а это так лень тащиться куда то и региться ![]() |
Автор: aktuba 20.10.2008, 22:08 |
Тут все сложно. На мой взгляд, должны быть несколько категорий задач: алгоритмы, работа с классами (стандартными и написание своих), работа с WinAPI, сеть и т.д. Например, для следующего конкурса, можно сделать 4 задачи, по основным разделам форума: для новичков (например, работа со стандартными классами), общие (алгоритмы/потоки), графика и сеть. Что думаете? P.S.: задания, наподобии 3-е данного конкурса, необходимо полностью исключить! Причины, я вижу, две: 1. Зависимость от версии Delphi 2. Задача, скорее, для знакотов ASM, а не Delphi. Мало кому приходится копаться в регистрах и ассемблере (что я считаю большим плюсом). Лучше сделать задачи на наследование/инкапсюляцию классов, что очень полезно для delphi-программистов (часто встречаю, что люди понятия не имеют, что это такое. подобные задачи заставят выучить, зазубрить и понять это ;)) |
Автор: Rrader 21.10.2008, 04:19 | ||||||||||
Задание придумывал так, чтобы оно не зависело от версии Delphi. Мое последнее "компактное" решение - уже мой недочет, в плане этого пункта, но оно гарантированно работает на D7 (и на более новых Delphi с отключенной оптимизацией).
Мы не такие звери, все решения будут приняты ![]()
Делов было на 5-минут. Теперь каждый участник знает, как можно создать класс из asm-вставки ![]()
|
Автор: Poseidon 21.10.2008, 08:39 | ||
![]() Все-равно, хоть и получаем адрес конструктора, но ведь что бы получить адрес, мы запрашиваем его напрямую у класса, т.е., по сути обращаемся на прямую к конструктору (да, не вызываем на прямую, а всего лишь адрес считываем, но все же). Тут все-таки не дополнительные задания на экзамене, а конкурс. И вопросы нужно формулировать однозначно. Иначе получилось "сделайте как я задумал и никак иначе". (мне вот интересно, а если бы горе-программист, который писал TDummy, взял и отошел от соглашений и назвал конструктор не Create, а как-нибудь иначе. Вы бы также использовали в своем "правильном решении" @TDummy.Create? Нет? А как? Сослались бы на другое имя? Т.е. обратились бы к конструктору по другому имени? Если учесть, что в задании "использовать конструктор на прямую нельзя", то вам должно быть все-равно как называется конструктор у исходного класса. Именно так я понял задание, именно так я его пытался сделать). |
Автор: AntonN 21.10.2008, 10:14 | ||
Poseidon,
меня другое интересует, а что было бы если бы там был не Д7 (в чужой программе), а другая версия, при этом нужно узнавать версию, и написано ли приложение вообще на дельфи ![]() |
Автор: aktuba 21.10.2008, 13:59 | ||||||
Сейчас то какая разница? Суть не в этом, а в том, что задание было на запрет вызова конструктора (как я понял, да и многие другие), а в результате все-равно вызывался конструктор. На примере формы, можно так:
а можн так:
Причем это стандартный вызов конструктора, хотя и не используется обычный вызов. Такое решение подошло бы? Или это считалось бы не верным решением? =))) Подмести пол тоже не долго, но к Delphi отношения не имеет ;)
Лучше бы каждый участник научился правильно использовать наследование, чем учить ассемблерные вставки. Я, например, ничему из этого задания не научился, т.к. мне не нужен ассембер, я против его использовани. Скорее всего и другием тоже ничего не дало, по другим причинам. Об этом и сказал выше. Такая "нужность" мало кому нужна. Очень мало. Потоки или графика или, даже, сеть, нужна куда чаще. |
Автор: Rrader 21.10.2008, 14:03 | ||||||||
Есть два типа людей - одни постоянно спрашивают, куда катится этот мир? А другие катят его.
В задании было запрещено только вызывать конструктор с параметром. И приведен пример, как делать нельзя. В самом задании была дана подсказка: "Зная адрес конструктора, его можно вызвать". Сколько еще будем перепираться? ![]() AntonN, еще раз повторюсь, от версии Delphi это не зависит. Или Вам кодом ткнуть? Добавлено через 5 минут и 8 секунд
Внимательно читаем задание. Да, но не напрямую - это значит без круглых скобочек.
Задания на наследование и рядом не стоят с заданиями на глубину познания компилятора.
А мне за это приличные деньги платят... |
Автор: aktuba 21.10.2008, 14:11 | ||
Нее, дело не в этом. Вопросы задаются, чтобы получать на них ответы. Задания дааются чтобы их решать. Данное задание было описано так, что для всех запрещено вызывать конструктор, а для "правильного" решения можно. Это не препирательство, хотелось бы на будущее исключить подобные казусы. Поэтому и предлагаю исключить на будущее подобные, бессмысленные, задания. Добавлено через 8 минут и 9 секунд А мне и без этого платят не плохо ;) Дело то не в этом. Такие задания, да еще с такой формулировкой, ОЧЕНЬ мало кому понятны и нужны. Отметьте для себя на будущее. |
Автор: THandle 21.10.2008, 14:21 | ||
Модератор: хватит уже спорить!!! Вы еще поругайтесь!!! aktuba, если подобные задания будут исключены, лично я врядли буду принимать участие в конкурсе. Вы путаете вызов конструктора, и взятие его адреса. И действительно, в задании была подсказка:
Все, будьте разумными, хватит спорить из за какого то задания. |
Автор: Rrader 21.10.2008, 14:26 |
aktuba, Poseidon, Тем не менее, Вы не решили это задание никаким образом. Ни через Create, ни через NewInstance. Тема закрыта. |
Автор: Alexeis 21.10.2008, 14:36 |
Ну и не следовало ожидать что все все поймут. Так никогда не бывает. Согласитесь, довольно много народу поняло о чем речь сами, без подсказок. Причем такая картина наблюдалась по всем задачам. Кто-то не дополнял одно, кто-то другое, но не было ни одного такого момента или условия чтобы абсолютно все до одного не поняли. Многие стучались в асю, в ПМ, спрашивали, однако наиболее правильные решения в основном у тех кто вообще ничего не спрашивал, а тихо решал и внимательно читал задания. |
Автор: Rrader 21.10.2008, 14:39 |
В общем, мне жаль, что так остро все приключилось. aktuba, Poseidon, в следующем конкурсе будем участвовать вместе ![]() |
Автор: aktuba 21.10.2008, 15:17 | ||||
Ну я и не решал, о чем и предупредил заранее.
Ну а я наоборот - с такими не буду принимать участие. Так что предлагаю делать через раз ;) |
Автор: Rrader 21.10.2008, 15:45 | ||
Вот еще как можно, совсем не вызывая конструктор напрямую, не получая его адрес по имени: ![]()
|
Автор: MetalFan 21.10.2008, 18:44 |
Rrader, у меня сначало была идея высчитать оффсет конструктора в VMT... но имхо это еще более зависимый от версии делфи способ... Добавлено через 31 секунду и вообще в защиту составителей задач - все задачи по-своему интересны) в т.ч. и 3я. |
Автор: jsa 22.10.2008, 04:43 | ||||||
так и думал что надо получать адрес конструктора, но как это сделать если экземпляр класса не существует? значит должен существовать некий прелоадер классов, который получает данные о классе (я так думаю что и есть VMT), и потом уже выполняетя конструктор если так, то можно ли получить доступ к этому некоему прелоадеру используя чистый паскаль, без ассемблера
уверен что это не единственный способ вызвать конструктор не напрямую |
Автор: Poseidon 22.10.2008, 08:29 | ||
![]() |
Автор: CodeMonkey 22.10.2008, 09:07 | ||
Кстати, этот пример не сильно отличается от предыдущего. Для начала заметим, что для его работы требуется, чтобы конструктор был виртуальным (не зря, наверное, в условии задачи приведено описание класса именно с виртуальным конструктором). Предыдущий пример работал бы с любым конструктором. А проблема в этом примере в том, что мы всё равно должны иметь на руках больше информации, чем указатель на класс. В первом примере у нас на руках была информация: указатель на класс и адрес конструктора. В этом примере адрес конструктора заменён на "волшебное число" (справка: волшебное число - это любое число, отличное от 0 и +/-1). Это число показывает смещение записи с адресом конструктора в VMT класса. Иными словами адрес конструктора мы заменили на информацию о его местонахождении. Это значит, что нам всё ещё необходимо знать что-то об устройстве класса: а именно, сколько он имеет виртуальных методов и как они располагаются относительно конструктора. В частности, если убрать или добавить методов до конструктора, то пример перестанет работать. Добавлено через 7 минут и 30 секунд Кстати, а как вам такая задачка на знание Delphi:
Это функция, которая создаёт, заполняет и возвращает новый объект. Если объект создать нельзя - функция возвращает nil. Вопрос: может ли функция возбудить исключение? Не в смысле, что исключение просто будет возбуждено внутри функции - понятно, что в ... может прямо стоять raise. А с смысле, может ли исключение выйти наружу функции? Т.е. может ли код, вызывающий эту функцию, словить exception? Если нет, то объяснить почему ;) |
Автор: MetalFan 22.10.2008, 12:24 |
CodeMonkey, я думаю - не может (в случае, если исключение возникнет в конструкторе, то Result := nil и все ок, если возникнет позже, то Result <> nil и опять же все ок). если всетаки может - объясни почему. добавлено позже: нет, всетаки может. если в деструкторе объекта возникнет исключение. |
Автор: pseud 22.10.2008, 14:14 | ||||
того же мнения. значит необходима конструксион:
|
Автор: MetalFan 22.10.2008, 21:59 |
а результаты когда предположительно станут известны? |
Автор: Alexeis 22.10.2008, 22:09 |
Думаю завтра. 2е и 3е задачи проверены, остались первые. Вас много, а нас мало ![]() |
Автор: CodeMonkey 23.10.2008, 09:06 |
MetalFan, да в такой формулировке ответ найти легко, а вот в другом виде он был бы не так очевиден, т.к. если функция обёрнута в try/except на все исключения, то "есть интуитивное представление", что наружу выпускать исключения она не может - их же "except обрабатывает". |
Автор: Alexeis 23.10.2008, 22:16 |
Извините за задержку. Победителя 2, решаем как поступить ![]() |
Автор: Christoph 23.10.2008, 22:38 |
Дайте им еще одно задание ![]() ![]() |
Автор: ne0n 24.10.2008, 00:37 |
что тут решать, обоим присудить победу!!! ![]() |
Автор: Alexeis 24.10.2008, 08:04 |
Я не то не против, но все от меня зависит. Сейчас решения 3х победителей пересматривает Girder, думаю у него могут получиться другие балы. Наберитесь терпения. Пока что можно объявить только места ниже 3го, начить торжественную раздачу плюсеков и публикацию решений. |
Автор: Poseidon 24.10.2008, 08:39 | ||
![]() |
Автор: Alexeis 24.10.2008, 09:49 |
ТАДАМ ![]() Объявляем победителей конкурса. Всего можно было набрать 60 баллов, 10 за 1ю, 30 за 2ю, 20 за 3ю bems - ? MetalFan - ? actual - ? Sajtran - 41 aktuba - 30 AntonN - 27 Poseidon - 24 jsa - 23 THandle - 19 ne0n - 10 Shaggy - 9 Felan - 9 tHE_EGOiSTE - 4 Qu1nt - 3 mr.Anderson -2 Staruha - 2 Очень хорошие решения представили Sajtran, AntonN, aktuba, jsa Суперское решение первой задачи представили ne0n, bems и Shaggy Очень хорошо 3е задание решил bems. 2е задание лучше всех удалось MetalFan. Очень грамотно, аккуратно, эффективно и прозрачно. Как и обещалось все кто прислал решения хотя бы одной задачи или попытку решения, получат по одному + Все задачи были просмотрены на предмет упущений, отступлений от задания, т.е. весьма подробно. |
Автор: Poseidon 24.10.2008, 09:58 |
Блин, я в шоке. Обошел людей, которых считал в начале фаворитами. Ааааа ![]() Ждем обьявления победителей и лучшие решения ![]() |
Автор: Alexeis 24.10.2008, 10:08 | ||||||||||||||||
Публикую все решения, в порядке их прихода. ---------------------------------------------------------------------- tHE_EGOiSTE 1)
или проект http://rapidshare.com/files/154508437/_______________1.rar.html 3)
------------------------------------------------------------------------------------------------------------------------------------------------------ mr.Anderson 1)
-------------------------------------------------------------------------------------------------------------------------- aktuba 1)
2) В архиве http://aktuba.ru/N2.rar --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Staruha 1)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------- Shaggy 1)
Добавлено через 3 минуты и 28 секунд ------------------------------------------------------------------------------------------------------------------------------------ jsa 1)
|
Автор: Alexeis 24.10.2008, 10:22 | ||||||||
jsa 2) Описание раскраски для Второй задачи Красный - дворник чистит пустую ячейку Темно-красный - дворник чистит ячейку с мусором Зеленый - хулиган получил дюлей Желтый - хулиган хулиганит - выкидывает мусор Синий - мусор
DFM
-------------------------------------------------------------------------------------------------------- 1) Felan http://rapidshare.de/files/40696662/Matrix.rar.html -------------------------------------------------------------------------------------------------------- 1), 2) AntonN http://antonn.com/xlam/vg_1.zip http://antonn.com/xlam/vg_2.zip -------------------------------------------------------------------------------------------------------- Sajtran 1, 2, 3 В одном архиве http://mudclient.narod.ru/Zadachi.rar -------------------------------------------------------------------------------------------------------- Poseidon http://narod.ru/disk/3373823000/Zadanie1%20(Poseidon).rar.html http://narod.ru/disk/3373824000/Zadanie2%20(Poseidon).rar.html -------------------------------------------------------------------------------------------------------- bems, 1) 2) 3) http://narod.ru/disk/3373825000/bems.rar.html -------------------------------------------------------------------------------------------------------- MetalFan, 1) 2) 3) http://slil.ru/26250387 -------------------------------------------------------------------------------------------------------- actual 1) 2) 3) http://visualtasktips.com/public/Vingrad.Solutions.zip -------------------------------------------------------------------------------------------------------- ne0n
--------------------------------------------------------------------------------------------------- THandle 1) 3) http://delphiprog.ucoz.ru/files/1and3second.rar --------------------------------------------------------------------------------------------------- Qu1nt
|
Автор: Alexeis 24.10.2008, 10:47 |
Отдельная просьба к Sajtran, отписаться тут, поскольку поставить "+" можно только в пост. |
Автор: AntonN 24.10.2008, 10:57 |
а мое первое задание? ADD. суперское решение неОна первой задачи требует перекомпила приложения при использовании разных размерностей массива? ![]() ADD2. да тут у многих оно фиксировано в листинге и статический массив :( |
Автор: Alexeis 24.10.2008, 11:25 | ||
Внимание! Изменение в турнирной таблице. Не было учтено одно решение. В результате AntonN перемещается с 9й позиции на 6ю. Приношу свои извинения. Добавлено @ 11:28
Это строго по условию. В условии сказано, что размерности константы. Это позволяет избежать лишних копирований, и упростить сортировку. |
Автор: MetalFan 24.10.2008, 12:17 |
о черт, и правда) а я както невнимательно прочитал условие первой задачи |
Автор: Sajtran 24.10.2008, 14:11 |
Доброго времени суток А можно балы в виде таблицы, а то непонятно что кому и за что Участник, 1-я , 2-я , 3-я , итоговая сумма |
Автор: THandle 24.10.2008, 14:51 |
Ну чтож... не плохо в общем выступил ![]() ![]() Спасибо еще раз за конкурс, было очень интересно, узнал что-то новое. Думаю, что действительно, следует проводить такие конкурсы переодически(предлагаю 4 раза в год). Победителей заранее поздравляю, так как на форум в ближайшие 20 часов выйти не смогу. В общем, все было классно ![]() |
Автор: AntonN 24.10.2008, 15:47 | ||
мож почаще? ![]() |
Автор: bems 24.10.2008, 19:07 |
ээээээ... извиняюсь, а я на каком месте? |
Автор: CodeMonkey 24.10.2008, 19:20 |
Совет: когда объявляете задания или результаты - выносите в первый пост или ссылку на них или повтор. Чтобы не искать по всей теме. |
Автор: Alexeis 24.10.2008, 19:39 | ||
Первые 3 места на пересмотре в связи с тем что вы с металфаном набрали одинаковые балы. Вы в троем уже не ниже 3го места.
Хорошо. Добавлю. |
Автор: MetalFan 24.10.2008, 21:16 |
ай жду когда переподсчитаете! чур меня на последнее в общем списке место не смещать) |
Автор: ne0n 25.10.2008, 01:52 | ||
полностью потдерживаю, темболее давно уже делфи в руки не брал, по долгу службы приходиться работать с С++ ![]() жалко что времени не хватило на 2-ю задачу...а так еще раз повторюсь - все было супер) вообщем большой респект за организацию сего мероприятия ![]() п.с. очень приятно удивлен, что мое топорное решение назвали суперским ![]() |
Автор: Rrader 27.10.2008, 19:06 |
MetalFan, bems, Поздравляю с победой в конкурсе!!! Вы переведены в группу "Эксперт" ![]() ![]() ![]() ![]() |
Автор: MetalFan 27.10.2008, 19:09 |
bems, ![]() поздравляю всех участников!!! и спасибо организаторам!!! з.ы. кстати, упущение! на программерском форуме в смайлах нет пьющих пиво колобков)))) |
Автор: Rrader 27.10.2008, 19:10 |
actual - поздравляю со вторым местом! Sajtran - с третьим! Мои поздравления! ![]() Добавлено через 2 минуты и 33 секунды Также спасибо всем участникам, принимавшим участие в конкурсе!!! ![]() ![]() Добавлено через 3 минуты и 37 секунд MetalFan, ![]() |
Автор: THandle 27.10.2008, 19:21 |
MetalFan, bems, ну что ж, братцы, проздравляю!!! ![]() ![]() ![]() |
Автор: bems 27.10.2008, 20:28 |
Спасиби, спасибо. Тоже всех поздравляю. А что, так и не решили кого подвинуть? ![]() |
Автор: Alexeis 27.10.2008, 21:43 |
К сожалению так результатов новой проверки мы не получили (либо еще получим, но позже), потому я решил что и так ждали довольно много, оставляем как есть. Значит баллы такие bems - 53 MetalFan - 53 actual - 45 Поздравляю победителей! Творческих успехов и новых побед ![]() |
Автор: MetalFan 27.10.2008, 21:43 |
Rrader, чтото я видать сослепу не заметил)![]() |
Автор: Riply 27.10.2008, 23:10 |
Поздравляю победителей и всех, кто участвовал в этом (отнюдь не простом) конкурсе ! Молодцы ! ![]() |
Автор: VICTAR 28.10.2008, 06:18 |
Присоединяюсь к поздравлениям) Молодцы! |
Автор: Sajtran 28.10.2008, 08:09 |
Присоединяюсь к поздравлению ![]() ждём продолжений |
Автор: Staruha 28.10.2008, 16:19 |
Да было здорово! ![]() ![]() ![]() Домаю организаторов тоже надо как то отметить.Но чем их мона удивить понятия не имею |
Автор: mr.Anderson 28.10.2008, 16:47 |
Staruha, да чем их удивишь, они сами тут всех подряд удивляют... ![]() Действительно спасибо за конкурс, было интересно, хотя я не понял, почему мое решение посчитали плохим... Хотя верю, что причины точно были. ![]() |
Автор: Alexeis 28.10.2008, 16:50 |
mr.Anderson, ну если есть вопросы, могу показать где снимал балы. (но через ПМ или аську). |