Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Усі базові розв’язки мають компілюватися без preview. Подайте UML типів і, для моделей станів, окремий граф переходів.
Варіанти
Варіант 1. Арифметичні вирази
1. Початковий рівень. Створити консольну програму Java: ввести операцію add або mul і два цілі числа −1000..1000; sealed Expr із записами Num, Add, Mul обчислюється вичерпним switch; вивести результат із Math.addExact та multiplyExact. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести операцію add або mul і два цілі числа −1000..1000; sealed Expr із записами Num, Add, Mul обчислюється вичерпним switch; вивести результат із Math.addExact та multiplyExact. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести операцію add або mul і два цілі числа −1000..1000; sealed Expr із записами Num, Add, Mul обчислюється вичерпним switch; вивести результат із Math.addExact та multiplyExact. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: дерево в префіксному форматі add 2 mul 3 4, глибина до 20, і спрощення додавання нуля. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 2. Колода карт
1. Початковий рівень. Створити консольну програму Java: ввести масть CLUBS, DIAMONDS, HEARTS, SPADES і ранг 2..14; enum Suit та Rank з явною вагою, record Card; вивести карту й вагу. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести масть CLUBS, DIAMONDS, HEARTS, SPADES і ранг 2..14; enum Suit та Rank з явною вагою, record Card; вивести карту й вагу. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести масть CLUBS, DIAMONDS, HEARTS, SPADES і ранг 2..14; enum Suit та Rank з явною вагою, record Card; вивести карту й вагу. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: усі 52 карти без повторів і порівняння двох карт однакової масті. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 3. Світлофор
1. Початковий рівень. Створити консольну програму Java: ввести стан RED, GREEN або YELLOW і кількість кроків 0..20; enum Light переходить RED→GREEN→YELLOW→RED через switch; вивести послідовність. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести стан RED, GREEN або YELLOW і кількість кроків 0..20; enum Light переходить RED→GREEN→YELLOW→RED через switch; вивести послідовність. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести стан RED, GREEN або YELLOW і кількість кроків 0..20; enum Light переходить RED→GREEN→YELLOW→RED через switch; вивести послідовність. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: окремий режим OFF як sealed альтернатива без автоматичних переходів. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 4. Фігури-записи
1. Початковий рівень. Створити консольну програму Java: ввести вид circle або rectangle й додатні скінченні розміри до 10000; sealed Shape і записи Circle, Rectangle обчислюються зразками записів; вивести площу. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести вид circle або rectangle й додатні скінченні розміри до 10000; sealed Shape і записи Circle, Rectangle обчислюються зразками записів; вивести площу. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид circle або rectangle й додатні скінченні розміри до 10000; sealed Shape і записи Circle, Rectangle обчислюються зразками записів; вивести площу. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: периметр і охоронну гілку when для площі менше одиниці. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 5. Календарні події
1. Початковий рівень. Створити консольну програму Java: ввести назву, дату ISO 2020..2030 і хвилини початку та кінця 0..1440, початок менший за кінець; Event перевіряє компоненти; вивести тривалість. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести назву, дату ISO 2020..2030 і хвилини початку та кінця 0..1440, початок менший за кінець; Event перевіряє компоненти; вивести тривалість. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести назву, дату ISO 2020..2030 і хвилини початку та кінця 0..1440, початок менший за кінець; Event перевіряє компоненти; вивести тривалість. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: sealed SingleEvent і RepeatedEvent з числом повторів 1..20 та таблицею дат. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 6. Статуси замовлень
1. Початковий рівень. Створити консольну програму Java: ввести ідентифікатор, стан NEW, PAID, SENT, DONE або CANCELLED і ціль; дозволити NEW→PAID/CANCELLED, PAID→SENT/CANCELLED, SENT→DONE; record Order повертає новий стан або відмову. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести ідентифікатор, стан NEW, PAID, SENT, DONE або CANCELLED і ціль; дозволити NEW→PAID/CANCELLED, PAID→SENT/CANCELLED, SENT→DONE; record Order повертає новий стан або відмову. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести ідентифікатор, стан NEW, PAID, SENT, DONE або CANCELLED і ціль; дозволити NEW→PAID/CANCELLED, PAID→SENT/CANCELLED, SENT→DONE; record Order повертає новий стан або відмову. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: історію до 20 переходів і підрахунок завершених замовлень. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 7. Способи платежу
1. Початковий рівень. Створити консольну програму Java: ввести тип card або cash і суму 1..1000000 копійок; sealed Payment із записами CardPayment та CashPayment, комісія 2 відсотки або 0; вивести умовну суму без реальної транзакції. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести тип card або cash і суму 1..1000000 копійок; sealed Payment із записами CardPayment та CashPayment, комісія 2 відсотки або 0; вивести умовну суму без реальної транзакції. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести тип card або cash і суму 1..1000000 копійок; sealed Payment із записами CardPayment та CashPayment, комісія 2 відсотки або 0; вивести умовну суму без реальної транзакції. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: зразки записів і третій варіант Voucher з лімітом 100000. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 8. Робот-пилосос
1. Початковий рівень. Створити консольну програму Java: ввести стан IDLE, CLEANING або CHARGING і команду start, dock або stop; enum переходить IDLE→CLEANING за start, будь-який→CHARGING за dock, CLEANING/CHARGING→IDLE за stop; вивести стан чи відмову. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести стан IDLE, CLEANING або CHARGING і команду start, dock або stop; enum переходить IDLE→CLEANING за start, будь-який→CHARGING за dock, CLEANING/CHARGING→IDLE за stop; вивести стан чи відмову. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести стан IDLE, CLEANING або CHARGING і команду start, dock або stop; enum переходить IDLE→CLEANING за start, будь-який→CHARGING за dock, CLEANING/CHARGING→IDLE за stop; вивести стан чи відмову. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: record Robot зі зарядом 0..100 та забороною start за заряду нижче 10. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 9. Одиниці вимірювання
1. Початковий рівень. Створити консольну програму Java: ввести довжину 0..1000000 і одиницю M або CM; enum Unit має коефіцієнт до метрів, record Length перевіряє скінченність; вивести метри. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести довжину 0..1000000 і одиницю M або CM; enum Unit має коефіцієнт до метрів, record Length перевіряє скінченність; вивести метри. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести довжину 0..1000000 і одиницю M або CM; enum Unit має коефіцієнт до метрів, record Length перевіряє скінченність; вивести метри. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: нормалізоване додавання двох довжин і порівняння значень. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 10. Результат перевірки
1. Початковий рівень. Створити консольну програму Java: ввести рядок цілого числа; sealed ParseResult із записами Success(int value) і Failure(String reason), switch виводить подвоєне значення long або причину. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести рядок цілого числа; sealed ParseResult із записами Success(int value) і Failure(String reason), switch виводить подвоєне значення long або причину. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести рядок цілого числа; sealed ParseResult із записами Success(int value) і Failure(String reason), switch виводить подвоєне значення long або причину. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: зразок Success з when для від’ємних та окремий підсумок успіхів. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 11. Планети
1. Початковий рівень. Створити консольну програму Java: ввести EARTH або MARS і масу 0..1000000 кг; enum Planet з навчальними прискореннями 9.82 і 3.73 обчислює вагу; вивести результат. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести EARTH або MARS і масу 0..1000000 кг; enum Planet з навчальними прискореннями 9.82 і 3.73 обчислює вагу; вивести результат. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести EARTH або MARS і масу 0..1000000 кг; enum Planet з навчальними прискореннями 9.82 і 3.73 обчислює вагу; вивести результат. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: record Measurement із одиницями та порівняння ваги на двох планетах. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 12. Шахові ходи
1. Початковий рівень. Створити консольну програму Java: ввести вид rook або bishop і дві клітинки з координатами 1..8; sealed Move із записами, switch перевіряє спільну координату або рівні модулі зсувів, однакові клітинки заборонені; вивести допустимість без інших фігур. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести вид rook або bishop і дві клітинки з координатами 1..8; sealed Move із записами, switch перевіряє спільну координату або рівні модулі зсувів, однакові клітинки заборонені; вивести допустимість без інших фігур. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид rook або bishop і дві клітинки з координатами 1..8; sealed Move із записами, switch перевіряє спільну координату або рівні модулі зсувів, однакові клітинки заборонені; вивести допустимість без інших фігур. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: record Square і вкладені зразки для діставання координат. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 13. JSON-значення
1. Початковий рівень. Створити консольну програму Java: ввести тип string, number або null і відповідне значення: рядок до 100 символів або скінченне число; sealed JsonValue із записами виводить JSON із правильним екрануванням лапок, зворотної косої риски та переведення рядка. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести тип string, number або null і відповідне значення: рядок до 100 символів або скінченне число; sealed JsonValue із записами виводить JSON із правильним екрануванням лапок, зворотної косої риски та переведення рядка. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести тип string, number або null і відповідне значення: рядок до 100 символів або скінченне число; sealed JsonValue із записами виводить JSON із правильним екрануванням лапок, зворотної косої риски та переведення рядка. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: масив до 20 значень і рекурсивне форматування з глибиною до 10. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 14. Робочі зміни
1. Початковий рівень. Створити консольну програму Java: ввести тип DAY або NIGHT і години 1..12; enum Shift задає навчальну ставку 10000 або 15000 копійок, record Work обчислює суму; вивести оплату. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести тип DAY або NIGHT і години 1..12; enum Shift задає навчальну ставку 10000 або 15000 копійок, record Work обчислює суму; вивести оплату. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести тип DAY або NIGHT і години 1..12; enum Shift задає навчальну ставку 10000 або 15000 копійок, record Work обчислює суму; вивести оплату. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: підсумки за видом зміни й перевірку рівності записів. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 15. Месенджер
1. Початковий рівень. Створити консольну програму Java: ввести вид text або image; текст до 200 символів, зображення має назву й розміри 1..10000; sealed Message із записами формує preview через зразки; вивести текст або розміри. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести вид text або image; текст до 200 символів, зображення має назву й розміри 1..10000; sealed Message із записами формує preview через зразки; вивести текст або розміри. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид text або image; текст до 200 символів, зображення має назву й розміри 1..10000; sealed Message із записами формує preview через зразки; вивести текст або розміри. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: AudioMessage з тривалістю 1..7200 секунд та оновлення вичерпного switch. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 16. Банківські операції
1. Початковий рівень. Створити консольну програму Java: ввести тип deposit або withdraw, суму 1..1000000 і початковий залишок 0..1000000 копійок; sealed Operation і switch застосовують дію без від’ємного залишку та перевищення ліміту; вивести новий залишок. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести тип deposit або withdraw, суму 1..1000000 і початковий залишок 0..1000000 копійок; sealed Operation і switch застосовують дію без від’ємного залишку та без перевищення ліміту залишку 1000000 копійок; вивести новий залишок. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести тип deposit або withdraw, суму 1..1000000 і початковий залишок 0..1000000 копійок; sealed Operation і switch застосовують дію без від’ємного залишку та перевищення ліміту; вивести новий залишок. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: послідовність незмінних record-знімків після кожної успішної операції. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 17. Квитки
1. Початковий рівень. Створити консольну програму Java: ввести вид standard або child і базову ціну 1..100000; sealed Ticket із записами застосовує нульову або 50-відсоткову знижку; вивести копійки. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести вид standard або child і базову ціну 1..100000; sealed Ticket із записами застосовує нульову або 50-відсоткову знижку; вивести копійки. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид standard або child і базову ціну 1..100000; sealed Ticket із записами застосовує нульову або 50-відсоткову знижку; вивести копійки. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: enum Zone з коефіцієнтами 1, 2, 3 та вкладений зразок запису. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 18. Географічні маршрути
1. Початковий рівень. Створити консольну програму Java: ввести дві декартові точки x,y у межах −1000..1000; record Point і Route повертають Math.hypot різниць, одиниці умовні; вивести довжину. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести дві декартові точки x,y у межах −1000..1000; record Point і Route повертають Math.hypot різниць, одиниці умовні; вивести довжину. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести дві декартові точки x,y у межах −1000..1000; record Point і Route повертають Math.hypot різниць, одиниці умовні; вивести довжину. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: sealed Route з прямим та двосегментним маршрутом через проміжну точку. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 19. Стани банкомата
1. Початковий рівень. Створити консольну програму Java: ввести стан IDLE, CARD або AUTHORIZED і команду insert, authenticate чи eject; дозволити IDLE→CARD, CARD→AUTHORIZED та CARD/AUTHORIZED→IDLE відповідно; вивести стан без реальних карток чи PIN. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести стан IDLE, CARD або AUTHORIZED і команду insert, authenticate чи eject; дозволити IDLE→CARD, CARD→AUTHORIZED та CARD/AUTHORIZED→IDLE відповідно; вивести стан без реальних карток чи PIN. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести стан IDLE, CARD або AUTHORIZED і команду insert, authenticate чи eject; дозволити IDLE→CARD, CARD→AUTHORIZED та CARD/AUTHORIZED→IDLE відповідно; вивести стан без реальних карток чи PIN. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: sealed результат Accepted/Rejected із поясненням і журналом команд. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 20. Оцінки ECTS
1. Початковий рівень. Створити консольну програму Java: ввести бал 0..100; enum Grade визначити за навчальними межами A90, B82, C74, D64, E60, FX35, F0; record Result виводить літеру й бал. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести бал 0..100; enum Grade визначити за навчальними межами A90, B82, C74, D64, E60, FX35, F0; record Result виводить літеру й бал. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести бал 0..100; enum Grade визначити за навчальними межами A90, B82, C74, D64, E60, FX35, F0; record Result виводить літеру й бал. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: компактний конструктор, нормалізацію імені та підсумки за категорією. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 21. Інвентар гри
1. Початковий рівень. Створити консольну програму Java: ввести вид weapon або potion, ім’я й значення 1..100; sealed Item із записами описує damage або healing; вивести опис через switch. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести вид weapon або potion, ім’я й значення 1..100; sealed Item із записами описує damage або healing; вивести опис через switch. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид weapon або potion, ім’я й значення 1..100; sealed Item із записами описує damage або healing; вивести опис через switch. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: enum Rarity і охоронну гілку для значення понад 80. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 22. Погодні вимірювання
1. Початковий рівень. Створити консольну програму Java: ввести місто, температуру −50..60 і стан CLEAR, CLOUDY або RAIN; record Weather та enum Condition формують опис; вивести температуру й стан. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести місто, температуру −50..60 і стан CLEAR, CLOUDY або RAIN; record Weather та enum Condition формують опис; вивести температуру й стан. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести місто, температуру −50..60 і стан CLEAR, CLOUDY або RAIN; record Weather та enum Condition формують опис; вивести температуру й стан. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: sealed Reading із Valid і Missing та підсумки пропущених вимірювань. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 23. Рецепти як облік
1. Початковий рівень. Створити консольну програму Java: ввести код навчального рецепта, назву препарату та статус CREATED, ISSUED або CLOSED; record Prescription перевіряє непорожні поля, enum задає CREATED→ISSUED→CLOSED; вивести стан без рекомендацій дозування. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести код навчального рецепта, назву препарату та статус CREATED, ISSUED або CLOSED; record Prescription перевіряє непорожні поля, enum задає CREATED→ISSUED→CLOSED; вивести стан без рекомендацій дозування. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести код навчального рецепта, назву препарату та статус CREATED, ISSUED або CLOSED; record Prescription перевіряє непорожні поля, enum задає CREATED→ISSUED→CLOSED; вивести стан без рекомендацій дозування. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: sealed результат переходу й відмову після CLOSED. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 24. Дорожні знаки
1. Початковий рівень. Створити консольну програму Java: ввести вид speed або stop; SpeedLimit має число 10..130, Stop не має компонентів; sealed Sign через switch виводить навчальний опис; вивести результат. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести вид speed або stop; SpeedLimit має число 10..130, Stop не має компонентів; sealed Sign через switch виводить навчальний опис; вивести результат. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид speed або stop; SpeedLimit має число 10..130, Stop не має компонентів; sealed Sign через switch виводить навчальний опис; вивести результат. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: enum Category та when для швидкості не більше 30. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 25. Кольори RGB і HSL
1. Початковий рівень. Створити консольну програму Java: ввести R,G,B у межах 0..255; record Rgb перевіряє компоненти, вивести шістнадцятковий код; enum Channel задає вибір компонента. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести R,G,B у межах 0..255; record Rgb перевіряє компоненти, вивести шістнадцятковий код; enum Channel задає вибір компонента. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести R,G,B у межах 0..255; record Rgb перевіряє компоненти, вивести шістнадцятковий код; enum Channel задає вибір компонента. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: sealed Color з Rgb і Hsl, H 0..359, S/L 0..100 та текстовим форматуванням без обов’язкової конвертації. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 26. Абонементи залу
1. Початковий рівень. Створити консольну програму Java: ввести тип DAY або MONTH та число одиниць 1..12; enum Plan задає умовну ціну 15000 або 120000 копійок, record Membership обчислює суму; вивести суму. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести тип DAY або MONTH та число одиниць 1..12; enum Plan задає умовну ціну 15000 або 120000 копійок, record Membership обчислює суму; вивести суму. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести тип DAY або MONTH та число одиниць 1..12; enum Plan задає умовну ціну 15000 або 120000 копійок, record Membership обчислює суму; вивести суму. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: sealed Active/Expired стан із датою ISO та перевіркою переходу. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 27. Команди консолі
1. Початковий рівень. Створити консольну програму Java: ввести рядок add з двома цілими аргументами або echo з текстом; sealed Command із записами розбирається та виконується switch; вивести суму long або текст. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести рядок add з двома цілими аргументами або echo з текстом; sealed Command із записами розбирається та виконується switch; вивести суму long або текст. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести рядок add з двома цілими аргументами або echo з текстом; sealed Command із записами розбирається та виконується switch; вивести суму long або текст. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: Help як окрему команду та Error як перевірений результат розбору. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 28. Страхові випадки
1. Початковий рівень. Створити консольну програму Java: ввести вид minor або major і збиток 0..10000000 копійок; sealed Claim із записами повертає навчальну компенсацію 50 або 80 відсотків; вивести суму, не трактувати як реальні умови страхування. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести вид minor або major і збиток 0..10000000 копійок; sealed Claim із записами повертає навчальну компенсацію 50 або 80 відсотків; вивести суму, не трактувати як реальні умови страхування. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид minor або major і збиток 0..10000000 копійок; sealed Claim із записами повертає навчальну компенсацію 50 або 80 відсотків; вивести суму, не трактувати як реальні умови страхування. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: enum ReviewStatus і переходи NEW→APPROVED/REJECTED. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 29. Поштові відправлення
1. Початковий рівень. Створити консольну програму Java: ввести вид letter або parcel, код і масу 1..10000 г; sealed Shipment повертає умовну ціну 2000 або 5000 плюс маса копійок; вивести опис і ціну. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести вид letter або parcel, код і масу 1..10000 г; sealed Shipment повертає умовну ціну 2000 або 5000 плюс маса копійок; вивести опис і ціну. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид letter або parcel, код і масу 1..10000 г; sealed Shipment повертає умовну ціну 2000 або 5000 плюс маса копійок; вивести опис і ціну. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: record Address із непорожнім містом та вкладений зразок доставки. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 30. Кавові замовлення
1. Початковий рівень. Створити консольну програму Java: ввести вид ESPRESSO або LATTE і розмір SMALL або LARGE; enum Coffee задає 3000/4500, Size множник 1/2; record CoffeeOrder виводить ціну копійками. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
2. Базовий рівень. Створити консольну програму Java: ввести вид ESPRESSO або LATTE і розмір SMALL або LARGE; enum Coffee задає 3000/4500, Size множник 1/2; record CoffeeOrder виводить ціну копійками. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести вид ESPRESSO або LATTE і розмір SMALL або LARGE; enum Coffee задає 3000/4500, Size множник 1/2; record CoffeeOrder виводить ціну копійками. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: sealed AddOn із None та Milk(ml), де мл 1..200 додають 10 копійок за мл. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Порядок виконання та захисту роботи
- Визначте компоненти значення й допустимі альтернативи.
- Подайте UML із record, enum та sealed позначеннями.
- Реалізуйте компактні конструктори й нормалізацію.
- Забезпечте захисне копіювання змінюваних компонентів.
- Реалізуйте вичерпний switch і явну політику null.
- Перевірте межі, рівність, відмови й усі стани.
- Подайте код, README та щонайменше п’ять перевірок.
- На захисті додайте альтернативу й поясніть діагностику.