Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Використайте Kotlin/JVM, JDK 27, UTF-8, зафіксовані залежності й окремі тимчасові теки для тестів. Повністю опишіть формат входу й політику пошкодженого файла; не замінюйте його мовчки порожніми даними.
Варіанти
Варіант 1. Адресна книга
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: id:Int, name:String, phone:String. Перевірити: унікальні додатні id, непорожні ім’я й телефон. Реалізувати пошук за префіксом імені. Вхід – UTF-8 TSV із заголовком у вказаному порядку; табуляції та переноси у полях заборонені. Шляхи передавати аргументами. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: id:Int, name:String, phone:String. Перевірити: унікальні додатні id, непорожні ім’я й телефон. Реалізувати пошук за префіксом імені. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: id:Int, name:String, phone:String. Перевірити: унікальні додатні id, непорожні ім’я й телефон. Реалізувати пошук за префіксом імені. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 2. Нотатки
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: id:Int, text:String. Перевірити: унікальні додатні id та непорожній текст. Реалізувати CRUD і порядок за id. Вхід – UTF-8 TSV із заголовком у вказаному порядку; табуляції та переноси у полях заборонені. Шляхи передавати аргументами. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: id:Int, text:String. Перевірити: унікальні додатні id та непорожній текст. Реалізувати CRUD і порядок за id. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: id:Int, text:String. Перевірити: унікальні додатні id та непорожній текст. Реалізувати CRUD і порядок за id. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 3. Облік витрат
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: date:ISO, category:String, cents:Long. Перевірити: непорожня категорія, невід’ємні копійки. Реалізувати місячні суми за категоріями. Вхід – UTF-8 TSV із заголовком у вказаному порядку; табуляції та переноси у полях заборонені. Шляхи передавати аргументами. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: date:ISO, category:String, cents:Long. Перевірити: непорожня категорія, невід’ємні копійки. Реалізувати місячні суми за категоріями. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: date:ISO, category:String, cents:Long. Перевірити: непорожня категорія, невід’ємні копійки. Реалізувати місячні суми за категоріями. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 4. Налаштування гри
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: name:String, volume:Int, fullscreen:Boolean. Перевірити: непорожня назва, volume 0..100. Реалізувати типові volume=50 та fullscreen=false. Вхід – UTF-8 TSV із заголовком у вказаному порядку; табуляції та переноси у полях заборонені. Шляхи передавати аргументами. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: name:String, volume:Int, fullscreen:Boolean. Перевірити: непорожня назва, volume 0..100. Реалізувати типові volume=50 та fullscreen=false. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: name:String, volume:Int, fullscreen:Boolean. Перевірити: непорожня назва, volume 0..100. Реалізувати типові volume=50 та fullscreen=false. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 5. Журнал тренувань
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: date:ISO, activity:String, minutes:Int. Перевірити: непорожня активність і хвилини 1..1440. Реалізувати суму хвилин за активностями; дані умовні. Вхід – UTF-8 TSV із заголовком у вказаному порядку; табуляції та переноси у полях заборонені. Шляхи передавати аргументами. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: date:ISO, activity:String, minutes:Int. Перевірити: непорожня активність і хвилини 1..1440. Реалізувати суму хвилин за активностями; дані умовні. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: date:ISO, activity:String, minutes:Int. Перевірити: непорожня активність і хвилини 1..1440. Реалізувати суму хвилин за активностями; дані умовні. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 6. Медіатека
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: id:Int, kind:film/series/podcast, title:String, minutes:Int. Перевірити: унікальні id, непорожня назва, додатна тривалість. Реалізувати підсумки тривалості за видом; sealed-схема для JSON. Вхід – UTF-8 TSV із заголовком у вказаному порядку; табуляції та переноси у полях заборонені. Шляхи передавати аргументами. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: id:Int, kind:film/series/podcast, title:String, minutes:Int. Перевірити: унікальні id, непорожня назва, додатна тривалість. Реалізувати підсумки тривалості за видом; sealed-схема для JSON. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: id:Int, kind:film/series/podcast, title:String, minutes:Int. Перевірити: унікальні id, непорожня назва, додатна тривалість. Реалізувати підсумки тривалості за видом; sealed-схема для JSON. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 7. Розклад занять
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: day:Int, start:Int, end:Int, room:String. Перевірити: день 1..7, 0<=start<end<=1440, кімната непорожня. Реалізувати перетини напіввідкритих інтервалів однієї кімнати. Вхід – UTF-8 TSV із заголовком у вказаному порядку; табуляції та переноси у полях заборонені. Шляхи передавати аргументами. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: day:Int, start:Int, end:Int, room:String. Перевірити: день 1..7, 0<=start<end<=1440, кімната непорожня. Реалізувати перетини напіввідкритих інтервалів однієї кімнати. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: day:Int, start:Int, end:Int, room:String. Перевірити: день 1..7, 0<=start<end<=1440, кімната непорожня. Реалізувати перетини напіввідкритих інтервалів однієї кімнати. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 8. Оцінки групи
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: id:Int, name:String, score:Int. Перевірити: унікальні id, ім’я непорожнє, score 0..100. Реалізувати середнє й частку балів не менше 60. Вхід – UTF-8 TSV із заголовком у вказаному порядку; табуляції та переноси у полях заборонені. Шляхи передавати аргументами. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: id:Int, name:String, score:Int. Перевірити: унікальні id, ім’я непорожнє, score 0..100. Реалізувати середнє й частку балів не менше 60. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: id:Int, name:String, score:Int. Перевірити: унікальні id, ім’я непорожнє, score 0..100. Реалізувати середнє й частку балів не менше 60. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 9. Інвентаризація
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: code:String, count:Int. Перевірити: унікальні непорожні коди й невід’ємні кількості. Реалізувати різницю двох знімків складу за кодами. Вхід – UTF-8 TSV із заголовком у вказаному порядку; табуляції та переноси у полях заборонені. Шляхи передавати аргументами. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: code:String, count:Int. Перевірити: унікальні непорожні коди й невід’ємні кількості. Реалізувати різницю двох знімків складу за кодами. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: code:String, count:Int. Перевірити: унікальні непорожні коди й невід’ємні кількості. Реалізувати різницю двох знімків складу за кодами. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 10. Аналіз логів
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: time:ISO, level:INFO/WARN/ERROR, message:String. Перевірити: правильний час, дозволений рівень, непорожнє повідомлення. Реалізувати кількості рівнів і список помилок. Вхід – UTF-8 TSV із заголовком у вказаному порядку; табуляції та переноси у полях заборонені. Шляхи передавати аргументами. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: time:ISO, level:INFO/WARN/ERROR, message:String. Перевірити: правильний час, дозволений рівень, непорожнє повідомлення. Реалізувати кількості рівнів і список помилок. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: time:ISO, level:INFO/WARN/ERROR, message:String. Перевірити: правильний час, дозволений рівень, непорожнє повідомлення. Реалізувати кількості рівнів і список помилок. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 11. Кулінарна книга
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: name:String, portions:Int, ingredient:String, grams:Int. Перевірити: порції 1..100, грами додатні, назви непорожні. Реалізувати масштабування на задані порції з явним округленням. Вхід – UTF-8 TSV із заголовком у вказаному порядку; табуляції та переноси у полях заборонені. Шляхи передавати аргументами. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: name:String, portions:Int, ingredient:String, grams:Int. Перевірити: порції 1..100, грами додатні, назви непорожні. Реалізувати масштабування на задані порції з явним округленням. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: name:String, portions:Int, ingredient:String, grams:Int. Перевірити: порції 1..100, грами додатні, назви непорожні. Реалізувати масштабування на задані порції з явним округленням. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 12. Термінологічний словник
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: term:String, definition:String. Перевірити: унікальні терміни і непорожні визначення. Реалізувати пошук терміна без урахування регістру. Вхід – UTF-8 TSV із заголовком у вказаному порядку; табуляції та переноси у полях заборонені. Шляхи передавати аргументами. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: term:String, definition:String. Перевірити: унікальні терміни і непорожні визначення. Реалізувати пошук терміна без урахування регістру. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: term:String, definition:String. Перевірити: унікальні терміни і непорожні визначення. Реалізувати пошук терміна без урахування регістру. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 13. Список справ
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: id:Int, text:String, due:ISO, done:Boolean. Перевірити: додатні унікальні id, непорожній текст, правильна дата. Реалізувати прострочені незавершені на введену дату; LocalDate-серіалізатор. Вхід – UTF-8 TSV із заголовком у вказаному порядку; табуляції та переноси у полях заборонені. Шляхи передавати аргументами. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: id:Int, text:String, due:ISO, done:Boolean. Перевірити: додатні унікальні id, непорожній текст, правильна дата. Реалізувати прострочені незавершені на введену дату; LocalDate-серіалізатор. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: id:Int, text:String, due:ISO, done:Boolean. Перевірити: додатні унікальні id, непорожній текст, правильна дата. Реалізувати прострочені незавершені на введену дату; LocalDate-серіалізатор. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 14. Аналіз теки
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: path:String, bytes:Long. Перевірити: лише файли заданої теки; невід’ємні байти. Реалізувати рекурсивний звіт без переходу за символічними посиланнями. Шлях вхідної теки й окремий шлях звіту передавати аргументами; помилку доступу показувати явно. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: path:String, bytes:Long. Перевірити: лише файли заданої теки; невід’ємні байти. Реалізувати рекурсивний звіт без переходу за символічними посиланнями. Шлях вхідної теки й окремий шлях звіту передавати аргументами; помилку доступу показувати явно. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: path:String, bytes:Long. Перевірити: лише файли заданої теки; невід’ємні байти. Реалізувати рекурсивний звіт без переходу за символічними посиланнями. Шлях вхідної теки й окремий шлях звіту передавати аргументами; помилку доступу показувати явно. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 15. Метеоспостереження
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: station:String, date:ISO, temperature:Double. Перевірити: скінченна температура, непорожня станція, унікальна пара. Реалізувати min/max/mean за станцією. Вхід – UTF-8 TSV із заголовком у вказаному порядку; табуляції та переноси у полях заборонені. Шляхи передавати аргументами. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: station:String, date:ISO, temperature:Double. Перевірити: скінченна температура, непорожня станція, унікальна пара. Реалізувати min/max/mean за станцією. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: station:String, date:ISO, temperature:Double. Перевірити: скінченна температура, непорожня станція, унікальна пара. Реалізувати min/max/mean за станцією. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 16. Видача книг
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: bookId:Int, reader:String, due:ISO, returned:Boolean. Перевірити: додатний id, непорожній умовний читач, правильна дата. Реалізувати прострочення на задану дату. Вхід – UTF-8 TSV із заголовком у вказаному порядку; табуляції та переноси у полях заборонені. Шляхи передавати аргументами. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: bookId:Int, reader:String, due:ISO, returned:Boolean. Перевірити: додатний id, непорожній умовний читач, правильна дата. Реалізувати прострочення на задану дату. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: bookId:Int, reader:String, due:ISO, returned:Boolean. Перевірити: додатний id, непорожній умовний читач, правильна дата. Реалізувати прострочення на задану дату. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 17. Футбольний турнір
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: home:String, away:String, homeGoals:Int, awayGoals:Int. Перевірити: різні непорожні команди й невід’ємні голи. Реалізувати таблицю очок 3/1/0, різниці м’ячів і назви. Вхід – UTF-8 TSV із заголовком у вказаному порядку; табуляції та переноси у полях заборонені. Шляхи передавати аргументами. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: home:String, away:String, homeGoals:Int, awayGoals:Int. Перевірити: різні непорожні команди й невід’ємні голи. Реалізувати таблицю очок 3/1/0, різниці м’ячів і назви. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: home:String, away:String, homeGoals:Int, awayGoals:Int. Перевірити: різні непорожні команди й невід’ємні голи. Реалізувати таблицю очок 3/1/0, різниці м’ячів і назви. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 18. Вікторина
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: id:Int, question:String, answer:A/B/C. Перевірити: унікальні id, непорожнє питання, правильний код. Реалізувати оцінювання введених відповідей і файл результатів. Вхід – UTF-8 TSV із заголовком у вказаному порядку; табуляції та переноси у полях заборонені. Шляхи передавати аргументами. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: id:Int, question:String, answer:A/B/C. Перевірити: унікальні id, непорожнє питання, правильний код. Реалізувати оцінювання введених відповідей і файл результатів. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: id:Int, question:String, answer:A/B/C. Перевірити: унікальні id, непорожнє питання, правильний код. Реалізувати оцінювання введених відповідей і файл результатів. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 19. Облік пального
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: date:ISO, distanceKm:Double, liters:Double. Перевірити: скінченні невід’ємні кілометри й додатні літри. Реалізувати літри на 100 км для сумарного ненульового пробігу. Вхід – UTF-8 TSV із заголовком у вказаному порядку; табуляції та переноси у полях заборонені. Шляхи передавати аргументами. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: date:ISO, distanceKm:Double, liters:Double. Перевірити: скінченні невід’ємні кілометри й додатні літри. Реалізувати літри на 100 км для сумарного ненульового пробігу. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: date:ISO, distanceKm:Double, liters:Double. Перевірити: скінченні невід’ємні кілометри й додатні літри. Реалізувати літри на 100 км для сумарного ненульового пробігу. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 20. Меню кафе
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: code:String, name:String, cents:Long. Перевірити: унікальні коди, непорожні назви, невід’ємна ціна. Реалізувати чек за кодами й кількостями 1..1000. Вхід – UTF-8 TSV із заголовком у вказаному порядку; табуляції та переноси у полях заборонені. Шляхи передавати аргументами. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: code:String, name:String, cents:Long. Перевірити: унікальні коди, непорожні назви, невід’ємна ціна. Реалізувати чек за кодами й кількостями 1..1000. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: code:String, name:String, cents:Long. Перевірити: унікальні коди, непорожні назви, невід’ємна ціна. Реалізувати чек за кодами й кількостями 1..1000. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 21. Карта щеплень
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: eventId:Int, label:String, planned:ISO. Перевірити: лише вигадані події, додатні унікальні id та правильні дати. Реалізувати події на наступні 7 днів від введеної дати; без визначення медичних графіків. Вхід – UTF-8 TSV із заголовком у вказаному порядку; табуляції та переноси у полях заборонені. Шляхи передавати аргументами. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: eventId:Int, label:String, planned:ISO. Перевірити: лише вигадані події, додатні унікальні id та правильні дати. Реалізувати події на наступні 7 днів від введеної дати; без визначення медичних графіків. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: eventId:Int, label:String, planned:ISO. Перевірити: лише вигадані події, додатні унікальні id та правильні дати. Реалізувати події на наступні 7 днів від введеної дати; без визначення медичних графіків. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 22. Банківська виписка
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: date:ISO, category:String, cents:Long. Перевірити: правильна дата й непорожня категорія. Реалізувати додатні надходження, від’ємні витрати та баланс. Вхід – UTF-8 TSV із заголовком у вказаному порядку; табуляції та переноси у полях заборонені. Шляхи передавати аргументами. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: date:ISO, category:String, cents:Long. Перевірити: правильна дата й непорожня категорія. Реалізувати додатні надходження, від’ємні витрати та баланс. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: date:ISO, category:String, cents:Long. Перевірити: правильна дата й непорожня категорія. Реалізувати додатні надходження, від’ємні витрати та баланс. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 23. Туристичні маршрути
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: route:String, order:Int, x:Double, y:Double. Перевірити: непорожній маршрут, унікальна позиція, скінченні умовні координати. Реалізувати довжину ламаної в декартових одиницях. Вхід – UTF-8 TSV із заголовком у вказаному порядку; табуляції та переноси у полях заборонені. Шляхи передавати аргументами. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: route:String, order:Int, x:Double, y:Double. Перевірити: непорожній маршрут, унікальна позиція, скінченні умовні координати. Реалізувати довжину ламаної в декартових одиницях. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: route:String, order:Int, x:Double, y:Double. Перевірити: непорожній маршрут, унікальна позиція, скінченні умовні координати. Реалізувати довжину ламаної в декартових одиницях. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 24. Резервне копіювання
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: relativePath:String, size:Long, modified:ISO. Перевірити: шляхи лише всередині заданої вхідної теки, без посилань. Реалізувати копіювання нових/змінених файлів до окремої теки й маніфест. Шлях вхідної теки й окремий шлях звіту передавати аргументами; помилку доступу показувати явно. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: relativePath:String, size:Long, modified:ISO. Перевірити: шляхи лише всередині заданої вхідної теки, без посилань. Реалізувати копіювання нових/змінених файлів до окремої теки й маніфест. Шлях вхідної теки й окремий шлях звіту передавати аргументами; помилку доступу показувати явно. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: relativePath:String, size:Long, modified:ISO. Перевірити: шляхи лише всередині заданої вхідної теки, без посилань. Реалізувати копіювання нових/змінених файлів до окремої теки й маніфест. Шлях вхідної теки й окремий шлях звіту передавати аргументами; помилку доступу показувати явно. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 25. Музична колекція
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: id:Int, title:String, artist:String, seconds:Int. Перевірити: унікальні id, непорожні назви, додатні секунди. Реалізувати пошук виконавця й тривалість добірки. Вхід – UTF-8 TSV із заголовком у вказаному порядку; табуляції та переноси у полях заборонені. Шляхи передавати аргументами. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: id:Int, title:String, artist:String, seconds:Int. Перевірити: унікальні id, непорожні назви, додатні секунди. Реалізувати пошук виконавця й тривалість добірки. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: id:Int, title:String, artist:String, seconds:Int. Перевірити: унікальні id, непорожні назви, додатні секунди. Реалізувати пошук виконавця й тривалість добірки. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 26. Шкільна олімпіада
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: id:Int, name:String, score:Int. Перевірити: унікальні id, умовні імена, score 0..100. Реалізувати рейтинг бал спадно/ім’я/id. Вхід – UTF-8 TSV із заголовком у вказаному порядку; табуляції та переноси у полях заборонені. Шляхи передавати аргументами. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: id:Int, name:String, score:Int. Перевірити: унікальні id, умовні імена, score 0..100. Реалізувати рейтинг бал спадно/ім’я/id. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: id:Int, name:String, score:Int. Перевірити: унікальні id, умовні імена, score 0..100. Реалізувати рейтинг бал спадно/ім’я/id. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 27. Показання лічильників
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: meter:String, date:ISO, value:Long, tariffCents:Long. Перевірити: унікальна пара, невід’ємні значення й тариф. Реалізувати різницю сусідніх показань, спад відхилити, ціна Long. Вхід – UTF-8 TSV із заголовком у вказаному порядку; табуляції та переноси у полях заборонені. Шляхи передавати аргументами. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: meter:String, date:ISO, value:Long, tariffCents:Long. Перевірити: унікальна пара, невід’ємні значення й тариф. Реалізувати різницю сусідніх показань, спад відхилити, ціна Long. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: meter:String, date:ISO, value:Long, tariffCents:Long. Перевірити: унікальна пара, невід’ємні значення й тариф. Реалізувати різницю сусідніх показань, спад відхилити, ціна Long. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 28. Збереження гри
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: version:Int, player:String, level:Int, points:Long. Перевірити: version=1, непорожнє ім’я, level 1..100, невід’ємні очки. Реалізувати round-trip стану і явну відмову невідомої версії. Вхід – UTF-8 TSV із заголовком у вказаному порядку; табуляції та переноси у полях заборонені. Шляхи передавати аргументами. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: version:Int, player:String, level:Int, points:Long. Перевірити: version=1, непорожнє ім’я, level 1..100, невід’ємні очки. Реалізувати round-trip стану і явну відмову невідомої версії. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: version:Int, player:String, level:Int, points:Long. Перевірити: version=1, непорожнє ім’я, level 1..100, невід’ємні очки. Реалізувати round-trip стану і явну відмову невідомої версії. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 29. Словник синонімів
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: word:String, synonym:String. Перевірити: непорожні різні слова, без повторних пар. Реалізувати симетричний пошук і пов’язану компоненту. Вхід – UTF-8 TSV із заголовком у вказаному порядку; табуляції та переноси у полях заборонені. Шляхи передавати аргументами. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: word:String, synonym:String. Перевірити: непорожні різні слова, без повторних пар. Реалізувати симетричний пошук і пов’язану компоненту. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: word:String, synonym:String. Перевірити: непорожні різні слова, без повторних пар. Реалізувати симетричний пошук і пов’язану компоненту. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 30. Розклад поїздів
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: id:String, from:String, to:String, departure:ISO, arrival:ISO. Перевірити: унікальний id, різні станції, arrival після departure. Реалізувати пошук прямих поїздок після заданого моменту. Вхід – UTF-8 TSV із заголовком у вказаному порядку; табуляції та переноси у полях заборонені. Шляхи передавати аргументами. Вивести текстовий звіт. Написати два kotlin.test тести обчислення й неправильного значення. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: id:String, from:String, to:String, departure:ISO, arrival:ISO. Перевірити: унікальний id, різні станції, arrival після departure. Реалізувати пошук прямих поїздок після заданого моменту. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable та JSON-збереження; перевірити весь вхід до запису. Додати чотири тести: round-trip, порожній набір, межа і неправильний формат. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27. Схема: id:String, from:String, to:String, departure:ISO, arrival:ISO. Перевірити: унікальний id, різні станції, arrival після departure. Реалізувати пошук прямих поїздок після заданого моменту. Вхід – JSON-масив об’єктів указаних полів; шляхи вхідного і окремого вихідного файлів передавати аргументами. Використати @Serializable; винести сховище в клас, реалізувати заміну через тимчасовий файл із явною політикою ATOMIC_MOVE. Додати мінімум шість тестів із @TempDir: round-trip, відсутній файл, пошкоджений формат, неправильні дані, порожній набір і збереження попереднього файлу при відмові. Порожній звіт не повинен ділити на нуль; гроші обчислювати без переповнення. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Порядок виконання та захисту роботи
- Визначте схему запису, кодування, обмеження й версію формату.
- Відокремте предметні обчислення від файлових операцій.
- Додайте декодування, перевірку даних, збереження й зрозумілі відмови.
- Перевірте round-trip, відсутній файл, неправильний формат і межі.
- Покажіть, що тести використовують тимчасову теку та не залежать від порядку.
- Запустіть
gradlew test, додайте фактичний звіт і таблицю перевірок. - Збережіть код, Gradle Wrapper і README без build та локальних даних.