Задачи по программированию c проверкой
Cложность
Легко Средне Тяжело
Теги
Можно выбрать несколько тегов (зажмите клавишу ctrl).
Понравился CodeChick? Друзьям тоже понравится!
Поделиться в FacebookПоделиться в VK«Привет, Мир!» Как работает CodeChick
Это вводное задание, благодаря которому вы поймете, как работает CodeChick.
Легко Основы языкаСтроки
Вернуть сумму двух чисел
Создайте функцию, которая принимает два числа в качестве параметров и возвращает их сумму.
Легко АлгебраМатематикаОсновы языкаЧисла
Вернуть число, увеличенное на единицу
Напишите функцию, которая принимает число в качестве аргумента и возвращает это число, увеличенное на единицу.
Легко МатематикаЧисла
Переведите минуты в секунды
Напишите функцию, которая принимает целочисленные значения минут и конвертирует это значение в секунды.
Легко МатематикаОсновы языкаЧисла
Площадь треугольника
Напишите функцию, которая принимает основание и высоту треугольника и возвращает площадь треугольника.
Легко ГеометрияМатематикаЧисла
Переведите часы в секунды
Напишите функцию, которая переведет часы в секунды.
Легко МатематикаОсновы языкаЧисла
Переведите возраст в дни
Напишите функцию, которая принимает возраст (количество лет) и преобразует это значение в количество дней.
Легко МатематикаЧисла
Остаток от деления двух чисел
В языках программирования существует оператор, позволяющий вычислить остаток от деления. В качестве параметров передаются два числа, при делении первого числа на второе получается остаток, который может быть равен нулю. Необходимо вернуть остаток.
Легко МатематикаЧисла
Сконвертируйте строку в целое число
Напишите функция, которая преобразует целочисленную строку в целое число.
Легко Основы языкаСтрокиЧисла
Калькулятор мощности цепи
Создайте функцию, которая принимает напряжение и ток и возвращает рассчитанную мощность.
Легко МатематикаФизикаЧисла
Найти периметр прямоугольника
Напишите функцию, которая позволит найти периметр прямоугольника, зная его ширину и длину.
Легко ГеометрияМатематикаОсновы языкаЧисла
Вернуть первый элемент массива
Напишите функцию, которая принимает массив и возвращает первый элемент этого массива.
Легко МассивыОсновы языка
Сколько ног на ферме
Для решения этой задачи необходимо написать функцию, которая посчитает количество ног у всех животных на ферме. На ферме живут курочки, коровки, и свинки. Зная количество животных каждого вида, посчитайте, сколько всего ног у всех животных на ферме.
Легко АлгоритмыМатематика
Переведите часы и минуты в секунды
Напишите функцию, которая принимает целочисленные значения часов и минут, конвертирует эти значения в секунды, а затем суммирует их и возвращает в качестве результата.
Легко МатематикаОсновы языка
Футбольные очки
Напишите функцию, которая принимает количество побед, ничейных игр и поражений и возвращает количество очков, которая набрала команда.
Легко АлгебраЧисла
Равны ли числа?
Создайте функцию, которая в качестве параметров принимает два числа и возвращает True, если эти числа равны, и False, если не равны.
Легко ВалидацияОсновы языкаУсловияЧисла
Найдите самое маленькое числа в списке
Напишите функцию, которая принимает на вход список чисел, и возвращает самое маленькое число из этого списка.
Легко МассивыСортировкаЦиклыЧисла
Меньше 100?
Функция получает на вход два числа. Она должна вернуть True, если сумма этих чисел меньше 100 и False в противном случае.
Легко ВалидацияМатематикаОсновы языка
Максимальная разность
Дан массив с целыми числами. Функция должна вернуть разность самого большого и самого маленького числа.
Легко МассивыМатематикаЧисла
Найти сумму всех элементов списка
Напишите функцию, которая принимает список на вход, и возвращает сумму всех элементов этого списка.
Легко МассивыМатематикаОсновы языкаЧисла
Где практиковаться в программировании: 20 ресурсов
Содержание
- Проект Эйлера
- w3resource
- Codewars
- Сборник задач CppStudio
- CheckIO
- LeetCode
- HackerRank
- Codecombat
- CodeAbbey
- Ruby Quiz
- Rosalind
- CodingBat
- UVa Online Judge
- Школа программиста
- Codechef
- Codingame
- Exercism
- InterviewBit
- SQL EX
- Питонтьютор
После освоения основ любого языка программирования необходимо как можно больше практиковаться. Это поможет закрепить полученные знания и запомнить конструкции языка. Один из способов — решение задач. Такой подход заставляет использовать все возможности изученной технологии и думать над оптимальным алгоритмом решения.
Проект Эйлера — сайт с математическими задачами по программированию, основанный в 2001 году. Задачи разделяются по уровню сложности, всего их более 800 штук. Для решения начинающим разработчикам необходимо вспомнить школьную математику, а в некоторых случаях — даже университетскую программу. Решать задачи можно на любом удобном языке программирования.
W3resource предлагает пользователям подробные обучающие материалы и задачи по технологиям веб-разработки. В сервисе есть встроенный редактор кода, чтобы решать задачи в браузере. Можно отточить знания JavaScript, Python, HTML, CSS, SQL, PHP и Java.
Профессия Fullstack-разработчик на Python Получите навыки программирования, освойте backend на Python и frontend на JavaScript, чтобы стать востребованным специалистом в IT.Подробнее
Сервис с задачами на 45+ языках программирования. Пользователям доступны практические задания на закрепление основ, паттернов и алгоритмов. В Codewars есть внутренняя система рангов, которая помогает выбирать задачи подходящего уровня. Ранг повышается при каждом правильном решении. Доступен как общий уровень пользователя, так и уровень владения каждым языком программирования.
Онлайн-сборник задач на языке C++. На сайте доступны задачи 5 уровней сложности на знание основ программирования и умение пользоваться алгоритмами. Условия задач не подстроены под особенности С++, поэтому решение можно реализовать на любом удобном языке.
Браузерная игра, мотивирующая решать задачи с помощью инструментов геймификации. Проходить испытания можно с помощью Python или TypeScript. Сложность возрастает по мере приближения к последним уровням, а если пройти регистрацию, то можно сохранить прогресс и вернуться к решению задач позже. Спонсор и партнер проекта — компания JetBrains.
Сервис с алгоритмическими задачами, которые помогут подготовиться к собеседованию.
Задачи охватывают все аспекты разработки, включая базы данных, алгоритмы, теорию графов, структуры данных и динамическое программирование. Кроме задач доступны обучающие планы, чтобы освоить тему с нуля.HackerRank проводит для разработчиков онлайн-соревнования, которые спонсируют мировые IT-компании. Если хорошо зарекомендовать себя и показать свои навыки, то можно получить приглашение на стажировку. Также призовые места в соревнованиях HackerRank могут стать хорошим достижением для резюме.
Браузерная стратегия, для игры в которую понадобятся навыки программирования. На выбор доступны Python и JavaScript. Сервис создан для детей, но подойдет и начинающим разработчикам старшего возраста. Также есть режим для преподавателей, позволяющий организовать совместную работу во время занятий.
Сервис с более чем 300 задачами. Часть из них доступна на русском языке, а за решение 125 задач можно получить сертификат. Также на сайте есть форум с активными участниками сообщества, которые могут помочь с решением.
Сборник головоломок на языке Ruby. Решения задач описаны с учетом особенностей Ruby, но условия позволяют использовать любой язык программирования.
В Rosalind собраны задачи для разработчиков в области биоинформатики. Сервис подойдет далеко не всем, так как охватывает узкую область знаний. Разработчики Rosalind рекомендуют использовать головоломки из списка для закрепления изученных ранее тем.
Сборник задач на Java и Python. С помощью сервиса пользователи могут освоить основы и особенности этих языков программирования. Доступны как легкие задачи на знание синтаксиса, так и более сложные, заставляющие разобраться со структурами данных и логикой.
Профессия Java-разработчик Через 7 месяцев обучения на курсе вы станете junior-разработчиком: будете писать код на Java, использовать принципы объектно-ориентированного программирования, освоите базы данных и SQL-запросы, изучите с нуля алгоритмы и структуры данных, поработаете с Git.Подробнее
Сборник сложных задач олимпиадного программирования, требующих глубоких знаний не только синтаксиса, но и алгоритмов. Решение необходимо оптимизировать по скорости выполнения кода и потребляемой памяти.
Сервис с задачами для школьных олимпиад. Но его часто используют для преподавания на младших курсах университетов. Большой сборник включает головоломки разного уровня, требующие глубоких знаний информатики. На сайте есть автоматическая проверка решений и форум поддержки.
Платформа для соревнований программистов, которые проводят несколько раз в месяц. К ним можно готовиться с помощью коллекции задач. В некоторых соревнованиях можно участвовать только командой. Codechef регулярно разыгрывает денежные призы, а на сайте есть внутренний рейтинг пользователей.
Браузерный квест, который можно пройти с помощью решения задач. Управлять игровым процессом можно с помощью написания кода, а на выбор доступно более 20 языков программирования. Также на сайте есть геймифицированный сервис для проверки навыков во время собеседований.
Exercism предоставляет пользователям доступ к большому количеству головоломок на разных языках программирования. В списке есть как популярные, так и редкие языки. Все задачи построены на реальных ситуациях из жизни. Так новички могут лучше понять условия. Кроме задач на сайте есть образовательные программы для самостоятельного обучения.
Сервис для подготовки к собеседованиям в мировые IT-компании. На сайте есть сложные задачи на знание алгоритмов и особенностей синтаксиса, теоретические вопросы и советы для подготовки. Сервис содержит более 800 задач по различным направлениям разработки.
Русскоязычный сборник задач для изучения SQL и баз данных. На сайте есть внутренний рейтинг пользователей, а после прохождения экзамена можно получить сертификат, подтверждающий уровень знаний.
Сайт для практики языка программирования Python на русском языке. В сервис встроен редактор кода, поэтому можно решать задачи в браузере. Для каждой задачи есть альтернативные способы решения, которые помогут найти наиболее лаконичный способ.
Профессия Python-разработчик Освойте Python с нуля и начните новую карьеру с позиции junior-разработчика уже через 3 месяца обучения. Подготовим к трудоустройству: дадим много практики, реальные проекты для портфолио, поможем с резюме и познакомим с будущими работодателями.Подробнее
250+ примеров программирования на C, упражнения с решениями
Списки, строки
Если в выбранном вами языке нет встроенного списка и/или строкового типа (например, вы используете C), эти упражнения также должны быть решены для массивов. Однако некоторые решения для списка на основе массива (например, vector
в C++) и списка на основе указателя (например, list
в C++) сильно различаются, по крайней мере, если вы заботитесь об эффективности своего кода. Поэтому вы можете либо найти библиотеку, либо выяснить, как реализовать собственный связанный список, если в вашем языке его нет.
- Напишите функцию, которая возвращает самый большой элемент в списке.
- Напишите функцию, которая переворачивает список, желательно на месте.
- Напишите функцию, которая проверяет, встречается ли элемент в списке.
- Напишите функцию, которая возвращает элементы в нечетных позициях в списке.
- Напишите функцию, которая вычисляет промежуточную сумму списка.
- Напишите функцию, которая проверяет, является ли строка палиндромом.
- Напишите три функции, вычисляющие сумму чисел в списке: используя
for
— цикл,while
— цикл и рекурсия. (При наличии этих конструкций на выбранном вами языке.) - Напишите функцию
on_all
, которая применяет функцию к каждому элементу списка. Используйте его, чтобы напечатать первые двадцать идеальных квадратов. Совершенные квадраты можно найти, умножив каждое натуральное число на себя. Первые несколько полных квадратов:1*1= 1
,2*2=4
,3*3=9
,4*4=16
. Двенадцать, например, не является идеальным квадратом, потому что натурального числа 9 не существует.0430 м , так чтом*м=12
. (Этот вопрос сложен, если ваш язык программирования затрудняет передачу функций в качестве аргументов.) - Напишите функцию, которая объединяет два списка.
[а,б,в]
,[1,2,3]
→[а,б,в,1,2,3]
- Напишите функцию, которая объединяет два списка, поочередно беря элементы, например.
[а,б,в]
,[1,2,3]
→[а,1,б,2,в,3]
. - Напишите функцию, которая объединяет два отсортированных списка в новый отсортированный список.
[1,4,6]
,[2,3,5]
→[1,2,3,4,5,6]
. Вы можете сделать это быстрее, чем объединить их с последующей сортировкой. - Напишите функцию, которая вращает список на
тыс.
элементов. Например,[1,2,3,4,5,6]
, повернутый на два, становится[3,4,5,6,1,2]
. Попробуйте решить эту проблему, не создавая копию списка. Сколько операций подкачки или перемещения вам нужно? - Напишите функцию, которая вычисляет список первых 100 чисел Фибоначчи. Первые два числа Фибоначчи — 1 и 1.
n+1
-е число Фибоначчи можно вычислить, сложивn
-е иn-1
-е числа Фибоначчи. Таким образом, первые несколько равны 1, 1, 1+1=2, 1+2=3, 2+3=5, 3+5=8. - Напишите функцию, которая принимает число и возвращает список его цифр. Таким образом, для
2342
он должен вернуть[2,3,4,2]
. - Напишите функции, которые складывают, вычитают и умножают два числа в их представлении в виде списка цифр (и возвращают новый список цифр). Если вы амбициозны, вы можете реализовать умножение Карацубы. Пробуйте разные базы. Что является лучшей базой, если вы заботитесь о скорости? Если вы не смогли полностью решить приведенное выше упражнение с простыми числами из-за отсутствия больших чисел в вашем языке, теперь вы можете использовать для этой задачи свою собственную библиотеку.
- Напишите функцию, которая берет список чисел, начальное основание
b1
и целевое основаниеb2
, интерпретирует список как число по основаниюb1
и преобразует его в число по основаниюb2
(в в виде списка цифр). Так, например,[2,1,0]
по основанию 3 преобразуется в основание 10 как[2,1]
. - Реализовать следующие алгоритмы сортировки: сортировка выбором, сортировка вставками, сортировка слиянием, быстрая сортировка, сортировка марионеток. Проверьте описание в Википедии.
- Реализовать бинарный поиск.
Напишите функцию, которая берет список строк и печатает их по одной на строку в прямоугольной рамке. Например, список
["Hello", "World", "in", "a", "frame"]
печатается как:********** * Привет * * Мир * * в * * а * * рамка * **********
Напишите функцию, которая переводит текст на поросячью латынь и обратно. Английский переводится на свиную латынь путем переноса первой буквы каждого слова в конец слова и добавления «ау». «Быстрая коричневая лисица» становится «Hetay uickqay rownbay oxfay».
Промежуточный
- Напишите программу, которая выводит все возможности поставить
+
или-
или ничего между числами 1,2,…,9 (в этом порядке) так, чтобы результатом было 100. Например, 1 + 2 + 3 — 4 + 5 + 6 + 78 + 9 = 100. - Напишите программу, которая принимает в качестве входных данных продолжительность года (в дробных частях) для воображаемой планеты и выводит правило високосного года, которое минимизирует разницу с солнечным годом планеты.
- Реализовать структуру данных для графиков, допускающую модификацию (вставку, удаление). Должна быть возможность хранить значения на ребрах и узлах. Для этого может быть проще всего использовать словарь (node, edgelist).
- Напишите функцию, которая генерирует представление графика в виде точки.
- Напишите программу, которая автоматически генерирует для вас эссе.
- Используя образец текста, создайте ориентированный (мульти-)граф, в котором слова текста являются узлами, а между 9 точками есть направленное ребро.0430 u и
v
, если заu
следуетv
в вашем образце текста. Несколько вхождений приводят к множеству ребер. - Выполните случайный обход этого графа: начиная с произвольного узла, выберите случайного преемника. Если преемник не существует, выберите другой случайный узел.
- Используя образец текста, создайте ориентированный (мульти-)граф, в котором слова текста являются узлами, а между 9 точками есть направленное ребро.0430 u и
- Напишите программу, которая автоматически преобразует английский текст в азбуку Морзе и наоборот.
- Напишите программу, которая находит самую длинную палиндромную подстроку заданной строки. Постарайтесь быть максимально эффективным!
- Придумайте хороший интерфейс для списка. Какие операции вам обычно нужны? Возможно, вы захотите изучить интерфейс списка на своем языке и на некоторых других популярных языках для вдохновения.
- Реализуйте свой интерфейс списка, используя фиксированный кусок памяти, скажем, массив размером 100. Если пользователь хочет добавить в ваш список больше материала, чем помещается в вашей памяти, вы должны создать какую-то ошибку, например, вы можете выдать исключение если ваш язык поддерживает это.
- Улучшите свою предыдущую реализацию, чтобы в вашем списке можно было хранить произвольное количество элементов. Например, вы можете выделять все большие и большие блоки памяти по мере роста вашего списка, копировать старые элементы и освобождать старое хранилище. Вероятно, вам также следует освободить эту память в конце концов, если ваш список сократится настолько, что он больше не понадобится. Подумайте, насколько больше должен быть новый кусок памяти, чтобы ваша производительность не упала из-за выделений. Например, увеличение размера на 1 элемент — плохая идея.
- Если вы правильно выбрали прирост в предыдущей задаче, вы, как правило, не будете распределять слишком часто. Однако добавление к большому списку иногда требует значительного времени. Это может быть проблематично в некоторых приложениях. Вместо этого попробуйте выделить новые участки памяти для новых элементов. Поэтому, когда ваш список заполнен и пользователь хочет что-то добавить, выделите новый фрагмент из 100 элементов вместо того, чтобы копировать все элементы в новый большой фрагмент. Подумайте, где вести учет того, какие куски у вас есть. Различные стратегии ведения бухгалтерского учета могут существенно изменить характеристики вашего списка.
- Реализовать двоичную кучу. Один раз с использованием списка в качестве базовой структуры данных и один раз путем реализации двоичного дерева, связанного с указателем. Используйте его для реализации кучевой сортировки.
- Реализовать несбалансированное бинарное дерево поиска.
- Реализуйте сбалансированное двоичное дерево поиска по вашему выбору. Мне больше всего нравятся (a,b)-деревья.
- Сравните производительность вставки, удаления и поиска в несбалансированном дереве поиска со сбалансированным деревом поиска и отсортированным списком. Подумайте о хороших входных последовательностях. Если вы реализовали (a,b)-дерево, подумайте о хороших значениях a и b.
Расширенный
- Имея две строки, напишите программу, которая эффективно находит самую длинную общую подпоследовательность.
- Для заданного массива чисел напишите программу, эффективно отвечающую на запросы вида: «Какое ближайшее большее значение числа на позиции
и
?», где расстояние — это разница индексов массива. Например, в массиве[1,4,3,2,5,7]
ближайшее большее значение для 4 равно 5. После предварительной обработки с линейным временем вы сможете отвечать на запросы за постоянное время. - Имея две строки, напишите программу, которая выводит кратчайшую последовательность вставок и удалений символов, превращающих одну строку в другую.
- Напишите функцию, которая умножает две матрицы. Сделайте его максимально эффективным и сравните производительность с безупречной библиотекой линейной алгебры для вашего языка. Возможно, вы захотите прочитать об алгоритме Штрассена и влиянии кешей ЦП. Попробуйте разные макеты матриц и посмотрите, что получится.
- Реализовать дерево ван Эмде Боаса. Сравните его с вашими предыдущими реализациями дерева поиска.
- Для заданного набора d-мерных прямоугольных ящиков напишите программу, которая вычисляет объем их объединения. Начните с 2D и двигайтесь дальше.
ГИП
- Напишите программу, отображающую прыгающий мяч.
- Напиши игру памяти.
- Написать клон тетриса
Открытый
- Напишите программу, которая воспроизводит Виселицу как можно лучше. Например, вы можете использовать такой большой словарь и выбрать букву, которая исключает большинство слов, которые все еще являются возможными решениями. Постарайтесь сделать программу максимально эффективной, т.е. не просматривайте весь словарь на каждом шагу.
- Напишите программу, которая играет в игру «Камень, ножницы, бумага» лучше, чем случайно, против человека.