Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Варіанти
Варіант 1. Калькулятор
1. Початковий рівень. Створити консольну програму Kotlin: читати рядок a op b, a/b скінченні від −1000 до 1000, op лише +,-,*,/; вивести результат, ділення на 0 відхилити. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: читати рядок a op b, a/b скінченні від −1000 до 1000, op лише +,-,*,/; вивести результат, ділення на 0 відхилити. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: читати рядок a op b, a/b скінченні від −1000 до 1000, op лише +,-,*,/; вивести результат, ділення на 0 відхилити. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 2. Налаштування
1. Початковий рівень. Створити консольну програму Kotlin: читати рядок limit=число; дозволити лише ключ limit і ціле 1–100, вивести прийняте значення. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: читати рядок limit=число; дозволити лише ключ limit і ціле 1–100, вивести прийняте значення. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: читати рядок limit=число; дозволити лише ключ limit і ціле 1–100, вивести прийняте значення. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 3. Переказ
1. Початковий рівень. Створити консольну програму Kotlin: читати from,to,amount цілими копійками 0–1000000; amount>0 і <=from, to+amount<=1000000; повернути обидва нові баланси лише після перевірки. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: читати from,to,amount цілими копійками 0–1000000; amount>0 і <=from, to+amount<=1000000; повернути обидва нові баланси лише після перевірки. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: читати from,to,amount цілими копійками 0–1000000; amount>0 і <=from, to+amount<=1000000; повернути обидва нові баланси лише після перевірки. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 4. Одиниці
1. Початковий рівень. Створити консольну програму Kotlin: читати число 0–1000000 й одиницю m, cm, km; перетворити в метри, невідому одиницю відхилити. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: читати число 0–1000000 й одиницю m, cm, km; перетворити в метри, невідому одиницю відхилити. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: читати число 0–1000000 й одиницю m, cm, km; перетворити в метри, невідому одиницю відхилити. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 5. Місця
1. Початковий рівень. Створити консольну програму Kotlin: задати 20 місць, зайнятими є 3 і 7; читати номер 1–20 і вивести підтвердження лише для вільного. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: задати 20 місць, зайнятими є 3 і 7; читати номер 1–20 і вивести підтвердження лише для вільного. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: задати 20 місць, зайнятими є 3 і 7; читати номер 1–20 і вивести підтвердження лише для вільного. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 6. Дати
1. Початковий рівень. Створити консольну програму Kotlin: читати ISO дату yyyy-MM-dd; через java.time.LocalDate перевірити календарну коректність і вивести день року. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: читати ISO дату yyyy-MM-dd; через java.time.LocalDate перевірити календарну коректність і вивести день року. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: читати ISO дату yyyy-MM-dd; через java.time.LocalDate перевірити календарну коректність і вивести день року. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 7. Склад
1. Початковий рівень. Створити консольну програму Kotlin: задати залишок 100 одиниць; читати додатне списання 1–1000, перевірити достатність і вивести новий залишок. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: задати залишок 100 одиниць; читати додатне списання 1–1000, перевірити достатність і вивести новий залишок. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: задати залишок 100 одиниць; читати додатне списання 1–1000, перевірити достатність і вивести новий залишок. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 8. Датчик
1. Початковий рівень. Створити консольну програму Kotlin: читати скінченну температуру −50..60; повернути Result із температурою або причиною відхилення. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: читати скінченну температуру −50..60; повернути Result із температурою або причиною відхилення. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: читати скінченну температуру −50..60; повернути Result із температурою або причиною відхилення. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 9. Реєстрація
1. Початковий рівень. Створити консольну програму Kotlin: читати логін із латинських літер/цифр довжиною 3–20 і цілий вік 18–120; вивести прийнятий логін або всі порушені правила. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: читати логін із латинських літер/цифр довжиною 3–20 і цілий вік 18–120; вивести прийнятий логін або всі порушені правила. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: читати логін із латинських літер/цифр довжиною 3–20 і цілий вік 18–120; вивести прийнятий логін або всі порушені правила. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 10. Платіж
1. Початковий рівень. Створити консольну програму Kotlin: читати суму 1–1000000 і цілий строк 1–120; обчислити рівний платіж без відсотків, неприпустимий ввід відхилити. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: читати суму 1–1000000 і цілий строк 1–120; обчислити рівний платіж без відсотків, неприпустимий ввід відхилити. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: читати суму 1–1000000 і цілий строк 1–120; обчислити рівний платіж без відсотків, неприпустимий ввід відхилити. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 11. Координати
1. Початковий рівень. Створити консольну програму Kotlin: читати latitude,longitude як скінченні числа; межі −90..90 і −180..180; вивести нормалізовану пару. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: читати latitude,longitude як скінченні числа; межі −90..90 і −180..180; вивести нормалізовану пару. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: читати latitude,longitude як скінченні числа; межі −90..90 і −180..180; вивести нормалізовану пару. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 12. Корінь
1. Початковий рівень. Створити консольну програму Kotlin: читати x 0–1000000; обчислити sqrt методом Ньютона з допуском 1e-8 та максимум 100 кроків; 0 повертає 0, незбіжність є помилкою. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: читати x 0–1000000; обчислити sqrt методом Ньютона з допуском 1e-8 та максимум 100 кроків; 0 повертає 0, незбіжність є помилкою. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: читати x 0–1000000; обчислити sqrt методом Ньютона з допуском 1e-8 та максимум 100 кроків; 0 повертає 0, незбіжність є помилкою. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 13. Час
1. Початковий рівень. Створити консольну програму Kotlin: читати HH:mm початку й завершення в межах однієї доби; завершення не раніше початку; вивести хвилини. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: читати HH:mm початку й завершення в межах однієї доби; завершення не раніше початку; вивести хвилини. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: читати HH:mm початку й завершення в межах однієї доби; завершення не раніше початку; вивести хвилини. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 14. Прямокутник
1. Початковий рівень. Створити консольну програму Kotlin: читати дві скінченні сторони прямокутника 0.1–10000; функція через require перевіряє контракт і повертає площу прямокутника. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: читати дві скінченні сторони прямокутника 0.1–10000; функція через require перевіряє контракт і повертає площу прямокутника. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: читати дві скінченні сторони прямокутника 0.1–10000; функція через require перевіряє контракт і повертає площу прямокутника. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 15. Картка
1. Початковий рівень. Створити консольну програму Kotlin: задати баланс 100000 коп і ліміт операції 20000 коп; читати додатну суму й вивести новий баланс після перевірки обох меж. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: задати баланс 100000 коп і ліміт операції 20000 коп; читати додатну суму й вивести новий баланс після перевірки обох меж. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: задати баланс 100000 коп і ліміт операції 20000 коп; читати додатну суму й вивести новий баланс після перевірки обох меж. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 16. Точна сума
1. Початковий рівень. Створити консольну програму Kotlin: читати два Long; виконати Math.addExact і відрізнити переповнення від неправильного формату. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: читати два Long; виконати Math.addExact і відрізнити переповнення від неправильного формату. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: читати два Long; виконати Math.addExact і відрізнити переповнення від неправильного формату. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 17. Римські числа
1. Початковий рівень. Створити консольну програму Kotlin: читати I, V, X, L, C, D або M; вивести 1, 5, 10, 50, 100, 500 або 1000; інший рядок відхилити. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: читати I, V, X, L, C, D або M; вивести 1, 5, 10, 50, 100, 500 або 1000; інший рядок відхилити. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: читати I, V, X, L, C, D або M; вивести 1, 5, 10, 50, 100, 500 або 1000; інший рядок відхилити. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 18. Запис на час
1. Початковий рівень. Створити консольну програму Kotlin: читати цілу годину 9–17; зайняті 10 і 14; вивести підтвердження лише вільної години, стан при помилці незмінний. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: читати цілу годину 9–17; зайняті 10 і 14; вивести підтвердження лише вільної години, стан при помилці незмінний. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: читати цілу годину 9–17; зайняті 10 і 14; вивести підтвердження лише вільної години, стан при помилці незмінний. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 19. CLI
1. Початковий рівень. Створити консольну програму Kotlin: читати аргументи --count N, N 1–100; відхилити невідомий прапорець, пропущене або зайве значення; вивести N. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: читати аргументи --count N, N 1–100; відхилити невідомий прапорець, пропущене або зайве значення; вивести N. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: читати аргументи --count N, N 1–100; відхилити невідомий прапорець, пропущене або зайве значення; вивести N. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 20. Лічильник
1. Початковий рівень. Створити консольну програму Kotlin: читати старий і новий показники лічильника як скінченні числа 0–100000; новий не менший за старий; вивести різницю – спожитий обсяг. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: читати старий і новий показники лічильника як скінченні числа 0–100000; новий не менший за старий; вивести різницю – спожитий обсяг. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: читати старий і новий показники лічильника як скінченні числа 0–100000; новий не менший за старий; вивести різницю – спожитий обсяг. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 21. Валюти
1. Початковий рівень. Створити консольну програму Kotlin: читати суму 0–100000 й валюту UAH/EUR; навчальний курс 45 UAH/EUR; повернути Result із сумою у гривнях. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: читати суму 0–100000 й валюту UAH/EUR; навчальний курс 45 UAH/EUR; повернути Result із сумою у гривнях. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: читати суму 0–100000 й валюту UAH/EUR; навчальний курс 45 UAH/EUR; повернути Result із сумою у гривнях. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 22. Оцінки
1. Початковий рівень. Створити консольну програму Kotlin: читати рядки до stop, оцінки 0–100; помилки рахувати й пропускати, у finally друкувати кількість спроб, середнє лише для непорожніх даних. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: читати рядки до stop, оцінки 0–100; помилки рахувати й пропускати, у finally друкувати кількість спроб, середнє лише для непорожніх даних. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: читати рядки до stop, оцінки 0–100; помилки рахувати й пропускати, у finally друкувати кількість спроб, середнє лише для непорожніх даних. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 23. Здоров’я персонажа
1. Початковий рівень. Створити консольну програму Kotlin: задати 100 одиниць здоров’я; читати шкоду 0–1000; повернути max(0,100-шкода), неправильний ввід не змінює здоров’я. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: задати 100 одиниць здоров’я; читати шкоду 0–1000; повернути max(0,100-шкода), неправильний ввід не змінює здоров’я. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: задати 100 одиниць здоров’я; читати шкоду 0–1000; повернути max(0,100-шкода), неправильний ввід не змінює здоров’я. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 24. Рейс
1. Початковий рівень. Створити консольну програму Kotlin: читати код із двох великих латинських літер і трьох цифр; перевірити весь рядок і вивести прийнятий код. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: читати код із двох великих латинських літер і трьох цифр; перевірити весь рядок і вивести прийнятий код. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: читати код із двох великих латинських літер і трьох цифр; перевірити весь рядок і вивести прийнятий код. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 25. Файл у пам’яті
1. Початковий рівень. Створити консольну програму Kotlin: читати текст рядків цілих чисел через StringReader; use має закривати ресурс, неправильний рядок дає номер помилки без часткової суми. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: читати текст рядків цілих чисел через StringReader; use має закривати ресурс, неправильний рядок дає номер помилки без часткової суми. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: читати текст рядків цілих чисел через StringReader; use має закривати ресурс, неправильний рядок дає номер помилки без часткової суми. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 26. Середнє
1. Початковий рівень. Створити консольну програму Kotlin: читати три скінченні числа −1000..1000; повернути середнє додатних або null, якщо таких немає. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: читати три скінченні числа −1000..1000; повернути середнє додатних або null, якщо таких немає. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: читати три скінченні числа −1000..1000; повернути середнє додатних або null, якщо таких немає. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 27. Індекс
1. Початковий рівень. Створити консольну програму Kotlin: задати рядок Kotlin; читати індекс 0–5 і повернути символ, неправильний індекс відхилити власним винятком. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: задати рядок Kotlin; читати індекс 0–5 і повернути символ, неправильний індекс відхилити власним винятком. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: задати рядок Kotlin; читати індекс 0–5 і повернути символ, неправильний індекс відхилити власним винятком. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 28. Пароль
1. Початковий рівень. Створити консольну програму Kotlin: читати синтетичний рядок 8–30 символів; перевірити латинську літеру й цифру; не друкувати сам пароль у повідомленні. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: читати синтетичний рядок 8–30 символів; перевірити латинську літеру й цифру; не друкувати сам пароль у повідомленні. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: читати синтетичний рядок 8–30 символів; перевірити латинську літеру й цифру; не друкувати сам пароль у повідомленні. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 29. Діапазон
1. Початковий рівень. Створити консольну програму Kotlin: читати цілі a,b у −10000..10000; a<=b; вивести суму включного діапазону у Long. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: читати цілі a,b у −10000..10000; a<=b; вивести суму включного діапазону у Long. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: читати цілі a,b у −10000..10000; a<=b; вивести суму включного діапазону у Long. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 30. Меню помилок
1. Початковий рівень. Створити консольну програму Kotlin: читати команди divide a b або exit; цілі a,b −1000..1000, b!=0; відхиляти невідому команду та продовжувати до exit/EOF. Оформити предметну функцію з явним контрактом, обробити очікувані винятки окремо від вводу та не друкувати успіх після помилки.
2. Базовий рівень. Створити консольну програму Kotlin: читати команди divide a b або exit; цілі a,b −1000..1000, b!=0; відхиляти невідому команду та продовжувати до exit/EOF. Описати предметну помилку власним типом, зберегти cause під час обгортання; перевірити нормальний, граничний і неправильний ввід та незмінність стану після збою.
3. Високий рівень. Створити консольну програму Kotlin: читати команди divide a b або exit; цілі a,b −1000..1000, b!=0; відхиляти невідому команду та продовжувати до exit/EOF. Повернути результат предметної операції як Result і явно обробити через fold; не перехоплювати всю програму одним catch Throwable. Для CLI помилка дає stderr і код 2, успіх – код 0. Додати не менше п’яти перевірок, відтворити один збій у налагоджувачі й пояснити стек та стан. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Порядок виконання та захисту роботи
- Запишіть нормальний результат та контракт помилки.
- Відокремте предметну функцію від вводу й завершення процесу.
- Використайте вузькі обробники та зрозумілі повідомлення.
- Перевірте незмінність стану після невдалої операції.
- Відтворіть один збій, поясніть стек і стан у налагоджувачі.
- Додайте перевірку, яка виявляє знайдену логічну помилку.
- Подайте код, таблицю сценаріїв, коди завершення та висновок.