Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Використайте Kotlin/JVM на JDK 27. Відокремте читання, обчислення й форматування; визначте алфавіт, межі чисел, поведінку порожнього тексту та неправильного формату. Не використовуйте реальні приватні номери чи облікові дані в прикладах.
Варіанти
Варіант 1. Шифр Цезаря
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка шифрує текст шифром Цезаря. Вхід: текст з ASCII-літерами A..Z і a..z та цілий ключ; літери зсуваються циклічно в межах 26 літер, решту символів не змінювати. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка шифрує текст шифром Цезаря. Вхід: текст з ASCII-літерами A..Z і a..z та цілий ключ; літери зсуваються циклічно в межах 26 літер, решту символів не змінювати. Додати функцію decrypt через протилежний ключ. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка шифрує текст шифром Цезаря. Вхід: текст з ASCII-літерами A..Z і a..z та цілий ключ; літери зсуваються циклічно в межах 26 літер, решту символів не змінювати. Додати функцію decrypt через протилежний ключ; round-trip для всіх ключів -52..52. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 2. Паліндроми
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перевіряє, чи є введене речення паліндромом. Вхід: речення; слова лише з літер, регістр і пробіли не враховувати; порожній рядок є паліндромом. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перевіряє, чи є введене речення паліндромом. Вхід: речення; слова лише з літер, регістр і пробіли не враховувати; порожній рядок є паліндромом. Додати String.isPalindrome і список паліндромних слів довжини від 2. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перевіряє, чи є введене речення паліндромом. Вхід: речення; слова лише з літер, регістр і пробіли не враховувати; порожній рядок є паліндромом. Додати String.isPalindrome і список паліндромних слів довжини від 2; межі нормалізації та перевірку пунктуації за явно заданим правилом. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 3. Касовий чек
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка формує касовий чек для позиції товару. Вхід: назва товару, кількість 1..1000, ціна в копійках 0..1000000; обчислити суму в Long. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка формує касовий чек для позиції товару. Вхід: назва товару, кількість 1..1000, ціна в копійках 0..1000000; обчислити суму в Long. Додати formatReceipt із типовою валютою UAH і шириною 20. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка формує касовий чек для позиції товару. Вхід: назва товару, кількість 1..1000, ціна в копійках 0..1000000; обчислити суму в Long. Додати formatReceipt із типовою валютою UAH і шириною 20; кілька позицій через vararg та перевірку переповнення підсумку. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 4. Номер телефону
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка нормалізує український номер телефону до формату +380XXXXXXXXX. Вхід: рядок із плюсом, цифрами, пробілами, дужками й дефісами; номер вигляду 0 і 9 цифр привести до +380 і 9 цифр. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка нормалізує український номер телефону до формату +380XXXXXXXXX. Вхід: рядок із плюсом, цифрами, пробілами, дужками й дефісами; номер вигляду 0 і 9 цифр привести до +380 і 9 цифр. Додати Regex повного формату \+380[0-9]{9}; решту форматів відхилити. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка нормалізує український номер телефону до формату +380XXXXXXXXX. Вхід: рядок із плюсом, цифрами, пробілами, дужками й дефісами; номер вигляду 0 і 9 цифр привести до +380 і 9 цифр. Додати Regex повного формату \+380[0-9]{9}; решту форматів відхилити; повідомлення причини відмови й маскування середніх 5 цифр; існування номера не визначати. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 5. Транслітерація
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка транслітерує українське слово латиницею. Вхід: українське слово; навчальна таблиця аa бb вv гh ґg дd еe жzh зz иy іi кk лl мm нn оo пp рr сs тt уu фf хkh цts чch шsh щshch. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка транслітерує українське слово латиницею. Вхід: українське слово; навчальна таблиця аa бb вv гh ґg дd еe жzh зz иy іi кk лl мm нn оo пp рr сs тt уu фf хkh цts чch шsh щshch. Додати правила єYe/ie, їYi/i, йY/i, юYu/iu, яYa/ia на початку/всередині слова; ь та апостроф вилучати. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка транслітерує українське слово латиницею. Вхід: українське слово; навчальна таблиця аa бb вv гh ґg дd еe жzh зz иy іi кk лl мm нn оo пp рr сs тt уu фf хkh цts чch шsh щshch. Додати правила єYe/ie, їYi/i, йY/i, юYu/iu, яYa/ia на початку/всередині слова; ь та апостроф вилучати; правило зг=zgh, збереження початкового регістру й обробку кількох слів за таблицею постанови 55 від 27.01.2010. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 6. Статистика тексту
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка обчислює статистику введеного тексту. Вхід: рядок; слово є непорожнім фрагментом між пробілами; порахувати слова й літери. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка обчислює статистику введеного тексту. Вхід: рядок; слово є непорожнім фрагментом між пробілами; порахувати слова й літери. Додати речення як непорожні фрагменти між .!? і частоту голосних аеиіоуяюєї. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка обчислює статистику введеного тексту. Вхід: рядок; слово є непорожнім фрагментом між пробілами; порахувати слова й літери. Додати речення як непорожні фрагменти між .!? і частоту голосних аеиіоуяюєї; найчастішу літеру без регістру з нічиєю за алфавітом. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 7. Адреса email
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перевіряє адресу email за навчальною схемою. Вхід: рядок; навчальна схема local@domain, один @, local із ASCII-літер/цифр/._-, domain із літер/цифр/.- та хоча б одна крапка. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перевіряє адресу email за навчальною схемою. Вхід: рядок; навчальна схема local@domain, один @, local із ASCII-літер/цифр/._-, domain із літер/цифр/.- та хоча б одна крапка. Додати String.isValidEmail і окремі причини пустого поля, пробілів і неправильних символів. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перевіряє адресу email за навчальною схемою. Вхід: рядок; навчальна схема local@domain, один @, local із ASCII-літер/цифр/._-, domain із літер/цифр/.- та хоча б одна крапка. Додати String.isValidEmail і окремі причини пустого поля, пробілів і неправильних символів; відхилення крайніх/подвійних крапок; не стверджувати перевірку існування адреси. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 8. Український IBAN
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перевіряє вигаданий український номер IBAN. Вхід: вигаданий рядок із літер UA і 27 ASCII-цифр; прибрати лише пробіли, перевірити довжину 29. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перевіряє вигаданий український номер IBAN. Вхід: вигаданий рядок із літер UA і 27 ASCII-цифр; прибрати лише пробіли, перевірити довжину 29. Додати перевірку контрольної суми: перенести перші 4 символи в кінець, замінити літери A=10..Z=35 і перевірити, що поцифровий MOD97 дорівнює 1. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перевіряє вигаданий український номер IBAN. Вхід: вигаданий рядок із літер UA і 27 ASCII-цифр; прибрати лише пробіли, перевірити довжину 29. Додати перевірку контрольної суми: перенести перші 4 символи в кінець, замінити літери A=10..Z=35 і перевірити, що поцифровий MOD97 дорівнює 1; String-перевірку та маскування всіх, крім UA і останніх 4 цифр; не друкувати реальних реквізитів. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 9. Генератор паролів
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка генерує відтворюваний навчальний пароль. Вхід: довжина 4..64 та seed; символи пароля беруться з ASCII-літер і цифр. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка генерує відтворюваний навчальний пароль. Вхід: довжина 4..64 та seed; символи пароля беруться з ASCII-літер і цифр. Додати іменовані прапорці digits/upper/lower та вимогу хоча б однієї ввімкненої групи. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка генерує відтворюваний навчальний пароль. Вхід: довжина 4..64 та seed; символи пароля беруться з ASCII-літер і цифр. Додати іменовані прапорці digits/upper/lower та вимогу хоча б однієї ввімкненої групи; гарантію символу кожної групи; це відтворюваний навчальний генератор, не захист реального облікового запису. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 10. Азбука Морзе
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка кодує текст азбукою Морзе. Вхід: слова лише з A, B, C, S, O та пробілів; A=.- B=-... C=-.-. S=... O=---, роздільник літер пробіл, слів /. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка кодує текст азбукою Морзе. Вхід: слова лише з A, B, C, S, O та пробілів; A=.- B=-... C=-.-. S=... O=---, роздільник літер пробіл, слів /. Додати функції кодування й декодування з відмовою невідомому коду. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка кодує текст азбукою Морзе. Вхід: слова лише з A, B, C, S, O та пробілів; A=.- B=-... C=-.-. S=... O=---, роздільник літер пробіл, слів /. Додати функції кодування й декодування з відмовою невідомому коду; round-trip рядків і параметр роздільника слів за замовчуванням /. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 11. Анаграми
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перевіряє, чи є два слова анаграмами. Вхід: два слова ASCII a..z без регістру; перевірити однакову кількість кожної літери. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перевіряє, чи є два слова анаграмами. Вхід: два слова ASCII a..z без регістру; перевірити однакову кількість кожної літери. Додати String.isAnagramOf і виключення пробілів. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перевіряє, чи є два слова анаграмами. Вхід: два слова ASCII a..z без регістру; перевірити однакову кількість кожної літери. Додати String.isAnagramOf і виключення пробілів; пошук анаграм заданого слова серед введених рядків. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 12. Сума прописом
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка записує грошову суму прописом українською мовою. Вхід: ціла сума 0..99 гривень; словник чисел 0..19 і десятків 20..90, правильна форма гривня/гривні/гривень. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка записує грошову суму прописом українською мовою. Вхід: ціла сума 0..99 гривень; словник чисел 0..19 і десятків 20..90, правильна форма гривня/гривні/гривень. Додати копійки 0..99 двома цифрами й правила 1/2..4/решта з винятком 11..14. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка записує грошову суму прописом українською мовою. Вхід: ціла сума 0..99 гривень; словник чисел 0..19 і десятків 20..90, правильна форма гривня/гривні/гривень. Додати копійки 0..99 двома цифрами й правила 1/2..4/решта з винятком 11..14; функцію з типовою валютою UAH, варіанти 0, 1, 2, 5, 11, 21, 99. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 13. Вирівнювання тексту
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка розбиває текст на рядки заданої ширини й вирівнює їх. Вхід: текст і ширину 1..60; переносити цілі слова, слово довше ширини відхилити. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка розбиває текст на рядки заданої ширини й вирівнює їх. Вхід: текст і ширину 1..60; переносити цілі слова, слово довше ширини відхилити. Додати лівий/правий/центральний режим із типовим left. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка розбиває текст на рядки заданої ширини й вирівнює їх. Вхід: текст і ширину 1..60; переносити цілі слова, слово довше ширини відхилити. Додати лівий/правий/центральний режим із типовим left; повне вирівнювання між словами; останній рядок ліворуч. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 14. Кольори HEX
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка розбирає колір, записаний у форматі HEX. Вхід: рядок #RRGGBB з ASCII hex; повернути r,g,b у 0..255. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка розбирає колір, записаний у форматі HEX. Вхід: рядок #RRGGBB з ASCII hex; повернути r,g,b у 0..255. Додати зворотне форматування uppercase із двома цифрами на канал. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка розбирає колір, записаний у форматі HEX. Вхід: рядок #RRGGBB з ASCII hex; повернути r,g,b у 0..255. Додати зворотне форматування uppercase із двома цифрами на канал; String-розширення та перевірку round-trip чорного/білого/меж каналів. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 15. Автомобільні номери
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перевіряє автомобільний номер навчального формату. Вхід: рядок у навчальному форматі: дві літери, 4 цифри, дві літери; дозволені літери ABCEHIKMOPTX. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перевіряє автомобільний номер навчального формату. Вхід: рядок у навчальному форматі: дві літери, 4 цифри, дві літери; дозволені літери ABCEHIKMOPTX. Додати Regex повного збігу й розбір трьох частин. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перевіряє автомобільний номер навчального формату. Вхід: рядок у навчальному форматі: дві літери, 4 цифри, дві літери; дозволені літери ABCEHIKMOPTX. Додати Regex повного збігу й розбір трьох частин; нормалізацію пробілів/дефісів; не визначати реєстрацію чи актуальний регіон. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 16. Рядок CSV
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка розбирає один рядок CSV на поля. Вхід: один рядок із комами; поля без лапок, порожні поля зберігати. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка розбирає один рядок CSV на поля. Вхід: один рядок із комами; поля без лапок, порожні поля зберігати. Додати підтримку лапок навколо поля, ком усередині лапок і подвоєних лапок. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка розбирає один рядок CSV на поля. Вхід: один рядок із комами; поля без лапок, порожні поля зберігати. Додати підтримку лапок навколо поля, ком усередині лапок і подвоєних лапок; машину станів із відмовою незакритим лапкам; encode/decode round-trip без переносів усередині поля. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 17. Шаблон листа
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка формує текст листа за багаторядковим шаблоном. Вхід: ім’я, тема, текст; багаторядковий шаблон із підписом за замовчуванням. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка формує текст листа за багаторядковим шаблоном. Вхід: ім’я, тема, текст; багаторядковий шаблон із підписом за замовчуванням. Додати іменовані параметри й trimMargin. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка формує текст листа за багаторядковим шаблоном. Вхід: ім’я, тема, текст; багаторядковий шаблон із підписом за замовчуванням. Додати іменовані параметри й trimMargin; буквальні долари через multi-dollar interpolation; перевірити порожню тему. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 18. Голосні й приголосні
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка підраховує голосні й приголосні в українському тексті. Вхід: український текст; голосні аеиіоуяюєї, ь не приголосний. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка підраховує голосні й приголосні в українському тексті. Вхід: український текст; голосні аеиіоуяюєї, ь не приголосний. Додати Char-розширення з регістронезалежною перевіркою. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка підраховує голосні й приголосні в українському тексті. Вхід: український текст; голосні аеиіоуяюєї, ь не приголосний. Додати Char-розширення з регістронезалежною перевіркою; окремі числа голосних, приголосних, цифр і решти. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 19. Тривалості
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перетворює тривалість із запису Nh Nm Ns у секунди. Вхід: рядок Nh Nm Ns із невід’ємними цілими, суфікси h/m/s без повторів; перевести в Long-секунди. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перетворює тривалість із запису Nh Nm Ns у секунди. Вхід: рядок Nh Nm Ns із невід’ємними цілими, суфікси h/m/s без повторів; перевести в Long-секунди. Додати зворотний формат год:хв:сек із padStart. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перетворює тривалість із запису Nh Nm Ns у секунди. Вхід: рядок Nh Nm Ns із невід’ємними цілими, суфікси h/m/s без повторів; перевести в Long-секунди. Додати зворотний формат год:хв:сек із padStart; повний Regex-розбір і захист переповнення; порожній ввід відхилити. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 20. ПІБ
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка формує ініціали з прізвища, імені та по батькові. Вхід: два або три слова: прізвище, ім’я та по батькові. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка формує ініціали з прізвища, імені та по батькові. Вхід: два або три слова: прізвище, ім’я та по батькові. Додати String.toInitials з типовим роздільником-крапкою. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка формує ініціали з прізвища, імені та по батькові. Вхід: два або три слова: прізвище, ім’я та по батькові. Додати String.toInitials з типовим роздільником-крапкою; пошук повного імені за ініціалами лише в окремо введеному довіднику; нічию показати. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 21. Коди ISBN
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перевіряє контрольну цифру коду ISBN. Вхід: рядок ISBN-13 із 13 цифр; ваги перших 12 цифр чергуються 1 і 3, остання цифра дорівнює (10-sum%10)%10. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перевіряє контрольну цифру коду ISBN. Вхід: рядок ISBN-13 із 13 цифр; ваги перших 12 цифр чергуються 1 і 3, остання цифра дорівнює (10-sum%10)%10. Додати ISBN-10: 9 цифр і контрольна цифра або X, ваги 10..1, сума кратна 11. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перевіряє контрольну цифру коду ISBN. Вхід: рядок ISBN-13 із 13 цифр; ваги перших 12 цифр чергуються 1 і 3, остання цифра дорівнює (10-sum%10)%10. Додати ISBN-10: 9 цифр і контрольна цифра або X, ваги 10..1, сума кратна 11; перетворення ISBN10 у 978+перші 9 цифр+нова контрольна; зворотне лише для 978. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 22. Стиснення RLE
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка стискає рядок кодуванням довжин серій (RLE). Вхід: рядок з ASCII-літер A..Z; серії кодувати як літера:кількість і розділяти символом ;. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка стискає рядок кодуванням довжин серій (RLE). Вхід: рядок з ASCII-літер A..Z; серії кодувати як літера:кількість і розділяти символом ;. Додати декодування з кількістю 1..1000 і повним контролем формату. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка стискає рядок кодуванням довжин серій (RLE). Вхід: рядок з ASCII-літер A..Z; серії кодувати як літера:кількість і розділяти символом ;. Додати декодування з кількістю 1..1000 і повним контролем формату; обмеження виходу 100000 символів та round-trip. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 23. Ханойські вежі
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка розв’язує задачу про ханойські вежі й друкує послідовність ходів. Вхід: число дисків 0..15; рекурсивно перенести вежу зі стрижня A на стрижень C через B. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка розв’язує задачу про ханойські вежі й друкує послідовність ходів. Вхід: число дисків 0..15; рекурсивно перенести вежу зі стрижня A на стрижень C через B. Додати параметри назв стрижнів за замовчуванням і лічильник ходів. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка розв’язує задачу про ханойські вежі й друкує послідовність ходів. Вхід: число дисків 0..15; рекурсивно перенести вежу зі стрижня A на стрижень C через B. Додати параметри назв стрижнів за замовчуванням і лічильник ходів; перевірку числа 2^n-1 і допустимості кожного ходу на власній моделі. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 24. Алгоритм Луна
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перевіряє вигаданий номер картки алгоритмом Луна. Вхід: вигаданий рядок 12..19 цифр; справа кожну другу цифру подвоїти, понад 9 відняти 9, сума кратна 10. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перевіряє вигаданий номер картки алгоритмом Луна. Вхід: вигаданий рядок 12..19 цифр; справа кожну другу цифру подвоїти, понад 9 відняти 9, сума кратна 10. Додати функцію перевірки й маскування всіх, крім останніх 4 цифр. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перевіряє вигаданий номер картки алгоритмом Луна. Вхід: вигаданий рядок 12..19 цифр; справа кожну другу цифру подвоїти, понад 9 відняти 9, сума кратна 10. Додати функцію перевірки й маскування всіх, крім останніх 4 цифр; генерацію контрольної цифри для вигаданого префікса; валідна сума не означає реальний рахунок. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 25. Slug для URL
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка формує slug для URL із заголовка. Вхід: ASCII-заголовок; lowercase, групи пробілів замінити -, решту, крім літер/цифр/-, вилучити. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка формує slug для URL із заголовка. Вхід: ASCII-заголовок; lowercase, групи пробілів замінити -, решту, крім літер/цифр/-, вилучити. Додати обрізання крайніх і повторних дефісів, порожній результат відхилити. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка формує slug для URL із заголовка. Вхід: ASCII-заголовок; lowercase, групи пробілів замінити -, решту, крім літер/цифр/-, вилучити. Додати обрізання крайніх і повторних дефісів, порожній результат відхилити; типовий maxLength = 60 без кінцевого дефіса й тести ідемпотентності. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 26. Температура з одиницями
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перетворює температуру між шкалами Цельсія та Фаренгейта. Вхід: скінченне число й шкала C або F; F=C*9/5+32, C=(F-32)*5/9. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перетворює температуру між шкалами Цельсія та Фаренгейта. Вхід: скінченне число й шкала C або F; F=C*9/5+32, C=(F-32)*5/9. Додати функції-розширення та формат із типовими 2 знаками. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перетворює температуру між шкалами Цельсія та Фаренгейта. Вхід: скінченне число й шкала C або F; F=C*9/5+32, C=(F-32)*5/9. Додати функції-розширення та формат із типовими 2 знаками; Regex повного вводу, підтримку знака/крапки і відмову NaN/Infinity. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 27. Кросворд
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перевіряє, чи відповідає слово кросвордному шаблону. Вхід: ASCII-слово та шаблон, де ? означає одну літеру, а * – нуль або більше літер. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перевіряє, чи відповідає слово кросвордному шаблону. Вхід: ASCII-слово та шаблон, де ? означає одну літеру, а * – нуль або більше літер. Додати перетворення шаблону в Regex з екрануванням буквальних частин. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка перевіряє, чи відповідає слово кросвордному шаблону. Вхід: ASCII-слово та шаблон, де ? означає одну літеру, а * – нуль або більше літер. Додати перетворення шаблону в Regex з екрануванням буквальних частин; пошук усіх збігів серед введених слів, стабільний порядок. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 28. Дати в тексті
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка знаходить у тексті дати й перетворює їх у формат ISO. Вхід: текст із датами dd.mm.yyyy; знайти Regex-групи і вивести yyyy-mm-dd. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка знаходить у тексті дати й перетворює їх у формат ISO. Вхід: текст із датами dd.mm.yyyy; знайти Regex-групи і вивести yyyy-mm-dd. Додати перевірку календаря через java.time.LocalDate. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка знаходить у тексті дати й перетворює їх у формат ISO. Вхід: текст із датами dd.mm.yyyy; знайти Regex-групи і вивести yyyy-mm-dd. Додати перевірку календаря через java.time.LocalDate; зберегти неправильні дати у звіті відмов із початковою позицією. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 29. Псевдографіка
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка будує текстову гістограму псевдографікою. Вхід: назви й невід’ємні значення 0..100; стовпці гістограми будувати символом #. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка будує текстову гістограму псевдографікою. Вхід: назви й невід’ємні значення 0..100; стовпці гістограми будувати символом #. Додати типові символ/масштаб і форматування назв через padEnd. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка будує текстову гістограму псевдографікою. Вхід: назви й невід’ємні значення 0..100; стовпці гістограми будувати символом #. Додати типові символ/масштаб і форматування назв через padEnd; таблицю вартостей vararg і правило округлення неповного масштабу. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Варіант 30. Семантичні версії
1. Початковий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка розбирає й порівнює семантичні версії. Вхід: дві версії у форматі major.minor.patch із трьох невід’ємних Int без початкових нулів, без prerelease/build. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
2. Базовий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка розбирає й порівнює семантичні версії. Вхід: дві версії у форматі major.minor.patch із трьох невід’ємних Int без початкових нулів, без prerelease/build. Додати порівняння компонентів як чисел; 1.10.2 більше 1.9.9. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки.
3. Високий рівень. Створити консольну програму Kotlin/JVM на JDK 27, яка розбирає й порівнює семантичні версії. Вхід: дві версії у форматі major.minor.patch із трьох невід’ємних Int без початкових нулів, без prerelease/build. Додати порівняння компонентів як чисел; 1.10.2 більше 1.9.9; вибір найновішої через vararg і відмову порожньому набору. Виділити функції з типами параметрів і результатів, відокремити друк. Вивести результат або причину відмови; перевірити звичайний, порожній, граничний і неправильний випадки. Додати аргументи CLI у форматі ключ=значення та --help; без аргументів читати ті самі поля з клавіатури. Виводити підписаний табличний звіт із підсумком; помилки надсилати у stderr. Коди завершення: 0 – успіх або довідка, 2 – неправильний ввід, 1 – операційний збій.
Порядок виконання та захисту роботи
- Опишіть сигнатури функцій, передумови та результат.
- Реалізуйте функції й консольний сценарій із перевіреним вводом.
- Використайте типові та іменовані аргументи там, де вони мають зміст.
- Перевірте порожній, звичайний, граничний і неправильний випадки.
- Для рекурсії поясніть базовий випадок і зменшення задачі.
- Подайте п’ять фактичних перевірок, код і README.
- Покажіть розширення в IntelliJ IDEA та поясніть його приймач.