Skip to content

Latest commit

 

History

History
125 lines (81 loc) · 5.18 KB

File metadata and controls

125 lines (81 loc) · 5.18 KB

Контрольная точка №2. Списки в Python.

Преподаватель: Луговой Филипп

Данный репозиторий содержит пять задач по программированию на языке Python.
Каждая задача подготовлена к реализации в виде отдельной функции. Ниже приведены условия задач.

Репозиторий нужно склонировать на свой компьютер (!!!не использовать форк!!!), написать решение в файле contest/main.py, после чего создать публичный репозиторий в своем GitHub аккаунте и в ответ на КТ прикрепить ссылку на свой репозиторий с готовым решением.

ВНИМАНИЕ:

  • решение пишется в файле contest/main.py, нельзя изменять название функций, можно менять имена параметров в функциях;
  • нельзя изменять файлы с тестами, в противном случае можете получить 0 баллов
  • если потребуется, можно поменять версию Python

Запуск тестов

Для проверки решений можно использовать встроенный модуль pytest. Пример запуска тестов:

make tests
# или
uv run pytest -vv

Задача 1: Форматирование номера телефона

Функция: 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"

Задача 2: Кодирование строки

Функция: duplicate_encode

Описание: Функция преобразует строку в новую строку, где каждый символ заменяется на:

"(" — если символ встречается в исходной строке один раз;

")" — если символ встречается более одного раза.

Регистр букв не учитывается при определении дубликатов.

Примеры:

duplicate_encode("din")        # Вернет "((("
duplicate_encode("recede")     # Вернет "()()()"
duplicate_encode("Success")    # Вернет ")())())"
duplicate_encode("(( @")       # Вернет "))(("

Задача 3: Десятиминутная прогулка

Функция: 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 (не возврат)

Задача 4: Перемещение нулей в конец

Функция: move_zeros

Описание: Напишите алгоритм, который принимает массив и перемещает все нули в его конец, сохраняя порядок остальных элементов.

Пример:

move_zeros([1, 0, 1, 2, 0, 1, 3])  # Вернет [1, 1, 2, 1, 3, 0, 0]

Задача 5: Поиск уникального числа

Функция: find_uniq

Описание: В массиве все числа равны, кроме одного. Найдите это уникальное число. Гарантируется, что в массиве минимум 3 элемента.

Примеры:

find_uniq([1, 1, 1, 2, 1, 1])     # Вернет 2
find_uniq([0, 0, 0.55, 0, 0])     # Вернет 0.55