Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Порядок виконання роботи
- Визначте типи даних, допустимі порожні стани та політику
null. - Реалізуйте початковий, основний або підвищений рівень варіанта.
- Розділіть консольний ввід, узагальнену модель і формування звіту.
- Запустіть звичайні, граничні й неправильні приклади. Для обмежень типів додайте окремі файли, що не повинні компілюватися.
- Поясніть кожне використання wildcard, межі або придушення попереджень. Не приховуйте попередження для цілого проєкту.
Варіанти
Варіант 1. Пари та трійки
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести ім’я та цілий бал; Pair<A,B> повертає обміняну пару. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести ім’я та цілий бал; Pair<A,B> повертає обміняну пару; додати Triple<A,B,C> з циклічним поворотом. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести ім’я та цілий бал; Pair<A,B> повертає обміняну пару; додати Triple<A,B,C> з циклічним поворотом; перевірити подвійний обмін і три повороти для різних типів. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Варіант 2. Дужки та стек
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести рядок із круглими дужками; перевірити баланс власним Stack<T> на масиві. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести рядок із круглими дужками; перевірити баланс власним Stack<T> на масиві; підтримати квадратні й фігурні дужки та позицію першої помилки. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести рядок із круглими дужками; перевірити баланс власним Stack<T> на масиві; підтримати квадратні й фігурні дужки та позицію першої помилки; додати розширення місткості й перевірити стек також на цілих числах. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Варіант 3. Буфер датчика
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести додатну місткість і послідовність цілих вимірів; RingBuffer<T> зберігає останні значення. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести додатну місткість і послідовність цілих вимірів; RingBuffer<T> зберігає останні значення; додати читання від найстарішого до найновішого без зміни стану. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести додатну місткість і послідовність цілих вимірів; RingBuffer<T> зберігає останні значення; додати читання від найстарішого до найновішого без зміни стану; перевірити кілька повних обертів і той самий контейнер із рядками. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Варіант 4. FIFO-кеш
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести додатну місткість і пари ключ–значення; Cache<K,V> вилучає найраніше доданий ключ. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести додатну місткість і пари ключ–значення; Cache<K,V> вилучає найраніше доданий ключ; оновлення наявного ключа не повинно змінювати чергу. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести додатну місткість і пари ключ–значення; Cache<K,V> вилучає найраніше доданий ключ; оновлення наявного ключа не повинно змінювати чергу; додати лічильники влучень і промахів та продемонструвати два типи ключів. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Варіант 5. Замкнені діапазони
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести дві цілі межі й число; Range<T> з межею Comparable перевіряє належність. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести дві цілі межі й число; Range<T> з межею Comparable перевіряє належність; знайти перетин двох діапазонів; порожній перетин позначити явно. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести дві цілі межі й число; Range<T> з межею Comparable перевіряє належність; знайти перетин двох діапазонів; порожній перетин позначити явно; додати об’єднання лише для діапазонів, які перетинаються, та перевірити ISO-дати. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Варіант 6. Числова матриця
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести розміри та прямокутну матрицю Integer; Matrix<T extends Number> обчислює суму як double. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести розміри та прямокутну матрицю Integer; Matrix<T extends Number> обчислює суму як double; перевірити прямокутність і додати суми рядків. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести розміри та прямокутну матрицю Integer; Matrix<T extends Number> обчислює суму як double; перевірити прямокутність і додати суми рядків; перевірити Double-матрицю та відхиляти null і нескінченні значення. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Варіант 7. Результат розбору
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести рядки цілих чисел; Result<T,E> відокремлює успіх Integer від текстової помилки. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести рядки цілих чисел; Result<T,E> відокремлює успіх Integer від текстової помилки; додати перетворення успіху через власний узагальнений інтерфейс. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести рядки цілих чисел; Result<T,E> відокремлює успіх Integer від текстової помилки; додати перетворення успіху через власний узагальнений інтерфейс; побудувати ланцюг розбору й перевірки діапазону без втрати початкової помилки. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Варіант 8. Репозиторій на масиві
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести записи id–назва; Repository<T> зберігає об’єкти з інтерфейсом Identified. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести записи id–назва; Repository<T> зберігає об’єкти з інтерфейсом Identified; додати пошук і видалення за унікальним id. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести записи id–назва; Repository<T> зберігає об’єкти з інтерфейсом Identified; додати пошук і видалення за унікальним id; перевірити два класи записів, дублікати й незалежність копії масиву результатів. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Варіант 9. Двійкова купа
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести цілі числа; Heap<T> з Comparator видає мінімум. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести цілі числа; Heap<T> з Comparator видає мінімум; реалізувати просіювання вгору і вниз у власному масиві. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести цілі числа; Heap<T> з Comparator видає мінімум; реалізувати просіювання вгору і вниз у власному масиві; перевірити заявки з пріоритетом і id та незмінність інваріанта після кожного вилучення. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Варіант 10. Числова статистика
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести скінченні числа; Stats<T extends Number> обчислює кількість, мінімум і максимум. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести скінченні числа; Stats<T extends Number> обчислює кількість, мінімум і максимум; додати середнє та дисперсію сукупності з дільником n. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести скінченні числа; Stats<T extends Number> обчислює кількість, мінімум і максимум; додати середнє та дисперсію сукупності з дільником n; визначити порожній результат і перевірити Integer та Double без втрати дробової частини. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Варіант 11. Дерево пошуку
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести цілі ключі; Node<T> утворює двійкове дерево за Comparator. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести цілі ключі; Node<T> утворює двійкове дерево за Comparator; додати пошук і симетричний обхід; дублікати рахувати у вузлі. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести цілі ключі; Node<T> утворює двійкове дерево за Comparator; додати пошук і симетричний обхід; дублікати рахувати у вузлі; реалізувати видалення вузла з двома нащадками й перевірити рядкові ключі. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Варіант 12. Мережа міст
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести назви міст і неорієнтовані ребра; Graph<T> перевіряє суміжність. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести назви міст і неорієнтовані ребра; Graph<T> перевіряє суміжність; знайти шлях BFS із власною узагальненою чергою. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести назви міст і неорієнтовані ребра; Graph<T> перевіряє суміжність; знайти шлях BFS із власною узагальненою чергою; перевірити незв’язний граф, петлі й вершини іншого типу. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Варіант 13. Складські контейнери
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести товари з назвою й масою; Crate<T extends Product> зберігає товар. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести товари з назвою й масою; Crate<T extends Product> зберігає товар; обчислити масу джерела коробок через extends wildcard. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести товари з назвою й масою; Crate<T extends Product> зберігає товар; обчислити масу джерела коробок через extends wildcard; перенести товари в приймач super wildcard і перевірити підтип FragileProduct. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Варіант 14. Двозв’язний список
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести рядки; власний LinkedList<T> додає на початок і кінець. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести рядки; власний LinkedList<T> додає на початок і кінець; додати видалення та обхід в обох напрямках. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести рядки; власний LinkedList<T> додає на початок і кінець; додати видалення та обхід в обох напрямках; реалізувати Iterator<T> з коректним завершенням і перевірити список цілих. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Варіант 15. Таблиця лідерів
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести гравців з іменем і балом; Leaderboard<T> сортує Comparable-елементи. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести гравців з іменем і балом; Leaderboard<T> сортує Comparable-елементи; додати альтернативний Comparator і стабільний порядок рівних балів. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести гравців з іменем і балом; Leaderboard<T> сортує Comparable-елементи; додати альтернативний Comparator і стабільний порядок рівних балів; застосувати Comparable<? super T> до підкласу учасника й перевірити межу top-k. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Варіант 16. Словник пар
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести рядкові ключі й цілі значення; Dictionary<K,V> зберігає власний масив пар. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести рядкові ключі й цілі значення; Dictionary<K,V> зберігає власний масив пар; додати заміну, пошук і видалення без дублювання ключів. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести рядкові ключі й цілі значення; Dictionary<K,V> зберігає власний масив пар; додати заміну, пошук і видалення без дублювання ключів; перевірити ключі-об’єкти з equals та результат відсутнього ключа без двозначності. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Варіант 17. Черга повідомлень
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести тексти; Queue<T> передає їх Handler<? super T> у порядку FIFO. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести тексти; Queue<T> передає їх Handler<? super T> у порядку FIFO; додати повідомлення з id та базовий обробник Object. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести тексти; Queue<T> передає їх Handler<? super T> у порядку FIFO; додати повідомлення з id та базовий обробник Object; визначити політику збою обробника: зупинитися, зберігши необроблений елемент. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Варіант 18. Історія версій
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести рядкові стани; History<T> зберігає поточний і попередні стани. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести рядкові стани; History<T> зберігає поточний і попередні стани; додати undo і redo з очищенням redo після нової зміни. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести рядкові стани; History<T> зберігає поточний і попередні стани; додати undo і redo з очищенням redo після нової зміни; перевірити історію незмінних записів і пояснити вимогу копіювання змінюваних об’єктів. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Варіант 19. Часовий ряд
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести впорядковані пари час–ціле значення; Series<T extends Number> підсумовує інтервал. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести впорядковані пари час–ціле значення; Series<T extends Number> підсумовує інтервал; додати середні неперекривних вікон заданого додатного розміру. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести впорядковані пари час–ціле значення; Series<T extends Number> підсумовує інтервал; додати середні неперекривних вікон заданого додатного розміру; визначити політику неповного вікна і перевірити Double та однакові часові мітки. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Варіант 20. Змішаний кошик
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести товари підтипів Book і Food; Basket<T extends Product> зберігає елементи. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести товари підтипів Book і Food; Basket<T extends Product> зберігає елементи; метод суми приймає виробника extends Product. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести товари підтипів Book і Food; Basket<T extends Product> зберігає елементи; метод суми приймає виробника extends Product; метод перенесення приймає споживача super T; перевірити копіювання в той самий кошик. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Варіант 21. Мультимножина
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести слова; MultiSet<T> зберігає кількість кожного значення. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести слова; MultiSet<T> зберігає кількість кожного значення; додати вилучення одного входження та сумарний розмір. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести слова; MultiSet<T> зберігає кількість кожного значення; додати вилучення одного входження та сумарний розмір; знайти перетин із мінімальними кратностями та перевірити власний тип ключа. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Варіант 22. Розріджений масив
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести додатну довжину й пари індекс–рядок; SparseArray<T> зберігає лише задані комірки. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести додатну довжину й пари індекс–рядок; SparseArray<T> зберігає лише задані комірки; додати видалення й обхід у порядку індексів. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести додатну довжину й пари індекс–рядок; SparseArray<T> зберігає лише задані комірки; додати видалення й обхід у порядку індексів; відокремити незадану комірку від null та перевірити вихід за межі. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Варіант 23. Пошук і сортування
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести масив слів; generic mergeSort сортує за Comparator. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести масив слів; generic mergeSort сортує за Comparator; додати двійковий пошук з тим самим порядком. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести масив слів; generic mergeSort сортує за Comparator; додати двійковий пошук з тим самим порядком; повертати першу позицію дубліката і перевірити зворотний порядок та масив записів. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Варіант 24. Турнірна сітка
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести непорожню кількість учасників, що є степенем двійки; Bracket<T> будує пари. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести непорожню кількість учасників, що є степенем двійки; Bracket<T> будує пари; вибирати переможця кожної пари через власний інтерфейс Judge<T>. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести непорожню кількість учасників, що є степенем двійки; Bracket<T> будує пари; вибирати переможця кожної пари через власний інтерфейс Judge<T>; перевірити гравців і команди та відхиляти результат, який не є учасником пари. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Варіант 25. Композиція перевірок
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести рядки; Validator<T> перевіряє непорожність тексту. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести рядки; Validator<T> перевіряє непорожність тексту; додати and-композицію із зупинкою після першої помилки. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести рядки; Validator<T> перевіряє непорожність тексту; додати and-композицію із зупинкою після першої помилки; перевірити базовий Validator<Object> для рядків і зберігати пояснення відмови. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Варіант 26. Типізовані одиниці
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести дві довжини; Quantity<U extends Unit> зберігає скінченне значення. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести дві довжини; Quantity<U extends Unit> зберігає скінченне значення; додати окремі типи Meter і Second та додавання лише однакових одиниць. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести дві довжини; Quantity<U extends Unit> зберігає скінченне значення; додати окремі типи Meter і Second та додавання лише однакових одиниць; довести негативною компіляцією заборону додавання часу до довжини й перевірити null. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Варіант 27. Дерево категорій
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести ієрархію категорій з унікальними id; Tree<T> обходить вузли в глибину. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести ієрархію категорій з унікальними id; Tree<T> обходить вузли в глибину; додати пошук і обчислення висоти. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести ієрархію категорій з унікальними id; Tree<T> обходить вузли в глибину; додати пошук і обчислення висоти; заборонити цикл при перепідпорядкуванні й перевірити переміщення кореня. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Варіант 28. Кільцевий дек
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести команди й цілі значення; Deque<T> на масиві додає з обох кінців. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести команди й цілі значення; Deque<T> на масиві додає з обох кінців; реалізувати вилучення з обох кінців та збільшення місткості. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести команди й цілі значення; Deque<T> на масиві додає з обох кінців; реалізувати вилучення з обох кінців та збільшення місткості; перевірити порядок після обертання, розширення й чергування операцій для рядків. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Варіант 29. Журнал подій
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести події Move і Score; Journal<T extends Event> зберігає порядок. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести події Move і Score; Journal<T extends Event> зберігає порядок; відбирати підтип через переданий Class<S> і Class.cast. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести події Move і Score; Journal<T extends Event> зберігає порядок; відбирати підтип через переданий Class<S> і Class.cast; перевірити порожній результат і не застосовувати неперевірене приведення до S. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Варіант 30. Алгоритми компаратора
1. Початковий рівень. Створити консольну програму Java на JDK 27. Ввести записи назва–ціна; generic max обирає за Comparator<? super T>. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
2. Базовий рівень. Створити консольну програму Java на JDK 27. Ввести записи назва–ціна; generic max обирає за Comparator<? super T>; додати сортування й двійковий пошук з однаковим компаратором. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null.
3. Високий рівень. Створити консольну програму Java на JDK 27. Ввести записи назва–ціна; generic max обирає за Comparator<? super T>; додати сортування й двійковий пошук з однаковим компаратором; перевірити компаратор базового класу на підкласах і визначити політику рівних ключів. Вивести підписаний результат. Перевірити звичайний, порожній або одиничний і неправильний випадки; сформулювати політику null. Підтримати CLI ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Подати таблицю з підсумком. Помилки виводити в stderr; коди 0 – успіх/довідка, 2 – неправильний ввід, 1 – операційний збій. Додати автоматизовані перевірки алгоритму й CLI.
Зміст звіту
- Постановка, контракти операцій і діаграма типів.
- Код програми, команди компіляції та фактичні результати.
- Таблиця перевірок: ввід, очікуваний і фактичний результат.
- Висновок про межі параметрів і відсутність небезпечних приведень.