Преподаватель: Луговой Филипп
Данный репозиторий содержит пять задач по программированию на языке Python.
Каждая задача подготовлена к реализации в виде отдельной функции. Ниже приведены условия задач.
Репозиторий нужно склонировать на свой компьютер (!!!не использовать форк!!!), написать решение в файле contest/main.py, после чего создать публичный репозиторий в своем GitHub аккаунте и в ответ на КТ прикрепить ссылку на свой репозиторий с готовым решением.
ВНИМАНИЕ:
- решение пишется в файле
contest/main.py, нельзя изменять название функций, можно менять имена параметров в функциях; - нельзя изменять файлы с тестами, в противном случае можете получить 0 баллов
- если потребуется, можно поменять версию Python
Для проверки решений можно использовать встроенный модуль pytest. Пример запуска тестов:
make tests
# или
uv run pytest -vvФункция: create_phone_number
Описание:
Напишите функцию, которая принимает массив из 10 целых чисел (от 0 до 9) и возвращает строку с этими числами в формате телефонного номера.
Формат вывода:
(XXX) XXX-XXXX (обязательно с пробелом после закрывающей скобки).
Пример:
create_phone_number([1, 2, 3, 4, 5, 6, 7, 8, 9, 0]) # Вернет "(123) 456-7890"Функция: duplicate_encode
Описание: Функция преобразует строку в новую строку, где каждый символ заменяется на:
"(" — если символ встречается в исходной строке один раз;
")" — если символ встречается более одного раза.
Регистр букв не учитывается при определении дубликатов.
Примеры:
duplicate_encode("din") # Вернет "((("
duplicate_encode("recede") # Вернет "()()()"
duplicate_encode("Success") # Вернет ")())())"
duplicate_encode("(( @") # Вернет "))(("Функция: is_valid_walk
Описание: Город имеет прямоугольную сетку улиц. Вам нужно решить, приведет ли предложенный маршрут обратно на стартовую точку ровно через 10 минут. Каждое направление Север, Юг, Запад, Восток обозначается как('n', 's', 'w', 'e') и занимает 1 минуту.
Функция получает список направлений и возвращает:
True — если прогулка займет 10 минут и вернет вас в исходную точку;
False — в противном случае.
Примечание:
Входной список всегда корректен (содержит только указанные буквы) и не пустой.
Пример:
is_valid_walk(['n','s','n','s','n','s','n','s','n','s']) # True (10 минут, возврат)
is_valid_walk(['w','e','w','e','w','e','w','e','w','e','w','e']) # False (12 минут)
is_valid_walk(['n','n','n','s','n','s','n','s','n','s']) # False (не возврат)Функция: move_zeros
Описание: Напишите алгоритм, который принимает массив и перемещает все нули в его конец, сохраняя порядок остальных элементов.
Пример:
move_zeros([1, 0, 1, 2, 0, 1, 3]) # Вернет [1, 1, 2, 1, 3, 0, 0]Функция: find_uniq
Описание: В массиве все числа равны, кроме одного. Найдите это уникальное число. Гарантируется, что в массиве минимум 3 элемента.
Примеры:
find_uniq([1, 1, 1, 2, 1, 1]) # Вернет 2
find_uniq([0, 0, 0.55, 0, 0]) # Вернет 0.55