Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Типізуйте власні функції, для генераторів указуйте тип елемента Iterator[T]. Умови визначають навчальні дані; доступ до зовнішніх сервісів не потрібний. Нескінченне джерело обов’язково обмежте на боці споживача. У високому рівні використайте argparse зі зразка роботи 1: скалярні дані як іменовані аргументи, повторювані записи --item із полями через двокрапку. Документуйте порядок полів у --help; без аргументів доступне введення з клавіатури. Помилка має йти в stderr із кодом 2, успіх і довідка – з кодом 0. Порівнюйте потоковий результат із простою реалізацією на невеликому наборі.
Варіанти
Варіант 1. Біржові котирування
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає до 30 навчальних цін 1..10000; генератором видати сусідні зміни через pairwise. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає до 30 навчальних цін 1..10000; обчислити ковзне середнє ширини 3; вивести ціну, зміну й середнє. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає до 30 навчальних цін 1..10000; обчислити ковзне середнє ширини 3; вивести ціну, зміну й середнє; додати власний декоратор таймера зі збереженням метаданих, порівняти результат із незалежним простим обходом. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Варіант 2. Телеметрія датчиків
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає початкове ціле 0..100 і число вимірів 1..50; нескінченним генератором видавати (start+7*i)%101, обмеживши islice. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає початкове ціле 0..100 і число вимірів 1..50; відфільтрувати значення понад 80 та вивести пакети по 5. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає початкове ціле 0..100 і число вимірів 1..50; відфільтрувати значення понад 80 та вивести пакети по 5; додати власний декоратор лічильника спроб зі збереженням метаданих, порівняти результат із незалежним простим обходом. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Варіант 3. Марафон
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає до 20 записів ім’я:вік:час, вік 18..80, час 120..600 хв; генератором видати час у секундах. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає до 20 записів ім’я:вік:час, вік 18..80, час 120..600 хв; згрупувати за віком до 40 і від 40, відсортувавши за ключем; вивести переможця кожної групи. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає до 20 записів ім’я:вік:час, вік 18..80, час 120..600 хв; згрупувати за віком до 40 і від 40, відсортувавши за ключем; вивести переможця кожної групи; додати власний декоратор журналу зі збереженням метаданих, порівняти результат із незалежним простим обходом. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Варіант 4. Світлофор
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає число фаз 1..20; cycle повторювати червоний, зелений, жовтий і обмежити потік. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає число фаз 1..20; зіставити тривалості 30, 25, 5 с і через accumulate вивести час початку кожної фази. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає число фаз 1..20; зіставити тривалості 30, 25, 5 с і через accumulate вивести час початку кожної фази; додати власний декоратор валідації кількості зі збереженням метаданих, порівняти результат із незалежним простим обходом. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Варіант 5. Лотерея
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає алфавіт різних чисел 1..20 довжини 2..8 і k від 1 до довжини; генератором видати combinations довжини k. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає алфавіт різних чисел 1..20 довжини 2..8 і k від 1 до довжини; порахувати комбінації та порівняти з math.comb; вивести всі й кількість. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає алфавіт різних чисел 1..20 довжини 2..8 і k від 1 до довжини; порахувати комбінації та порівняти з math.comb; вивести всі й кількість; додати власний декоратор кешування функції кількості зі збереженням метаданих, порівняти результат із незалежним простим обходом. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Варіант 6. Решето простих
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає кількість простих чисел 1..30; нескінченним генератором видати прості числа, споживаючи islice. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає кількість простих чисел 1..30; розбити прості по 5 через batched та вивести суму й найбільший проміжок pairwise. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає кількість простих чисел 1..30; розбити прості по 5 через batched та вивести суму й найбільший проміжок pairwise; додати власний декоратор лічильника перевірок зі збереженням метаданих, порівняти результат із незалежним простим обходом. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Варіант 7. Графік чергувань
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає 2..8 різних імен і число днів 1..14; cycle розподілити по одному черговому на день. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає 2..8 різних імен і число днів 1..14; product днів і змін ранок, вечір поєднати з cycle імен; вивести графік та навантаження. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає 2..8 різних імен і число днів 1..14; product днів і змін ранок, вечір поєднати з cycle імен; вивести графік та навантаження; додати власний декоратор журналу зі збереженням метаданих, порівняти результат із незалежним простим обходом. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Варіант 8. Навчальні PIN
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає алфавіт 2..4 різних цифр і довжину 1..4; product з repeat згенерувати локальні навчальні коди. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає алфавіт 2..4 різних цифр і довжину 1..4; відфільтрувати коди без однакових сусідів, вивести перші 20 і загальну кількість. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає алфавіт 2..4 різних цифр і довжину 1..4; відфільтрувати коди без однакових сусідів, вивести перші 20 і загальну кількість; додати власний декоратор обмеження числа викликів зі збереженням метаданих, порівняти результат із незалежним простим обходом; жодних зовнішніх запитів. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Варіант 9. Навчальний сигнал
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає 10..50 скінченних чисел від -10 до 10; генератором видати різниці сусідніх значень. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає 10..50 скінченних чисел від -10 до 10; знайти строгі локальні максимуми за трійками, вивести індекси й амплітуди; це лише сигнал без медичних висновків. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає 10..50 скінченних чисел від -10 до 10; знайти строгі локальні максимуми за трійками, вивести індекси й амплітуди; це лише сигнал без медичних висновків; додати власний декоратор таймера зі збереженням метаданих, порівняти результат із незалежним простим обходом. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Варіант 10. Турнірні пари
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає 2..10 різних назв команд; combinations сформувати всі пари по 2. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає 2..10 різних назв команд; вивести пари і число ігор кожної команди, перевіривши n*(n-1)/2. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає 2..10 різних назв команд; вивести пари і число ігор кожної команди, перевіривши n*(n-1)/2; додати власний декоратор перевірки унікальності команд зі збереженням метаданих, порівняти результат із незалежним простим обходом. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Варіант 11. Навчальні курси валют
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає до 20 запитів до фіксованого словника USD=40, EUR=44; генератором видати пари валюта, навчальний курс. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає до 20 запитів до фіксованого словника USD=40, EUR=44; кешувати функцію курсу й вивести hits/misses після повторів; невідомі коди відхилити. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає до 20 запитів до фіксованого словника USD=40, EUR=44; кешувати функцію курсу й вивести hits/misses після повторів; невідомі коди відхилити; додати власний декоратор кешування з TTL 5 с за ін’єктованим навчальним годинником зі збереженням метаданих, порівняти результат із незалежним простим обходом. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Варіант 12. Банківські транзакції
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає початковий баланс 0..10000 та до 30 цілих змін від -1000 до 1000; accumulate видати послідовність балансів. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає початковий баланс 0..10000 та до 30 цілих змін від -1000 до 1000; потоково позначити від’ємні баланси, вивести всі кроки й підсумок без прихованого вилучення списань. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає початковий баланс 0..10000 та до 30 цілих змін від -1000 до 1000; потоково позначити від’ємні баланси, вивести всі кроки й підсумок без прихованого вилучення списань; додати власний декоратор журналу зі збереженням метаданих, порівняти результат із незалежним простим обходом. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Варіант 13. Меню в бюджеті
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає до 8 назв страв із цілими цінами 1..500 та бюджет 1..1000; combinations утворити набори по 2. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає до 8 назв страв із цілими цінами 1..500 та бюджет 1..1000; відфільтрувати допустимі набори, sorted із lambda упорядкувати за сумою та назвами. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає до 8 назв страв із цілими цінами 1..500 та бюджет 1..1000; відфільтрувати допустимі набори, sorted із lambda упорядкувати за сумою та назвами; додати власний декоратор валідації бюджету зі збереженням метаданих, порівняти результат із незалежним простим обходом. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Варіант 14. Сонячна електростанція
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає до 48 записів день:година:кВт, день 1..2, година 0..23, потужність 0..20; генератором видати енергію за годинний інтервал. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає до 48 записів день:година:кВт, день 1..2, година 0..23, потужність 0..20; відсортувати за днем, groupby підсумувати добову енергію й показати максимум. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає до 48 записів день:година:кВт, день 1..2, година 0..23, потужність 0..20; відсортувати за днем, groupby підсумувати добову енергію й показати максимум; додати власний декоратор лічильника обчислень зі збереженням метаданих, порівняти результат із незалежним простим обходом. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Варіант 15. ASCII-графіка
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає ширину 1..30, висоту 1..15 та символ; генератором видати рядки заповненого прямокутника. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає ширину 1..30, висоту 1..15 та символ; map перетворити рядки на верхній регістр і додати рамку; вивести зображення й розміри. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає ширину 1..30, висоту 1..15 та символ; map перетворити рядки на верхній регістр і додати рамку; вивести зображення й розміри; додати власний декоратор рамки навколо функції генерації рядків зі збереженням метаданих, порівняти результат із незалежним простим обходом. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Варіант 16. Трафік сайту
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає до 30 записів користувач:хвилина, хвилини 0..1440; генератором видати записи у впорядкованому часі. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає до 30 записів користувач:хвилина, хвилини 0..1440; сортувати за користувачем і часом, groupby виділити користувачів, розрив понад 30 хв починає сесію; вивести число сесій. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає до 30 записів користувач:хвилина, хвилини 0..1440; сортувати за користувачем і часом, groupby виділити користувачів, розрив понад 30 хв починає сесію; вивести число сесій; додати власний декоратор таймера зі збереженням метаданих, порівняти результат із незалежним простим обходом. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Варіант 17. Ігровий рейтинг
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає до 20 записів ім’я:бали:перемоги, бали 0..1000, перемоги 0..100; генератором видати імена гравців із балом від 500. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає до 20 записів ім’я:бали:перемоги, бали 0..1000, перемоги 0..100; sorted за спаданням балів, перемог і за ім’ям вивести повний рейтинг. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає до 20 записів ім’я:бали:перемоги, бали 0..1000, перемоги 0..100; sorted за спаданням балів, перемог і за ім’ям вивести повний рейтинг; додати власний декоратор перевірки діапазонів зі збереженням метаданих, порівняти результат із незалежним простим обходом. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Варіант 18. Числові послідовності
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає n від 1 до 15; генератором видати арифметичну послідовність 2+3*i. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає n від 1 до 15; chain поєднати n арифметичних, n геометричних 2**i і n чисел Фібоначчі; вивести блоки й суму. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає n від 1 до 15; chain поєднати n арифметичних, n геометричних 2**i і n чисел Фібоначчі; вивести блоки й суму; додати власний декоратор журналу зі збереженням метаданих, порівняти результат із незалежним простим обходом. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Варіант 19. Парковка ТЦ
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає місткість 1..100 та до 30 подій вхід або вихід; генератором видати зміну зайнятості +1 або -1. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає місткість 1..100 та до 30 подій вхід або вихід; послідовно застосувати події, не дозволяючи від’ємну зайнятість чи перевищення місткості; вивести стан і відхилені події. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає місткість 1..100 та до 30 подій вхід або вихід; послідовно застосувати події, не дозволяючи від’ємну зайнятість чи перевищення місткості; вивести стан і відхилені події; додати власний декоратор журналу відмов зі збереженням метаданих, порівняти результат із незалежним простим обходом. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Варіант 20. Пакування замовлень
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає 1..30 цілих номерів замовлень і місткість пакета 1..10; batched розбити замовлення на пакети. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає 1..30 цілих номерів замовлень і місткість пакета 1..10; вивести номери пакетів, кількості й короткий хвіст; перевірити збереження порядку. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає 1..30 цілих номерів замовлень і місткість пакета 1..10; вивести номери пакетів, кількості й короткий хвіст; перевірити збереження порядку; додати власний декоратор повторів лише для TimeoutError для контрольованої локальної імітації зі збереженням метаданих, порівняти результат із незалежним простим обходом. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Варіант 21. Словесні ігри
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає 3..6 різних латинських літер та до 20 слів; permutations видати перестановки літер. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає 3..6 різних латинських літер та до 20 слів; відфільтрувати перестановки, наявні у введеному словнику, вивести відсортовані збіги й кількість. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає 3..6 різних латинських літер та до 20 слів; відфільтрувати перестановки, наявні у введеному словнику, вивести відсортовані збіги й кількість; додати власний декоратор лічильника перевірок зі збереженням метаданих, порівняти результат із незалежним простим обходом. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Варіант 22. Температури міст
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає до 20 записів місто:температура від -40 до 50; виразом-генератором видати температури в кельвінах. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає до 20 записів місто:температура від -40 до 50; groupby після сортування за містом знайти мінімум, максимум, середнє; вивести таблицю. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає до 20 записів місто:температура від -40 до 50; groupby після сортування за містом знайти мінімум, максимум, середнє; вивести таблицю; додати власний декоратор таймера зі збереженням метаданих, порівняти результат із незалежним простим обходом. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Варіант 23. Розклад автобусів
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає початок 0..1200 хв, інтервал 1..120, число рейсів 1..20; count та islice утворити часи відправлень. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає початок 0..1200 хв, інтервал 1..120, число рейсів 1..20; для введеного часу 0..1440 знайти наступний рейс або None; вивести таблицю і результат. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає початок 0..1200 хв, інтервал 1..120, число рейсів 1..20; для введеного часу 0..1440 знайти наступний рейс або None; вивести таблицю і результат; додати власний декоратор кешування скінченного розкладу як tuple зі збереженням метаданих, порівняти результат із незалежним простим обходом. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Варіант 24. Басейн
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає початкову дату ISO, крок 1..7 днів та кількість 1..20; генератором видати дати відвідувань. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає початкову дату ISO, крок 1..7 днів та кількість 1..20; відкинути введені дати пропусків, вивести план і фактичні дати та кількість. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає початкову дату ISO, крок 1..7 днів та кількість 1..20; відкинути введені дати пропусків, вивести план і фактичні дати та кількість; додати власний декоратор журналу зі збереженням метаданих, порівняти результат із незалежним простим обходом. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Варіант 25. Хід шахового коня
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає стовпець і рядок 1..8; генератором видати допустимі ходи коня зі зміщеннями 1, 2. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає стовпець і рядок 1..8; для кожного першого ходу згенерувати другі, вивести унікальні досяжні позиції й кількість. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає стовпець і рядок 1..8; для кожного першого ходу згенерувати другі, вивести унікальні досяжні позиції й кількість; додати власний декоратор лічильника генерацій зі збереженням метаданих, порівняти результат із незалежним простим обходом. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Варіант 26. Музичні акорди
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає 3..7 різних номерів нот 0..11; combinations видати тризвуки по 3 ноти. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає 3..7 різних номерів нот 0..11; lambda відфільтрувати тризвуки, де різниці сусідів 3 або 4, вивести варіанти й кількість. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає 3..7 різних номерів нот 0..11; lambda відфільтрувати тризвуки, де різниці сусідів 3 або 4, вивести варіанти й кількість; додати власний декоратор валідації нот зі збереженням метаданих, порівняти результат із незалежним простим обходом. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Варіант 27. Накопичення на мету
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає початкову суму 0..10000, внесок 1..1000, мету 1..20000; генератором видати місячні баланси без відсотків. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає початкову суму 0..10000, внесок 1..1000, мету 1..20000; takewhile отримати баланси нижче мети й окремо показати перший досягнутий, обмеживши горизонт 240 місяцями. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає початкову суму 0..10000, внесок 1..1000, мету 1..20000; takewhile отримати баланси нижче мети й окремо показати перший досягнутий, обмеживши горизонт 240 місяцями; додати власний декоратор лічильника викликів зі збереженням метаданих, порівняти результат із незалежним простим обходом. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Варіант 28. Нормалізація оцінок
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає до 30 записів група:оцінка 0..100; генератором перетворити оцінки на частки 0..1. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає до 30 записів група:оцінка 0..100; після сортування groupby вивести середні частки за групами та число записів. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає до 30 записів група:оцінка 0..100; після сортування groupby вивести середні частки за групами та число записів; додати власний декоратор таймера зі збереженням метаданих, порівняти результат із незалежним простим обходом. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Варіант 29. Черга друку
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає до 20 записів назва:сторінки:пріоритет, сторінки 1..100, пріоритет 1..3; генератором видати назви завдань. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає до 20 записів назва:сторінки:пріоритет, сторінки 1..100, пріоритет 1..3; стабільно впорядкувати за пріоритетом 1 перший, accumulate сторінок дати накопичений обсяг; вивести чергу. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає до 20 записів назва:сторінки:пріоритет, сторінки 1..100, пріоритет 1..3; стабільно впорядкувати за пріоритетом 1 перший, accumulate сторінок дати накопичений обсяг; вивести чергу; додати власний декоратор журналу зі збереженням метаданих, порівняти результат із незалежним простим обходом. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Варіант 30. Точки на сітці
1. Початковий рівень. Створити консольну програму Python 3.14, яка приймає цілі межі сітки від -5 до 5; product згенерувати всі цілочисельні точки прямокутника. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
2. Базовий рівень. Створити консольну програму Python 3.14, яка приймає цілі межі сітки від -5 до 5; combinations знайти найближчу пару сітки за квадратом відстані, рівність розв’язати лексикографічно; вивести пару й відстань. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість.
3. Високий рівень. Створити консольну програму Python 3.14, яка приймає цілі межі сітки від -5 до 5; combinations знайти найближчу пару сітки за квадратом відстані, рівність розв’язати лексикографічно; вивести пару й відстань; додати власний декоратор кешування функції квадрата відстані зі збереженням метаданих, порівняти результат із незалежним простим обходом. Типізувати функції, перевірити допустимість даних; вивести отримані значення та їх кількість. Додати --help, іменовані параметри й повторювані --item із полями через двокрапку; описати формат, без аргументів запитувати дані з клавіатури. Помилки у stderr, код 2; успіх код 0. Подати таблицю й п’ять контрольних запусків.
Порядок виконання та захисту роботи
- Запишіть контракт джерела, кожного перетворення та споживача. Визначте максимальну кількість елементів і необхідні буфери.
- Реалізуйте генератори окремо від друку й консольного вводу. Укажіть, які операції матеріалізують повну послідовність.
- Для декоратора збережіть метадані через
wraps, а результат і винятки оригіналу передавайте без неочікуваної зміни. - Перевірте порожній потік, один елемент, звичайний набір, граничний розмір та некоректний запис. Додайте повторний обхід вичерпаного генератора й перевірку числа викликів обгортки.
- Запустіть програму з PyCharm та термінала. Для високого рівня перевірте довідку, аргументи, stderr і коди завершення.
- Подайте код, README, таблицю очікуваних і фактичних результатів та локальну історію Git; середовище й кеші не додавайте.
- На захисті поясніть місце зупинки
yield, порядок декораторів і один приклад, де лінивість не гарантує сталої пам’яті.