LINUX.ORG.RU

Загадки для программистов.


1

2

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

P.S. Я гуглил, но находил как-то мало и без ответов. И вообще у меня руки кривые.

На практике самые частые загадки две:

- почему это не работает,

- почему оно вообще работало

Deleted
()

алгоритмы не придумывают, суть олимпиадного программирования - понять КАКОЙ алгоритм здесь нужно применить и КАК применить.

TakeOver
()

загадка: придумай что-то нужное и имплементируй так, чтобы это осталось нужным.

invy ★★★★★
()
Ответ на: комментарий от coderage

Вообще, ты цепляешься к словам.

Хренасе - суть одна, а подходов может быть несколько. В зависимости от области «от алгоритма / формул»: на _школьных_ олимпиадах по физике можно отталкивать, по математике уже почти не получается (на студенческих вполне бывает наоборот). По информатике - опыта меньше, но школьные навскидку где-то между.

В любом случае, можно «изобрести колесо» на месте - но это уже «не подобрать алгоритм», ведь так?

anonymous
()

Добавлю spoj - обычно там задачи не требующие особой матчасти (project euler), иногда упирается в производительность.

anonymous
()

В советское время была книжка с олимпиадными задачами по программированию. Кажется, для студентов.

P.S. На ЛОРе всегда цепляются к словам. К анонимам цепляются реже. В этом весь ЛОР.

dave ★★★★★
()

Проф. Н. К. Кульманъ. «Сборникъ загадокъ, шутокъ, прибаутокъ, примѣтъ, игрищъ и гаданiй для программистовъ». — СПб.: изданіе Я. Башмакова и Ко, 1914.

anonymous
()
Ответ на: комментарий от coderage

О, да. Конечно же, что школьник знает это лучше меня :) я, когда учился в школе, даже на всеросс ездил, и учавствовал где-мог. Емнип, на тимусе несколько сотен задач решено. Так что. Иди решай «загадки»))

TakeOver
()
Ж.Арсак "Программирование игр и головоломок." М.: Наука. Гл. ред. физ.-мат. лит., 1990
http://publ.lib.ru/ARCHIVES/A/ARSAK_J/Programmirovanie_igr_i_golovolomok.(1990).[djv].zip
anonymous
()
Ответ на: комментарий от anonymous

На крупных олимпиадах, баллы за задачу часто «разбивают» на подгруппы. к примеру: 30 баллов за решение с асимптотикой N^2 еще 30 за NlogN и последние 40 за линию. То есть лучшее решение за линию берет все 100. Без знания базовых алгоритмов и большого опыта решить на лучшую асимптотику - невозможно. А перевести условие задачи на математическую модель - это самое простое. Поэтому не существует такой сути в олимпиадных задачах, как разгадать задачу.

TakeOver
()
Ответ на: комментарий от TakeOver

Я тоже участвовал школьником (в 10-м классе) во Всероссийской олимпиаде по программированию. У нас там были разные задачи, как помню. Были и такие, где именно нужно было придумать алгоритмы. Одна задача была хорошая. Если склероз не изменяет, «задача о шахерезаде» или как-то так (я ее решил, но очень плохо оформил, зато потом никто не смог подобрать контр-пример, когда обсуждали между собой по приезду на базу). Была и совершенно тупая, где просто надо было знать о минимаксе, который действительно надо было применить, как ты пишешь, но о нем надо было сначала тупо знать школьнику (потом на обсуждении зал гудел, все топали, но это не засняли на видео).

dave ★★★★★
()
Ответ на: комментарий от dave

На всероссе 3-4 задачи относятся к простым. Там чаще всего надо тупо понять условие и сделать. Я под словом алгоритм имел ввиду что-то вроде фундаментального алгоритма, а не последовательность действий в коде :) Все же. На простых задачах придумывают, как решить, ибо там обычное решение в лоб имеет годную асимптотику. А на сложных решение в лоб дает ХУДШУЮ асимптотику. И для ее улучшения используются различные алгоритмы/матан/структуры данных. Двоичные подъемы/поиск по ответу/всевозможные виды деревьев и етц. Как-то так.

TakeOver
()
Ответ на: комментарий от dave

либо ( что особая тайная гордость для конкурсанта) - в течении тура догадатся до самостоятельного отрытия общеизвестного (возможно с личными отличиями) метода.

. а так да - печально , что составить одновременно сложное(в смысле требующее мозга) и не на знание стандартного арсенала - очень сложно особенно с простой формулировкой и «открываемым» простым решением ( «аля теорема ферма(та самая)»)

в резульатет во многом олимпиады выраждаются в азимову «Профессия»

с тем только отличием - что проф. олимпиадники реально прилагают усилия по прорешеванию «обязательной программы» для доведения до автоматизма решений достаточных для граничных условий.

ТСу гугли - достаточно на вики спортивное прогерство.

qulinxao ★★☆
()
Ответ на: комментарий от dave

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

TakeOver
()

и тут не столько прогерство

начни Л.Керрол (тот самый) История с узилками.

а вообще рекреэшенал математика .

по русски не вполне точное «занимательная математика» - там особено если читать обьяснения - очень много один-в-один приминомого для понимания программистом какие действия и в какой последовательности приводят к нужному.

классичиские козёл капуста волк и лодка с Хароном

ну и 3 котлеты и сковорода на 2.

ман теория обслуживание? теория операций.

получай удовольствия от занятий .

qulinxao ★★☆
()

Лучший на свете сайт с загадками для программистов - это багтрекер на работе.

kiverattes ★☆
()

Если кто-то участвовал в олимпиадах по программированию, сразу поймет, о чем я.

Я сломал твою систему. Правда. Приведи пожалуйста пример, где нужно _придумывать_алгоритм
//P.S. многократный (3-5 раз) участник олимпиад, призер областной олимпиады. Ни разу не помню задачу на составление своего, принципиально нового алгоритма. Анализ сущ. алгоритмов - да. Применение сущ. алгоритмов - да. Комбинирование сущ. алгоритмов - да.Изменение под частный случай сущ. алгоритма - да.

comp00 ★★★★
()
Ответ на: комментарий от TakeOver

как разгадать задачу

Ну была где-то задача про шляпы в гардеробе (посчитать вероятность, что каждый не возьмет свою). Ее можно было в каком-то смысле «разгадать», сразу выдав (1-1/e) (что-то вроде).

anonymous
()
Ответ на: комментарий от TakeOver

Без знания базовых алгоритмов

С этим никто не спорит - хорошо выступить без этого очень сложно. Но ведь это не то же самое, что «подобрать алгоритм»? Даже если нужно придумать _как организовать_ входные данные в структуру, чтобы над над ней сработала та или заготовка - тоже ведь алгортм.

не существует такой сути в олимпиадных задачах, как разгадать задачу

Этого тоже никто не говорил, лучше уж «улучшить навыки программирования» )

anonymous
()
Ответ на: комментарий от anonymous

Ну я уже сказал, что я имел ввиду более фундаментальные алгоритмы, чем последовательность строк кода :)

Все же, решения «от себя» максимум наберут 30/100 на нормальных задачах, остальные 70 берут используя различные методы, структуры, алгоритмы. Ибо границы баллов часто проводят по асимптотикам решений. :)

Ну даже банальный пример: задача на поиск пути в графе, с каким-нибудь нудным условием. Ну не будет же кто-то называть своим алгоритмом чтение данных, препроцессинг и применение алгоритма Дейкстры?)

TakeOver
()
Ответ на: комментарий от TakeOver

что я имел ввиду более фундаментальные алгоритмы, чем последовательность строк кода :)

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

anonymous
()

topcoders.com

заодно и денег заработаешь

anonymous
()

http://spoj.pl/

Достаточно много задач, большое сообщество, к тому же очень широкий выбор ЯП. Вдруг захочется на INTERCAL или Whitespace написать решение?

Про Project Euler уже сказали. Тоже крайне рекомендую.

anonymous
()

Лорчую acm.timus.ru и topcoders.com

mix_mix ★★★★★
()

Добрый день. Интересуют сайты с загадками для программистов.

int x = 17;
x-- - --x;

И, конечно, нужны ответы.

на мой пример? НЁХ.

drBatty ★★
()

Загадки для программистов
Загадки

Вот тебе загадка:

Сидит дед, во сто шуб одет.
Кто его изучает, тот слёзы проливает.
Что это?

hor
()
Ответ на: комментарий от drBatty

Оно то ли на лурке описывалось, то ли еще где. Это не загадки для программистов. Это загадки для тех, кто пишет компиляторы. Я ответил на вопрос, мам?

coderage
() автор топика
Ответ на: комментарий от coderage

Оно то ли на лурке описывалось, то ли еще где.

на лурке была другая загадка.

Это не загадки для программистов. Это загадки для тех, кто пишет компиляторы.

нет. Для тех, кто пишет компиляторы, загадки тут нет. А вот для программистов — да, загадка. ОТ тех, кто компилятор написал.

Я ответил на вопрос, мам?

нет. Чему равно x?

drBatty ★★
()
Ответ на: комментарий от drBatty

Я правильно понимаю, что ответ зависит от компилятора? Собственно, всё. Чем там X равно изначально - не суть. И ++ там или — - тоже не важно. В ключе топика - это спам. Лучше бы нормальную книжку подсказал.

coderage
() автор топика
Ответ на: комментарий от coderage

Согласен, пора забанить этого спамера! И загадки у него плохие!

anonymous
()
Ответ на: комментарий от coderage

Я правильно понимаю, что ответ зависит от компилятора?

нет. Дело не в этом. Тут важно понимать. что это UB, и ПОЧЕМУ это UB? IRL такое сплошь и рядом, только видно намного хуже, потому-что такого простого ессно никто не пишет.

И ++ там или — - тоже не важно.

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

В ключе топика - это спам.

спам == реклама. Что я тут рекламирую?

Ты просил загадку. Загадка — это какое-то нестандартное описание обычной ситуации, и надо отгадать эту загадку. Например «не лает не кусает, а в дом не пускает». По книжкам и учебникам никогда не отгадаешь, думать надо. Так и тут. Книжки, стандарты, и даже какой-то небольшой опыт тебе тут не помощники, в книжках такого нет. Даже в гугле сложновато найти отгадку(на мою загадку). Мало того, без подключения мозга ты никогда и не поймёшь ответ.

Лучше бы нормальную книжку подсказал.

Кнут, Искусство Программирования. Загадок нет, но есть упражнения. Интересные, сложные, и полезные.

А загадки — это ко мне. ☺

drBatty ★★
()
Ответ на: комментарий от drBatty

Я не спорю. Это интересно. Но это не загадка. Я, вероятно, неправильно сформулировал мысль топика. Я имел ввиду задачи, конечно же. Поэтому, вероятно, набежали тролли.

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

coderage
() автор топика
Ответ на: комментарий от coderage

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

набей скора, получишь право топики редактировать. А можно сначала думать, а потом писать.

drBatty ★★
()
Ответ на: комментарий от drBatty

Ну ладно, оставайся дурачком.

anonymous
()
Ответ на: комментарий от drBatty

Зачем? Я не думал, что тут можно что-то понять превратно. Собственно - и нельзя. Просто некоторые одаренные пришли в топик прямиком со специальной олимпиады. ;)

coderage
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.