Здравствуйте Slayer, Вы писали:
S>Эта . Вот не надо ля — ля, да? Одно дело когда ребят готовят специально к олимпиаде и другое дело программирование "в жизни". Когда готовят к олимпиаде, например, слово СОМ вообще не произносят. Понятно конечно что у этих ребят мозги работают, но это не значит что они готовы писать большие проекты. Про последнюю троицу из СПбГУ я вообще молчу. Как мне говорил чувак из Нской команды(она ездила 2-жды в финал) — каждый из этих ребят был мегамозгом по программированию еще в школе(все занимали первые места на России и в мире в личном первенстве + учились в одном классе). Так что заслуги СПбГУ в их победах никакой нет. И об уровне обучения в этом ВУЗе судить нельзя по этим результатам.
О степени подготовленности к большим проетам говорит тот факт, что большинство ребят принимавших участие в этих соревнованиях сейчас работают в Microsoft, и как можно предполагать учавствуют в не маленьких проектах.
S>Решал я эти задачки и не одну. И чо?
А то что вы решали (и решили!) эти задачи характеризует вас с очень хорошей стороны.
Здравствуйте StovN, Вы писали:
SN>Здравствуйте Владислав, Вы писали:
SN>То, что у этих ребят самомнение до небес это совершенно правильно (во первых они были не в футболках, а в майках). Наверняка они учатся или в Институте Точной Механики и Оптики, или СПбГУ. Две команды из этих вузов два года подряд становились чемпионами мира, так что об уровне доготовки в этих вузах модно судить по этим блестящим результатам. А Ваше пренебрежительное отношение к Мировой Олимпиаде по программированию объясняется тем, что Вам ни одной задачи предлагавшейся там, по всей видимости не решить.
Решал. Правда в домашних, так сказать, условиях. На олимпиаде это сложнее. Майки выдаются за УЧАСТИЕ, в ЛЭТИ у моих знакомых они тоже были. Ты не понял, я не отношусь пренебрежительно к Мировой Олимпиаде по программированию, просто хочу сказать, что к соискателям следует проявлять хотя бы немного уважения.
Здравствуйте Владислав.
Не будем ругаться. Я действительно криво выразился — извиняюсь. Просто мне показалось, что вы с пренебрежением отнеслись к этим ребятам, из-за того что они предложили задачку про лампочки. Майки действительно дают за участие, но кто знает может быть Вы беседовали с чемпионами Мира.
Здравствуйте Владислав, Вы писали:
В>По моему, в каждой достаточно крупной фирме должен быть человек, который этим профессионально занимается, а когда перекладывают это на плечи программеров, тогда и появляются подобные вопросы.
Как он тогда определит очень хорошее знание C++ если
он сам его не знает? Помоему здесь надо чела посадить
за комп и застваить его пройти бесплатный тест на Brainbench.
Только вот BB то выкладывает тесты free то делает их платными.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте Eugene_B, Вы писали:
EB>Нахождение фальш. монеты из 12 за три взв:
EB>1. На одну сторону весов кладем любые три монеты, на другую любые три. Взвешиваем. EB>2. Если вес разный, переход к п.2. Если вес одинаковый — переход к п.8
EB>8. Осталось четыре монеты, уже известно, что фальшивка среди них. Разобъем их на две равные кучки по две монеты. Одну назовем кучкой №1, другую -- кучкой №2. Шесть монет, среди которых заведомо нет фальшивых, обзовем кучкой №3.
Что-то тут с арифметикой не всё в порядке. Разве 3 + 3 + 4 == 12?
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте StovN, Вы писали:
SN>Не будем ругаться. Я действительно криво выразился — извиняюсь. Просто мне показалось, что вы с пренебрежением отнеслись к этим ребятам, из-за того что они предложили задачку про лампочки. Майки действительно дают за участие, но кто знает может быть Вы беседовали с чемпионами Мира.
Я бы этим ребяткам предложил другую задачку. Из жизни. Вкратце.
Есть отчёт, который получает данные на несколько заданных периодов о расчётах с заказчиками. Интересует информация по выборочному числу заказчиков, которых может быть 1, 1000, 10000 или все из базы данных, а это сотни тысяч и покоторым в базе миллионы проводок. Периоды могут быть любыми. Есть программа, написанная пару лет назад и выполнявшая эту задачу тогда за вполне сносное время (когда заказчиков было не много). Сегодня эта программа работает около двух суток. Нужно переделать эту программу так, что бы она работала не более 3-5 минут.
Вопрос мальчикам в маечках: какими средствами этого можно добится, какие следует использовать подходы, какие будут проблемы и можно ли это сделать вообще?
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте IT, Вы писали:
IT>Вопрос мальчикам в маечках: какими средствами этого можно добится, какие следует использовать подходы, какие будут проблемы и можно ли это сделать вообще?
Да, забыл сказать. Структуру существующей базы менять нельзя.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте IT, Вы писали:
IT>Здравствуйте IT, Вы писали:
IT>>Вопрос мальчикам в маечках: какими средствами этого можно добится, какие следует использовать подходы, какие будут проблемы и можно ли это сделать вообще?
IT>Да, забыл сказать. Структуру существующей базы менять нельзя.
А считаеться ли построение дополнительных индексов изменением структуры базы?
И еще вопрос — вы твердо уверены что в данной, очень мало информативной формулировке, задача имеет решение которое можно подробно расказать за время меньшее чем минут 30 скажем?
Здравствуйте IT, Вы писали:
IT>Вопрос мальчикам в маечках: какими средствами этого можно добится, какие следует использовать подходы, какие будут проблемы и можно ли это сделать вообще?
Любой хороший SQL сервер + правильное проектирование базы(хотя бы
индексы расставить прямыми руками) + правильные SQL запросы + возможно
некоторые подсчеты при заведении данных(в триггерах например, чтобы к
моменту когда надо было их вытаскивать они были частично готовы).
Хотя последнее наверное не понадобится т.к. в базе всего лишь миллионы
записей, а не миллиарды. При временной сложности n*ln(n) за 3-5 минут
сервак по ним проход сделает и не поперхнется.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте IT, Вы писали:
IT>Здравствуйте IT, Вы писали:
IT>>Вопрос мальчикам в маечках: какими средствами этого можно добится, какие следует использовать подходы, какие будут проблемы и можно ли это сделать вообще?
IT>Да, забыл сказать. Структуру существующей базы менять нельзя.
Структуру менять нельзя или надо чтобы старая программа тоже работала?
Это совсем разные вещи.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте Anatolix, Вы писали:
IT>>>Вопрос мальчикам в маечках: какими средствами этого можно добится, какие следует использовать подходы, какие будут проблемы и можно ли это сделать вообще?
IT>>Да, забыл сказать. Структуру существующей базы менять нельзя.
A>Структуру менять нельзя или надо чтобы старая программа тоже работала? A>Это совсем разные вещи.
Нужно что бы работали другие старые программы.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте Young, Вы писали:
IT>>>Вопрос мальчикам в маечках: какими средствами этого можно добится, какие следует использовать подходы, какие будут проблемы и можно ли это сделать вообще?
IT>>Да, забыл сказать. Структуру существующей базы менять нельзя.
Y>А считаеться ли построение дополнительных индексов изменением структуры базы?
Нужна совместимость со старыми программами. В данном случае индекмы можно менять.
Y>И еще вопрос — вы твердо уверены что в данной, очень мало информативной формулировке, задача имеет решение которое можно подробно расказать за время меньшее чем минут 30 скажем?
А вот в этом то всё и дело. Мне самому интересно, что лучше задавать задачки про кроликов на смекалку, либо обсудить с человеком возможные пути решения конкретной задачи. Это уже получается небольшое производственное совещание. Здесь можно лучше выяснить уровень подготовки человека в конкретных областях, например, умения работать с теми же БД. Можно начать рисовать схемы, по пути задавая вопромы типа а зачем нужны кластерные индексы. Если в данном случае не обойтись без какой-либо предварительной обработки данных, то какими способами это лучше делать, а как осуществлять контроль. Тут плавно уходим от баз данных и начинаем разговаривать о ночных демонах, лог-файлах, MSMQ. А MSMQ в .NET Framework между прочим реализовано очень простенько и понятно, и вообще архитектура .NET Framework гораздо продуманнее чем Win32 API
Надеюсь понятно к чему я это всё. Более того, в данном случае человек просто обязан задавать дополнительные вопросы, чтобы получить дополнительную информацию. А это самое главное.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте Anatolix, Вы писали:
IT>>Вопрос мальчикам в маечках: какими средствами этого можно добится, какие следует использовать подходы, какие будут проблемы и можно ли это сделать вообще?
A>Любой хороший SQL сервер + правильное проектирование базы(хотя бы индексы расставить прямыми руками) + правильные SQL запросы + возможно некоторые подсчеты при заведении данных(в триггерах например, чтобы к моменту когда надо было их вытаскивать они были частично готовы). A>Хотя последнее наверное не понадобится т.к. в базе всего лишь миллионы записей, а не миллиарды. При временной сложности n*ln(n) за 3-5 минут сервак по ним проход сделает и не поперхнется.
Всё правильно. Вот мы уже и начали обсуждать проблему Я уже как минимум знаю, что ты работал с большими данными, далее я могу усложнить задачу и сказать что сервер занимается не только этим и просаживать его на 3-5 минут ни кто не позволит. И дальше мы начинаем обсуждать другие вещи.
А что бы ло бы если бы ты не разгадал задачку про лампочки?
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте IT, Вы писали:
IT>Что-то тут с арифметикой не всё в порядке. Разве 3 + 3 + 4 == 12?
Вы правы. Я ошибся.
Теперь правильный вариант (я надеюсь:)).
Нахождение фальш. монеты из 12 за три взв:
0. На одну сторону весов кладем любые 4 монеты, на другую любые 4. Взвешиваем.
1. Если вес разный, переход к п.2. Если вес одинаковый — переход к п.9
2. Пусть вес в 1 оказался разным. Ту кучку из 4 монет, которая тяжелее обзовем №1, ту, которая легче — №2, оставшиеся 4 монеты, среди которых ,уже известно, нет фальшивых — №4.
3. Кладем на левую сторону весов 3 монеты из кучки №1, на правую — 1 монету из кучки №2 и 2 из кучки №4. Взвешиваем.
4. Если тяжелее левая сторона, переход к п.5. Если правая — переход к п. 7. Если равно — переход к п. 8.
5. Фальшивая монета находится среди 3 монет из кучки №1, которые лежат на левой стороне весов, и 1 монеты из кучки №2 на правой.
6. Берем из 3 монет из кучки №1 с левой ст. весов
любые две. Взывешиваем их между собой. Если вес не равен -- фальшива та, которая тяжелее. Если вес равен, фальшивка -- одна из двух оставшихся: 1 из 3 из кучки №1 и 1 из взв. в п. 5 из кучки 2. Берем любую из них и сравниваем с монетой из кучки №4. Если не равно -- она фальшива. Если равно — фальшива оставшаяся. Конец.
7. Это невозможная ситуация. Мы уже выяснили в п.2, что кучка № 1 тяжелее кучки №2.
8. Фальшивка среди не участвовашвих во взвешивании в п.3: 1 монеты из кучки №1 и 3 монет из кучки №2. Берем любые две из этих трех из кучки №2 и сравниваем друг с другом. Если не равно, то фальшивка та, которая легче (вспомним результат взвеш. в п.2). Если равно -- фальшивка одна из двух: 1 монеты из кучки №1 и 1 монеты из кучки №2. Сравниваем любую из них с монетой из кучки №4. Если неравно -- она фальшива, если равно -- оставшаяся. Конец.
8. Осталось четыре монеты, уже известно, что фальшивка среди них. Разобъем их на две равные кучки по две монеты. Одну назовем кучкой №1, другую -- кучкой №2. Восемь монет, среди которых заведомо нет фальшивых, обзовем кучкой №3.
9.На левую чашку весов кладем кучку №1, на правую -- 1 монету из кучки №2 и 1 монету из кучки №3. Взвешиваем.
10. Если тяжелее левая сторона, переход к п. 11. Если правая -- переход к п.12. Если равно -- переход к п.13.
11. Фальшивка или в кучке №1, или монета на правой чашке из кучки №2. Сравниваем между собой две монеты из кучки №1. Если не равно -- фальшивка та, которая тяжелее, если равно -- оставшаяся монета из кучки №2. Конец.
12. Все как в 11, только фальшивкой будет более легкая монета из двух. Конец.
13. Фальшивка — монета из кучки №2, не участвовавшая во взвешивании.
Здравствуйте Eugene_B, Вы писали:
IT>>Что-то тут с арифметикой не всё в порядке. Разве 3 + 3 + 4 == 12? EB>Вы правы. Я ошибся. EB>Теперь правильный вариант (я надеюсь.
Не надейся
EB>Нахождение фальш. монеты из 12 за три взв:
EB>0. На одну сторону весов кладем любые 4 монеты, на другую любые 4. Взвешиваем (1). EB>1. Если вес разный, переход к п.2. ... EB>2. Пусть вес в 1 оказался разным. Ту кучку из 4 монет, которая тяжелее обзовем №1, ту, которая легче — №2, оставшиеся 4 монеты, среди которых ,уже известно, нет фальшивых — №4. EB>3. Кладем на левую сторону весов 3 монеты из кучки №1, на правую — 1 монету из кучки №2 и 2 из кучки №4. Взвешиваем (2). EB>4. Если тяжелее левая сторона, переход к п.5. EB>5. Фальшивая монета находится среди 3 монет из кучки №1, которые лежат на левой стороне весов, и 1 монеты из кучки №2 на правой. EB>6. Берем из 3 монет из кучки №1 с левой ст. весов любые две. Взывешиваем (3) их между собой. Если вес не равен -- фальшива та, которая тяжелее. Если вес равен, фальшивка -- одна из двух оставшихся: 1 из 3 из кучки №1 и 1 из взв. в п. 5 из кучки 2. Берем любую из них и сравниваем (4) с монетой из кучки №4. Если не равно -- она фальшива. Если равно — фальшива оставшаяся. Конец.
4 раза однако
Если нам не помогут, то мы тоже никого не пощадим.
3. Кладем на левую сторону 2 монеты из кучки №1 и 2 монеты из кучки №2. На правую сторону кладем одну монету из кучки №1 и 3 монеты из кучки №4.
Взвешиваем (2). Если меньше, переход к п. 4. Если больше, переход к п.5. Если равно, переход к п.6.
4. Фальшивка среди: 2 монет из кучки #2 с левой стороны, 1 монеты из кучки №1 с правой. Сравниваем 2 монеты из кучки №2 между собой (3). Если неравно — фальшивка та из них та, которая легче. Если равно — фальшивка — оставшаяся монетка из кучки №1.
5. Фальшивка среди 2 монет из кучки №1 на левой стороне. Сравниваем любую из них с монетой из кучки №4 (3). Неравно — она фальшива. Равно — фальшива другая.
6. Монета среди не участвовавших во взвешивании в п. 3: 1 монеты из кучки №1 и 2 монет из кучки №2. Сравниваем между собой две монеты из кучки №2 (3). Если неравно -- фальшивка та, которая легче. Если равно -- оставшаяся монета из кучки №1.
Здравствуйте Eugene_B, Вы писали:
EB>6. Монета среди не участвовавших во взвешивании в п. 3: 1 монеты из кучки №1 и 2 монет из кучки №2. Сравниваем между собой две монеты из кучки №2 (3). Если неравно -- фальшивка та, которая легче. Если равно -- оставшаяся монета из кучки №1.
Выделенное можно поподробней, а то мне это утверждение совсем не очевидно.
Если нам не помогут, то мы тоже никого не пощадим.