Сайти із завданнями для програмістів
Практично всі ресурси в добірці - англомовні, так що у вас буде можливість не тільки потренуватися у вирішенні кодерських проблем та головоломок, але й отримати додаткову практику застосування англійської мови у програмуванні.-
Один із найпопулярніших англомовних ресурсів із завданнями для програмістів. На ньому можна знайти більше 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 рази. Третя людина знизує руку всім іншим: 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 храми. -
Випадок у полі.
Та й наостанок ще одна стара класична, навіть можна сказати баяниста, завдання на логічне мислення.
Завдання: Серед пшеничного поля знайшли мертвого чоловіка. Він міцно стискав у руках сірник. Чому померла людина?
Рішення:
Чоловік летів у літаку з трьома попутниками. Мотор затих, літак почав падати. Чоловіки виявабо, що на чотирьох всього три парашути і почали тягнути сірники. Один із них витягнув коротку і змушений був стрибати без парашута.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ