Сайты с задачами для программистов
Практически все ресурсы в подборке — англоязычные, так что у вас будет возможность не только потренироваться в решении кодерских проблем и головоломок, но и получить дополнительную практику применения английского в программировании.-
Один из самых популярных англоязычных ресурсов с задачами для программистов. На нем можно найти более 200 задач разного уровня сложности, решать которые можно прямо на сайте онлайн с помощью одного из 10 доступных языков программирования (включая и Java).
-
Programming Praxis — это популярный блог, в котором на регулярной основе публикуются различные интересные и, главное, актуальные задачи для программистов. Обычно для целого ряда языков программирования. Задачи призваны помочь кодерам освоиться с последними изменениями в технологиях и подходах к программированию на практике.
-
TopCoder — это активное сообщество программистов, которые любят развиваться и решать разнообразные задачи. Регулярно публикуются новые задачи, успешное решение которых не только даст возможность попрактиковаться и повысить свое ЧСВ, но и получать денежные призы.
-
CodeKata — блог с большим количеством довольно оригинальных и остроумных задач для программистов, придуманных Дэйвом Томасом (Dave Thomas), одним из авторов известной книги Pragmatic Programmer (“Программист-прагматик. Путь от подмастерья к мастеру”). Задачи на сайте CodeKata отличаются разнообразием, а решения — актуальностью по отношению к реальной программистской работе.
Peking University JudgeOnline for ACIP/ICPC
Peking University JudgeOnline for ACIP/ICPC — это страничка Пекинского университета, на которой собраны задачи для программистов с разных соревнований и конкурсов. Сайт регулярно обновляется, решать задачи можно в реальном времени, а оценивает решения комиссия из экспертов Пекинского университета.
-
Еще один старый известный сайт с серьезными и нетривиальными задачами. “Project Euler — это сборник сложных математических и программистских задач, для решения которых требуется нечто большее, чем просто знание математики. Проблемы варьируются по сложности, а в основе подхода лежит индуктивное цепное обучение. То есть, решив одну задачу, вы откроете для себя новую концепцию, которая позволит вам решать другие, ранее недоступные для понимания задачи,” — говорят создатели ресурса.
-
The Daily WTF — это еще одно популярное сообщество программистов, которое устроено по принципу Bring Your Own Code (BYOC), то есть разработчики делятся на нем собственным исходным кодом для решения различных оригинальных задач. “Цель BYOC проста: предоставить вам, как разработчику программного обеспечения, возможность повысить свои навыки программирования в решении проблемы, немного более интересной, чем обычные, скучные вещи,” — говорится на сайте.
-
Отличный русскоязычный сайт с алгоритмическими задачами, которые применяются для проверки навыков специалистов в ходе технических собеседований в таких компаниях, как Google, Facebook и другие. Представлено множество задач, в том числе оригинальных, разного уровня сложности.
Al Zimmermann’s Programming Contests
Известный авторский сайт, где “безумные программисты соревнуются за славу и крутые призы.” Соревнования проводятся раз или два в год, а имена отличившихся программистов публикуются на главной странице ресурса, что наверняка привлекает к ним интерес со стороны перспективных работодателей.
-
Один из крупнейших русскоязычных архивов задач по программированию с автоматической проверяющей системой. Основной источник задач для архива — соревнования Уральского федерального университета, Чемпионаты Урала и прочие региональные программистские мероприятия. Также Timus Online Judge позволяет принять участие в онлайн-версиях большинства соревнований, которые регулярно проходят в Уральском федеральном университете.
5 интересных задач
Вот несколько любопытных задачек для тех, кому не терпится начать.Загадка про блендер от Стива Джобса
Задача: Вас уменьшили до размеров 5-центовой монеты и бросили в блендер. Ваш вес уменьшился так, что плотность вашего тела осталась прежней. Лезвия начнут вращаться через 60 секунд. Ваши действия?
Это классическая задача, которую, как правило, связывают со Стивом Джобсом, основателем компании Apple. Когда Джобс вернулся в Apple в 1997 году, он лично проводил собеседования с каждым сотрудником компании и использовал эту задачу в качестве одного из первых испытаний.
Решение:
У данной задачи больше одного решения, так как она служит для того, чтобы оценить креативность сотрудника, умение быстро находить выход из стрессовой ситуации и неординарно мыслить. Вот наиболее классический вариант решения: лечь как можно плотнее к днищу блендера, чтобы его лезвия крутились над вами.
Сколько людей было на конференции?
Задача: На конференции каждый гость пожал руку всем остальным. Было 66 рукопожатий. Сколько человек было на научной конференции?
Другая классическая программистская задача из тех, которые часто дают на первых этапах технических собеседований.
Классическое решение:
Допустим, на конференции было n человек. Первый человек пожимает руку всем остальным: n-1 раз (n-1 человек). Второй человек пожимает руку всем остальным (но не первому, так как это уже было сделано): n-2 раза. 3-й человек пожимает руку всем остальным: n-3.
Таким образом, общее количество рукопожатий будет = (n-1) + (n-2) + (n-3) + …… 0;
= (n-1) * (n-1 + 1) / 2 = (n-1) * n / 2 = 66
= n ^ 2 -n = 132
= (n-12) (n + 11) = 0;
= n = 12 ИЛИ n = -11Вариант -11 исключен, поэтому ответ: 12 человек.
Бар и 25 стульев.
Еще одна классическая и весьма остроумная задачка, на этот раз посложнее.
Задача: Есть бар с 25-ю стульями, которые расположены в линию. Посетители этого бара — антисоциальные личности, поэтому, когда они заходят в бар, то всегда стараются найти место как можно дальше от остальных. Если постоянный посетитель заходит в бар и обнаруживает, что свободного места без соседства с кем-либо нет, он разворачивается и уходит. Владелец бара, естественно, хочет видеть можно больше посетителей. Владелец может указать место, на которое нужно сесть, только первому клиенту, тогда как все остальные сами выберут себе самое дальнее место от других. Предположим, что места пронумерованы от 1 до 25. Какое место должно быть занято первым?
Решение:
Первый человек должен сесть на стул 9 или 17 (из-за симметрии, не имеет значения, какое именно из двух мест). Предположим, он выбирает место 9. Следующий человек выберет место 25, так как оно самое дальнее от места 9. Следующие два человека займут места 1 и 17. Следующие три займут 5, 13 и 21. Следующие шесть будут занимать стулья 3, 7, 11, 15, 19 и 23. Таким образом, в баре разместится максимум 13 человек, и никто не будет сидеть рядом с другим человеком. Если место, отличное от 9 или 17, будет выбрано первым, общее количество посетителей бара будет меньше 13.
Деньги в карманах и религия.
Интересно составленная задача на нахождение алгоритма.
Задача: У человека в кармане лежат деньги, общая сумма которых составляет от 90 до 95 долларов. По пути он посещает несколько храмов. Как только он входит в храм, его деньги удваиваются, и на выходе он жертвует 100 долларов в каждом храме. В результате, его карман становится пустым после посещения последнего храма. Теперь вопрос: сколько денег у него было изначально и сколько храмов он посетил?
Решение:
Начинаем отсчет с последнего храма:
После посещения последнего храма (1) у него осталось 0 денег, поэтому => (0 + 100) / 2 = 50. У него было 50 долларов перед посещением последнего храма
Перед посещением предыдущего храма (2) он имел (50 + 100) / 2 = 75.
Перед посещением предыдущего храма (3) он имел (75 + 100) / 2 = 87,5.
Перед посещением предыдущего храма (4) он имел (87,5 + 100) / 2 = 93,75.
Перед посещением предыдущего храма (5) он имеет (93,75 + 100) / 2 = 96,875 - сумма превышает начальные условия.
Ответ: у человека изначально было $93,75, и он посетил 4 храма.Случай в поле.
Ну и напоследок еще одна старая классическая, даже можно сказать баянистая, задачка на логическое мышление.
Задача: Среди пшеничного поля нашли мертвого мужчину. Он крепко сжимал в руках спичку. Отчего умер человек?
Решение:
Мужчина летел в самолете с тремя попутчиками. Мотор заглох, самолет начал падать. Мужчины обнаружили, что на четверых всего три парашюта и стали тянуть спички. Один из них вытянул короткую и вынужден был прыгать без парашюта.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ