Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Обчислювальні методи не повинні самостійно читати консоль.
Варіанти
Варіант 1. Статистика оцінок
1. Початковий рівень. Створити консольну програму Java: ввести 1..100 оцінок 0..100; окремі методи обчислюють мінімум, максимум і середнє без зміни масиву; вивести результати. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести 1..100 оцінок 0..100; окремі методи обчислюють мінімум, максимум і середнє без зміни масиву; вивести результати. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести 1..100 оцінок 0..100; окремі методи обчислюють мінімум, максимум і середнє без зміни масиву; вивести результати. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: медіану відсортованої копії, найменшу моду за рівних частот і гістограму кількостей кожної оцінки. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 2. Навчальний шифр Цезаря
1. Початковий рівень. Створити консольну програму Java: ввести ASCII-текст A..Z і зсув 0..25; методи encode та decode виконують циклічний зсув; вивести шифротекст і відновлений текст, позначивши алгоритм навчальним, непридатним для захисту. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести ASCII-текст A..Z і зсув 0..25; методи encode та decode виконують циклічний зсув; вивести шифротекст і відновлений текст, позначивши алгоритм навчальним, непридатним для захисту. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести ASCII-текст A..Z і зсув 0..25; методи encode та decode виконують циклічний зсув; вивести шифротекст і відновлений текст, позначивши алгоритм навчальним, непридатним для захисту. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: частоти 26 літер і всі 26 кандидатів зворотного зсуву без автоматичної обіцянки правильного ключа. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 3. Температури тижня
1. Початковий рівень. Створити консольну програму Java: ввести матрицю 7 на 3 скінченних температур −50..60; методи обчислюють середнє кожного дня й загальний мінімум; вивести таблицю. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести матрицю 7 на 3 скінченних температур −50..60; методи обчислюють середнє кожного дня й загальний мінімум; вивести таблицю. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести матрицю 7 на 3 скінченних температур −50..60; методи обчислюють середнє кожного дня й загальний мінімум; вивести таблицю. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: середні за кожною з трьох годин спостереження й найтепліший день, за нічиєї перший. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 4. Анаграми
1. Початковий рівень. Створити консольну програму Java: ввести два слова з латинських літер до 50 символів; привести до нижнього регістру Locale.ROOT, відсортувати копії char-масивів і порівняти; вивести, чи це анаграми. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести два слова з латинських літер до 50 символів; привести до нижнього регістру Locale.ROOT, відсортувати копії char-масивів і порівняти; вивести, чи це анаграми. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести два слова з латинських літер до 50 символів; привести до нижнього регістру Locale.ROOT, відсортувати копії char-масивів і порівняти; вивести, чи це анаграми. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: групування до 20 слів за однаковими нормалізованими літерами без колекцій. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 5. Сортування вручну
1. Початковий рівень. Створити консольну програму Java: ввести 1..100 цілих чисел −1000..1000; метод selectionSort сортує копію вибором, рахує порівняння елементів і фактичні обміни; вивести масив і лічильники. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести 1..100 цілих чисел −1000..1000; метод selectionSort сортує копію вибором, рахує порівняння елементів і фактичні обміни; вивести масив і лічильники. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести 1..100 цілих чисел −1000..1000; метод selectionSort сортує копію вибором, рахує порівняння елементів і фактичні обміни; вивести масив і лічильники. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: insertionSort з лічильником порівнянь і переміщень та порівняння з Arrays.sort. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 6. Поле морського бою
1. Початковий рівень. Створити консольну програму Java: ввести координати до 10 одноклітинних кораблів на полі 10 на 10 без повторів та одну координату пострілу; вивести hit або miss і поле з позначкою пострілу. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести координати до 10 одноклітинних кораблів на полі 10 на 10 без повторів та одну координату пострілу; вивести hit або miss і поле з позначкою пострілу. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести координати до 10 одноклітинних кораблів на полі 10 на 10 без повторів та одну координату пострілу; вивести hit або miss і поле з позначкою пострілу. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: послідовність до 100 пострілів, відмову для повторного й кількість незбитих кораблів. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 7. Навчальна оцінка пароля
1. Початковий рівень. Створити консольну програму Java: ввести рядок до 100 ASCII-символів; метод нараховує по балу за довжину не менше 12, великі літери, малі літери, цифри й інші знаки; вивести 0..5 та пояснення, що оцінка не гарантує безпеку. Подати UML класів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести рядок до 100 ASCII-символів; метод нараховує по балу за довжину не менше 12, великі літери, малі літери, цифри й інші знаки; вивести 0..5 та пояснення, що оцінка не гарантує безпеку. Подати UML класів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести рядок до 100 ASCII-символів; метод нараховує по балу за довжину не менше 12, великі літери, малі літери, цифри й інші знаки; вивести 0..5 та пояснення, що оцінка не гарантує безпеку. Подати UML класів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: побудову прикладів тестових рядків із заданих наборів символів без використання їх як реальних облікових секретів. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 8. Нормалізація ПІБ
1. Початковий рівень. Створити консольну програму Java: ввести три непорожні українські слова без дефісів і апострофів; strip, розділення пробілів і зміна регістру формують прізвище та ініціали; вивести результат. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести три непорожні українські слова без дефісів і апострофів; strip, розділення пробілів і зміна регістру формують прізвище та ініціали; вивести результат. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести три непорожні українські слова без дефісів і апострофів; strip, розділення пробілів і зміна регістру формують прізвище та ініціали; вивести результат. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: транслітерацію за явно надрукованою в README навчальною таблицею з 33 відповідностей, не заявляючи офіційної відповідності. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 9. Магічний квадрат
1. Початковий рівень. Створити консольну програму Java: ввести квадрат 3 на 3 з числами 1..9 без повторів; перевірити однакові суми рядків, стовпців і двох діагоналей; вивести результат і суми. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести квадрат 3 на 3 з числами 1..9 без повторів; перевірити однакові суми рядків, стовпців і двох діагоналей; вивести результат і суми. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести квадрат 3 на 3 з числами 1..9 без повторів; перевірити однакові суми рядків, стовпців і двох діагоналей; вивести результат і суми. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: побудову непарного квадрата n=3..9 методом переходу вгору-вправо з циклічними межами, за зайнятої клітинки – вниз. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 10. Частота слів
1. Початковий рівень. Створити консольну програму Java: ввести рядок до 1000 символів із латинських літер і пробілів; нормалізувати регістр, визначити частоти масивами слів і лічильників; вивести слова в лексикографічному порядку. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести рядок до 1000 символів із латинських літер і пробілів; нормалізувати регістр, визначити частоти масивами слів і лічильників; вивести слова в лексикографічному порядку. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести рядок до 1000 символів із латинських літер і пробілів; нормалізувати регістр, визначити частоти масивами слів і лічильників; вивести слова в лексикографічному порядку. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: найчастіше й найдовше слово, за нічиєї лексикографічно перше, та HTML-звіт через текстовий блок. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 11. Гра Життя
1. Початковий рівень. Створити консольну програму Java: ввести прямокутну матрицю 1..20 на 1..20 зі значеннями 0/1; один крок Конвея: жива виживає за 2 або 3 сусідів, мертва оживає за 3, поза полем мертво; вивести нову матрицю. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести прямокутну матрицю 1..20 на 1..20 зі значеннями 0/1; один крок Конвея: жива виживає за 2 або 3 сусідів, мертва оживає за 3, поза полем мертво; вивести нову матрицю. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести прямокутну матрицю 1..20 на 1..20 зі значеннями 0/1; один крок Конвея: жива виживає за 2 або 3 сусідів, мертва оживає за 3, поза полем мертво; вивести нову матрицю. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: до 100 поколінь із двома буферами й кількістю живих клітин після кожного. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 12. Круговий турнір
1. Початковий рівень. Створити консольну програму Java: ввести парну кількість команд 2..10 і непорожні назви; сформувати всі неупорядковані пари команд окремим методом; вивести пари. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести парну кількість команд 2..10 і непорожні назви; сформувати всі неупорядковані пари команд окремим методом; вивести пари. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести парну кількість команд 2..10 і непорожні назви; сформувати всі неупорядковані пари команд окремим методом; вивести пари. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: розклад n−1 турів методом обертання, кожна команда грає раз за тур, без повторних пар. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 13. Контрольна цифра картки
1. Початковий рівень. Створити консольну програму Java: ввести 16 ASCII-цифр навчального номера; перевірити Луна, подвоюючи кожну другу справа після контрольної, віднімаючи 9 понад 9; вивести коректність і лише останні чотири цифри з маскою. Подати UML класів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести 16 ASCII-цифр навчального номера; перевірити Луна, подвоюючи кожну другу справа після контрольної, віднімаючи 9 понад 9; вивести коректність і лише останні чотири цифри з маскою. Подати UML класів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести 16 ASCII-цифр навчального номера; перевірити Луна, подвоюючи кожну другу справа після контрольної, віднімаючи 9 понад 9; вивести коректність і лише останні чотири цифри з маскою. Подати UML класів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: масив синтетичних номерів і підсумок правильних, не друкувати повні номери. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 14. Довга арифметика
1. Початковий рівень. Створити консольну програму Java: ввести два невід’ємні десяткові числа до 100 цифр; зберегти цифри в масивах і додати з переносом без BigInteger; вивести нормалізовану суму. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести два невід’ємні десяткові числа до 100 цифр; зберегти цифри в масивах і додати з переносом без BigInteger; вивести нормалізовану суму. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести два невід’ємні десяткові числа до 100 цифр; зберегти цифри в масивах і додати з переносом без BigInteger; вивести нормалізовану суму. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: множення стовпчиком з масивом переносів і перевірками нулів та ведучих нулів. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 15. Рекурсивні задачі
1. Початковий рівень. Створити консольну програму Java: ввести кількість дисків 0..10; рекурсивний метод Ханоя виводить перенесення A→C через B і число кроків; вивести 0 кроків для нуля. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести кількість дисків 0..10; рекурсивний метод Ханоя виводить перенесення A→C через B і число кроків; вивести 0 кроків для нуля. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести кількість дисків 0..10; рекурсивний метод Ханоя виводить перенесення A→C через B і число кроків; вивести 0 кроків для нуля. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: швидке піднесення цілого −10..10 до степеня 0..18 з Math.multiplyExact і явно визначеним нульовим степенем 1. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 16. Таблиця з рядків
1. Початковий рівень. Створити консольну програму Java: ввести 1..20 рядків формату ім’я;ціна;кількість, роздільник у назві заборонений, ціна 0..100000 копійок, кількість 1..100; split з limit −1 зберігає порожні поля; вивести вирівняну таблицю та суму long. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести 1..20 рядків формату ім’я;ціна;кількість, роздільник у назві заборонений, ціна 0..100000 копійок, кількість 1..100; split з limit −1 зберігає порожні поля; вивести вирівняну таблицю та суму long. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести 1..20 рядків формату ім’я;ціна;кількість, роздільник у назві заборонений, ціна 0..100000 копійок, кількість 1..100; split з limit −1 зберігає порожні поля; вивести вирівняну таблицю та суму long. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: сортування рядків за назвою й окремий звіт помилкових рядків без зсуву колонок. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 17. Операції з матрицями
1. Початковий рівень. Створити консольну програму Java: ввести матрицю 1..10 на 1..10 із цілими −100..100; метод transpose повертає нову матрицю; вивести її й суми рядків. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести матрицю 1..10 на 1..10 із цілими −100..100; метод transpose повертає нову матрицю; вивести її й суми рядків. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести матрицю 1..10 на 1..10 із цілими −100..100; метод transpose повертає нову матрицю; вивести її й суми рядків. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: добуток двох сумісних матриць і сідлові точки, мінімальні в рядку та максимальні в стовпці. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 18. Пошук слова в сітці
1. Початковий рівень. Створити консольну програму Java: ввести сітку 1..20 на 1..20 із A..Z і слово довжини 1..20; метод шукає прямі збіги у восьми напрямках без циклічного переходу; вивести координати початку й напрям або none. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести сітку 1..20 на 1..20 із A..Z і слово довжини 1..20; метод шукає прямі збіги у восьми напрямках без циклічного переходу; вивести координати початку й напрям або none. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести сітку 1..20 на 1..20 із A..Z і слово довжини 1..20; метод шукає прямі збіги у восьми напрямках без циклічного переходу; вивести координати початку й напрям або none. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: усі збіги та кількість, для однолітерного слова кожну клітинку рахувати один раз. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 19. Стиснення RLE
1. Початковий рівень. Створити консольну програму Java: ввести непорожній рядок A..Z до 200 символів; кодувати кожну серію як літеру і десяткову довжину, наприклад AAABB→A3B2; вивести код і результат декодування. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести непорожній рядок A..Z до 200 символів; кодувати кожну серію як літеру і десяткову довжину, наприклад AAABB→A3B2; вивести код і результат декодування. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести непорожній рядок A..Z до 200 символів; кодувати кожну серію як літеру і десяткову довжину, наприклад AAABB→A3B2; вивести код і результат декодування. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: перевірку формату коду, довжин 1..200 та загальної розпакованої довжини до 200. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 20. Лабіринт
1. Початковий рівень. Створити консольну програму Java: ввести поле до 10 на 10 із 0 для проходу й 1 для стіни та старт і фініш; рекурсивний пошук у чотирьох напрямках позначає відвідані клітини; вивести будь-який шлях або none. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести поле до 10 на 10 із 0 для проходу й 1 для стіни та старт і фініш; рекурсивний пошук у чотирьох напрямках позначає відвідані клітини; вивести будь-який шлях або none. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести поле до 10 на 10 із 0 для проходу й 1 для стіни та старт і фініш; рекурсивний пошук у чотирьох напрямках позначає відвідані клітини; вивести будь-який шлях або none. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: показ маршруту окремими символами й захист від повторного відвідування. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 21. Навчальні автомобільні номери
1. Початковий рівень. Створити консольну програму Java: ввести рядок формату дві літери, чотири цифри, дві літери без пробілів; дозволений набір ABCEHIKMOPTX, regex перевіряє лише форму, не реєстрацію; вивести групи або відмову. Подати UML класів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести рядок формату дві літери, чотири цифри, дві літери без пробілів; дозволений набір ABCEHIKMOPTX, regex перевіряє лише форму, не реєстрацію; вивести групи або відмову. Подати UML класів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести рядок формату дві літери, чотири цифри, дві літери без пробілів; дозволений набір ABCEHIKMOPTX, regex перевіряє лише форму, не реєстрацію; вивести групи або відмову. Подати UML класів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: нормалізацію крайових пробілів і регістру та статистику синтетичних номерів. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 22. Телефонний довідник
1. Початковий рівень. Створити консольну програму Java: ввести до 20 латинських прізвищ і рядків із 10 цифр; сортувати паралельні масиви за прізвищем і шукати бінарно; вивести телефон або none, дублікати прізвищ заборонені. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести до 20 латинських прізвищ і рядків із 10 цифр; сортувати паралельні масиви за прізвищем і шукати бінарно; вивести телефон або none, дублікати прізвищ заборонені. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести до 20 латинських прізвищ і рядків із 10 цифр; сортувати паралельні масиви за прізвищем і шукати бінарно; вивести телефон або none, дублікати прізвищ заборонені. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: додавання запису зі збереженням порядку та незалежні копії масивів. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 23. Зал кінотеатру
1. Початковий рівень. Створити консольну програму Java: ввести розміри 1..20 і матрицю 0/1 та координату вільного місця; метод бронює лише 0; вивести карту й кількість вільних. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести розміри 1..20 і матрицю 0/1 та координату вільного місця; метод бронює лише 0; вивести карту й кількість вільних. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести розміри 1..20 і матрицю 0/1 та координату вільного місця; метод бронює лише 0; вивести карту й кількість вільних. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: пошук першого блоку k=1..число стовпців сусідніх вільних місць в одному рядку без зміни при відсутності. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 24. Хрестики-нулики
1. Початковий рівень. Створити консольну програму Java: ввести дев’ять символів X, O, крапка; метод перевіряє три рядки, три стовпці та дві діагоналі, виводить X/O/draw/continue; відхилити одночасну перемогу обох. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести дев’ять символів X, O, крапка; метод перевіряє три рядки, три стовпці та дві діагоналі, виводить X/O/draw/continue; відхилити одночасну перемогу обох. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести дев’ять символів X, O, крапка; метод перевіряє три рядки, три стовпці та дві діагоналі, виводить X/O/draw/continue; відхилити одночасну перемогу обох. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: послідовну гру, де комп’ютер ставить O в першу вільну клітинку після перевірки перемоги. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 25. Поліноми
1. Початковий рівень. Створити консольну програму Java: ввести коефіцієнти степенів 0..n, n 0..10, і x у межах −10..10; метод Горнера обчислює значення з Math.addExact/multiplyExact; вивести результат. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести коефіцієнти степенів 0..n, n 0..10, і x у межах −10..10; метод Горнера обчислює значення з Math.addExact/multiplyExact; вивести результат. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести коефіцієнти степенів 0..n, n 0..10, і x у межах −10..10; метод Горнера обчислює значення з Math.addExact/multiplyExact; вивести результат. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: суму й добуток масивів коефіцієнтів та похідну, нульовий поліном подати одним нулем. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 26. Генератор HTML
1. Початковий рівень. Створити консольну програму Java: ввести до 20 імен і оцінок 0..100; StringBuilder створює рядки таблиці, текстовий блок – оболонку, амперсанд і кутові дужки в імені екрануються; вивести HTML. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести до 20 імен і оцінок 0..100; StringBuilder створює рядки таблиці, текстовий блок – оболонку, амперсанд і кутові дужки в імені екрануються; вивести HTML. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести до 20 імен і оцінок 0..100; StringBuilder створює рядки таблиці, текстовий блок – оболонку, амперсанд і кутові дужки в імені екрануються; вивести HTML. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: колонку номера, середню оцінку й перевірку порожнього набору без ділення на нуль. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 27. Дати в тексті
1. Початковий рівень. Створити консольну програму Java: ввести текст до 1000 символів; Pattern/Matcher шукає фрагменти dd.mm.yyyy, перевірити день 1..31, місяць 1..12, рік 2000..2100; вивести кандидати yyyy-mm-dd, позначивши, що це ще не повна календарна перевірка. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести текст до 1000 символів; Pattern/Matcher шукає фрагменти dd.mm.yyyy, перевірити день 1..31, місяць 1..12, рік 2000..2100; вивести кандидати yyyy-mm-dd, позначивши, що це ще не повна календарна перевірка. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести текст до 1000 символів; Pattern/Matcher шукає фрагменти dd.mm.yyyy, перевірити день 1..31, місяць 1..12, рік 2000..2100; вивести кандидати yyyy-mm-dd, позначивши, що це ще не повна календарна перевірка. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: кількість днів у місяці й високосність року: кратність 4, крім кратних 100 без кратності 400. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 28. Кроки за місяць
1. Початковий рівень. Створити консольну програму Java: ввести 28..31 цілих кількостей 0..100000; методи повертають суму long і перший день максимуму; вивести результати. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести 28..31 цілих кількостей 0..100000; методи повертають суму long і перший день максимуму; вивести результати. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести 28..31 цілих кількостей 0..100000; методи повертають суму long і перший день максимуму; вивести результати. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: суми послідовних блоків по 7 днів, останній може бути коротшим, і найдовшу серію днів не менше 10000 кроків. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 29. Вісім ферзів
1. Початковий рівень. Створити консольну програму Java: ввести n=1..8; рекурсивно розставити по одному ферзю в рядку без спільного стовпця й діагоналей; вивести перший розв’язок або none. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести n=1..8; рекурсивно розставити по одному ферзю в рядку без спільного стовпця й діагоналей; вивести перший розв’язок або none. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести n=1..8; рекурсивно розставити по одному ферзю в рядку без спільного стовпця й діагоналей; вивести перший розв’язок або none. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: усі розв’язки й кількість без ототожнення симетричних, для n 8 перевірити 92. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 30. Азбука Морзе
1. Початковий рівень. Створити консольну програму Java: ввести ASCII-літери A..Z і пробіли; таблиці двох паралельних масивів задають міжнародні коди 26 літер, літери розділяти пробілом, слова – косою рискою; вивести код. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням.
2. Базовий рівень. Створити консольну програму Java: ввести ASCII-літери A..Z і пробіли; таблиці двох паралельних масивів задають міжнародні коди 26 літер, літери розділяти пробілом, слова – косою рискою; вивести код. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести ASCII-літери A..Z і пробіли; таблиці двох паралельних масивів задають міжнародні коди 26 літер, літери розділяти пробілом, слова – косою рискою; вивести код. Подати схему викликів методів; виділити статичні методи з параметрами й результатами, документувати передумови та не змішувати обчислення з консольним введенням. Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: декодування з відмовою на невідомому коді та перевірку round-trip нормалізованого тексту. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Порядок виконання та захисту роботи
- Визначте формат введення, межі й порожні випадки.
- Запишіть сигнатури методів і їхні контракти.
- Відокремте введення, перевірку, обчислення та друк.
- Перевірте індекси та незалежність копій масивів.
- Для тексту вкажіть алфавіт і рівень Unicode-обробки.
- Подайте звичайний, граничний і неправильний вводи.
- Для поглибленого рівня продемонструйте help і коди виходу.
- На захисті поясніть параметри й стек рекурсії.