Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Усі перевірки виконуйте у спеціальному робочому каталозі; не використовуйте особисті документи як тестові дані. Задайте формат, UTF-8 для тексту, ліміти й політику наявного цільового файла до початку реалізації.
Варіанти
Варіант 1. Облік витрат
1. Початковий рівень. Створити повну програму Java на JDK 27. Прочитати UTF-8 CSV дата,категорія,копійки без лапок і ком у полях; вивести суму. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
2. Базовий рівень. Створити повну програму Java на JDK 27. Прочитати UTF-8 CSV дата,категорія,копійки без лапок і ком у полях; вивести суму; записати підсумки за категоріями й журнал неправильних рядків. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
3. Високий рівень. Створити повну програму Java на JDK 27. Прочитати UTF-8 CSV дата,категорія,копійки без лапок і ком у полях; вивести суму; записати підсумки за категоріями й журнал неправильних рядків; додати фільтр дат і збереження нового звіту через тимчасовий файл. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу.
Варіант 2. Резервна копія
1. Початковий рівень. Створити повну програму Java на JDK 27. Ввести вихідний і порожній цільовий каталоги; скопіювати звичайні файли одного рівня. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
2. Базовий рівень. Створити повну програму Java на JDK 27. Ввести вихідний і порожній цільовий каталоги; скопіювати звичайні файли одного рівня; рекурсивно копіювати лише задані розширення без переходу за symlink. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
3. Високий рівень. Створити повну програму Java на JDK 27. Ввести вихідний і порожній цільовий каталоги; скопіювати звичайні файли одного рівня; рекурсивно копіювати лише задані розширення без переходу за symlink; показати кількість і байти, відхилити ціль усередині джерела та не перезаписувати наявні файли. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу.
Варіант 3. Дублікати файлів
1. Початковий рівень. Створити повну програму Java на JDK 27. Просканувати заданий каталог і згрупувати звичайні файли за розміром. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
2. Базовий рівень. Створити повну програму Java на JDK 27. Просканувати заданий каталог і згрупувати звичайні файли за розміром; порівняти SHA-256 лише всередині груп однакового розміру. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
3. Високий рівень. Створити повну програму Java на JDK 27. Просканувати заданий каталог і згрупувати звичайні файли за розміром; порівняти SHA-256 лише всередині груп однакового розміру; підтвердити дублікати побайтово й вивести звіт без автоматичного видалення. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу.
Варіант 4. Ротація журналу
1. Початковий рівень. Створити повну програму Java на JDK 27. Прочитати текстові події й дописати UTF-8 журнал. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
2. Базовий рівень. Створити повну програму Java на JDK 27. Прочитати текстові події й дописати UTF-8 журнал; при перевищенні заданих байтів закрити й перейменувати журнал. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
3. Високий рівень. Створити повну програму Java на JDK 27. Прочитати текстові події й дописати UTF-8 журнал; при перевищенні заданих байтів закрити й перейменувати журнал; зберігати не більше заданої кількості власних архівних журналів; перевірити збій перейменування. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу.
Варіант 5. Текстові нотатки
1. Початковий рівень. Створити повну програму Java на JDK 27. Ввести заголовок і багаторядковий текст; зберегти UTF-8 у новий файл. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
2. Базовий рівень. Створити повну програму Java на JDK 27. Ввести заголовок і багаторядковий текст; зберегти UTF-8 у новий файл; прочитати каталог нотаток та знайти фразу. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
3. Високий рівень. Створити повну програму Java на JDK 27. Ввести заголовок і багаторядковий текст; зберегти UTF-8 у новий файл; прочитати каталог нотаток та знайти фразу; обмежити імена без виходу з робочого каталогу й застосувати безпечне оновлення. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу.
Варіант 6. Перетворення кодування
1. Початковий рівень. Створити повну програму Java на JDK 27. Прочитати файл у явно заданому UTF-8 або windows-1251 і записати інше кодування. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
2. Базовий рівень. Створити повну програму Java на JDK 27. Прочитати файл у явно заданому UTF-8 або windows-1251 і записати інше кодування; декодер і кодер мають повідомляти неправильні та непредставні символи. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
3. Високий рівень. Створити повну програму Java на JDK 27. Прочитати файл у явно заданому UTF-8 або windows-1251 і записати інше кодування; декодер і кодер мають повідомляти неправильні та непредставні символи; зберегти джерело незмінним і перевірити кругове перетворення для допустимого набору. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу.
Варіант 7. Аналіз диска
1. Початковий рівень. Створити повну програму Java на JDK 27. Через Files.walk порахувати звичайні файли та суму розмірів. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
2. Базовий рівень. Створити повну програму Java на JDK 27. Через Files.walk порахувати звичайні файли та суму розмірів; вивести top-k найбільших з відносними шляхами. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
3. Високий рівень. Створити повну програму Java на JDK 27. Через Files.walk порахувати звичайні файли та суму розмірів; вивести top-k найбільших з відносними шляхами; згрупувати за розширенням, повідомити недоступні шляхи й не переходити за symlink. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу.
Варіант 8. Збереження гри
1. Початковий рівень. Створити повну програму Java на JDK 27. Serializable-клас зберігає вигадане ім’я й рівень 0..100 у власному локальному файлі. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
2. Базовий рівень. Створити повну програму Java на JDK 27. Serializable-клас зберігає вигадане ім’я й рівень 0..100 у власному локальному файлі; додати serialVersionUID, transient-кеш і валідацію після читання. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
3. Високий рівень. Створити повну програму Java на JDK 27. Serializable-клас зберігає вигадане ім’я й рівень 0..100 у власному локальному файлі; додати serialVersionUID, transient-кеш і валідацію після читання; застосувати allowlist ObjectInputFilter та ліміти файла, перевірити неправильний клас і обірваний потік. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу.
Варіант 9. Бінарний довідник
1. Початковий рівень. Створити повну програму Java на JDK 27. Записати id та телефон як фіксовану кількість ASCII-байтів з явним padding. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Формат запису: додатний id як 8-байтовий long big-endian, потім телефон із 1..16 ASCII-символів (цифри та необов’язковий початковий +), доповнений справа пробілами до 16 байтів; запис займає 24 байти. Вивести кількість записаних записів.
2. Базовий рівень. Створити повну програму Java на JDK 27. Записати id та телефон як фіксовану кількість ASCII-байтів з явним padding; RandomAccessFile читає запис за індексом. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Формат запису: додатний id як 8-байтовий long big-endian, потім телефон із 1..16 ASCII-символів (цифри та необов’язковий початковий +), доповнений справа пробілами до 16 байтів; запис займає 24 байти. Вивести кількість записаних записів.
3. Високий рівень. Створити повну програму Java на JDK 27. Записати id та телефон як фіксовану кількість ASCII-байтів з явним padding; RandomAccessFile читає запис за індексом; додати magic, версію, ліміт кількості й перевірку переповнення зміщення. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу. Формат запису: додатний id як 8-байтовий long big-endian, потім телефон із 1..16 ASCII-символів (цифри та необов’язковий початковий +), доповнений справа пробілами до 16 байтів; запис займає 24 байти. Вивести кількість записаних записів. Розширений заголовок: int magic 0x44495231, int version=1, int count 0..10000; зміщення запису дорівнює 12+24*index, індекси від нуля.
Варіант 10. Навчальний XOR
1. Початковий рівень. Створити повну програму Java на JDK 27. Прочитати байти й застосувати XOR з ключем 1..255 у новий файл. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
2. Базовий рівень. Створити повну програму Java на JDK 27. Прочитати байти й застосувати XOR з ключем 1..255 у новий файл; повторним застосуванням відновити джерело й перевірити рівність. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
3. Високий рівень. Створити повну програму Java на JDK 27. Прочитати байти й застосувати XOR з ключем 1..255 у новий файл; повторним застосуванням відновити джерело й перевірити рівність; обробляти буфером великі файли й прямо зазначити, що це не захищене шифрування. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу.
Варіант 11. Профілі Properties
1. Початковий рівень. Створити повну програму Java на JDK 27. Прочитати title,limit,folder через UTF-8 Reader з типовими значеннями. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Типові значення: title=Demo, limit=100, folder=поточний робочий каталог; показати всі три підсумкові значення. Відсутній файл означає ці типові значення, неправильний наявний файл є помилкою.
2. Базовий рівень. Створити повну програму Java на JDK 27. Прочитати title,limit,folder через UTF-8 Reader з типовими значеннями; перевірити limit 1..1000 та існування каталогу. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Типові значення: title=Demo, limit=100, folder=поточний робочий каталог; показати всі три підсумкові значення. Відсутній файл означає ці типові значення, неправильний наявний файл є помилкою.
3. Високий рівень. Створити повну програму Java на JDK 27. Прочитати title,limit,folder через UTF-8 Reader з типовими значеннями; перевірити limit 1..1000 та існування каталогу; підтримати базовий і додатковий профілі з явним пріоритетом без секретів у звіті. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу. Типові значення: title=Demo, limit=100, folder=поточний робочий каталог; показати всі три підсумкові значення. Відсутній файл означає ці типові значення, неправильний наявний файл є помилкою. Значення додаткового профілю перекривають базовий; відсутні ключі успадковують базове або типове значення.
Варіант 12. Фото за датами
1. Початковий рівень. Створити повну програму Java на JDK 27. Просканувати звичайні файли й прочитати mtime; сформувати план каталогів рік-місяць. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
2. Базовий рівень. Створити повну програму Java на JDK 27. Просканувати звичайні файли й прочитати mtime; сформувати план каталогів рік-місяць; скопіювати файли за планом без перезапису. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
3. Високий рівень. Створити повну програму Java на JDK 27. Просканувати звичайні файли й прочитати mtime; сформувати план каталогів рік-місяць; скопіювати файли за планом без перезапису; розв’язувати колізії імен суфіксом, спочатку показати dry-run і не змінювати оригінали. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу.
Варіант 13. Журнал оцінок CSV
1. Початковий рівень. Створити повну програму Java на JDK 27. Прочитати id,ім’я,бал 0..100 у форматі без лапок і ком у полях. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
2. Базовий рівень. Створити повну програму Java на JDK 27. Прочитати id,ім’я,бал 0..100 у форматі без лапок і ком у полях; записати правильні записи та окремі помилки з номерами рядків. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
3. Високий рівень. Створити повну програму Java на JDK 27. Прочитати id,ім’я,бал 0..100 у форматі без лапок і ком у полях; записати правильні записи та окремі помилки з номерами рядків; відхилити дублікати id й зберігати попередній звіт до завершення нового. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу.
Варіант 14. Порівняння рядків
1. Початковий рівень. Створити повну програму Java на JDK 27. Прочитати два UTF-8 файли й вивести рядки з однаковими номерами, що відрізняються. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
2. Базовий рівень. Створити повну програму Java на JDK 27. Прочитати два UTF-8 файли й вивести рядки з однаковими номерами, що відрізняються; показати відсутні рядки коротшого файла. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
3. Високий рівень. Створити повну програму Java на JDK 27. Прочитати два UTF-8 файли й вивести рядки з однаковими номерами, що відрізняються; показати відсутні рядки коротшого файла; підтримати режим ігнорування кінцевих пробілів та EOF без переносу. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу.
Варіант 15. Безпечний ZIP
1. Початковий рівень. Створити повну програму Java на JDK 27. Створити ZIP із заданих звичайних файлів одного каталогу. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
2. Базовий рівень. Створити повну програму Java на JDK 27. Створити ZIP із заданих звичайних файлів одного каталогу; розпакувати лише в новий порожній каталог з перевіркою нормалізованих шляхів. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
3. Високий рівень. Створити повну програму Java на JDK 27. Створити ZIP із заданих звичайних файлів одного каталогу; розпакувати лише в новий порожній каталог з перевіркою нормалізованих шляхів; відхилити абсолютні шляхи й вихід через .., обмежити число entry та сумарні розпаковані байти. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу.
Варіант 16. Частотний словник файла
1. Початковий рівень. Створити повну програму Java на JDK 27. Прочитати UTF-8 текст латиницею й порахувати слова. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
2. Базовий рівень. Створити повну програму Java на JDK 27. Прочитати UTF-8 текст латиницею й порахувати слова; записати відсортований звіт слово,кількість. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
3. Високий рівень. Створити повну програму Java на JDK 27. Прочитати UTF-8 текст латиницею й порахувати слова; записати відсортований звіт слово,кількість; обробляти рядками без завантаження всього файла, перевірити порожні й довгі рядки. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу.
Варіант 17. Серіалізований склад
1. Початковий рівень. Створити повну програму Java на JDK 27. Зберегти власний локальний список товарів id–кількість через Serializable. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
2. Базовий рівень. Створити повну програму Java на JDK 27. Зберегти власний локальний список товарів id–кількість через Serializable; додати UID та предметну перевірку унікальних id і невід’ємної кількості. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
3. Високий рівень. Створити повну програму Java на JDK 27. Зберегти власний локальний список товарів id–кількість через Serializable; додати UID та предметну перевірку унікальних id і невід’ємної кількості; обмежити дозволені класи й розмір графа, перевірити несумісну версію та пошкодження. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу.
Варіант 18. Поштові шаблони
1. Початковий рівень. Створити повну програму Java на JDK 27. Прочитати UTF-8 шаблон із маркером NAME і CSV id,ім’я без лапок та ком. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Замінити кожний буквальний маркер NAME іменем поточного рядка CSV та вивести id і готовий текст. Id складається з 1..20 ASCII-літер, цифр, дефіса або підкреслення; вихідне ім’я файла має вигляд id.txt.
2. Базовий рівень. Створити повну програму Java на JDK 27. Прочитати UTF-8 шаблон із маркером NAME і CSV id,ім’я без лапок та ком; створити окремий новий текстовий файл для кожного id. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Замінити кожний буквальний маркер NAME іменем поточного рядка CSV та вивести id і готовий текст. Id складається з 1..20 ASCII-літер, цифр, дефіса або підкреслення; вихідне ім’я файла має вигляд id.txt.
3. Високий рівень. Створити повну програму Java на JDK 27. Прочитати UTF-8 шаблон із маркером NAME і CSV id,ім’я без лапок та ком; створити окремий новий текстовий файл для кожного id; заборонити дублікати id й небезпечні імена; невідомі маркери вважати помилкою. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу. Замінити кожний буквальний маркер NAME іменем поточного рядка CSV та вивести id і готовий текст. Id складається з 1..20 ASCII-літер, цифр, дефіса або підкреслення; вихідне ім’я файла має вигляд id.txt.
Варіант 19. Спостерігач каталогу
1. Початковий рівень. Створити повну програму Java на JDK 27. WatchService реєструє create/delete/modify й завершується після заданих секунд. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
2. Базовий рівень. Створити повну програму Java на JDK 27. WatchService реєструє create/delete/modify й завершується після заданих секунд; після OVERFLOW повторно сканує стан і пояснює можливі повтори подій. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
3. Високий рівень. Створити повну програму Java на JDK 27. WatchService реєструє create/delete/modify й завершується після заданих секунд; після OVERFLOW повторно сканує стан і пояснює можливі повтори подій; перевірити закриття ресурсу й недійсний WatchKey без нескінченного очікування. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу.
Варіант 20. Бінарна погода
1. Початковий рівень. Створити повну програму Java на JDK 27. Записати magic, кількість і фіксовані записи epochDay–double. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Формат big-endian: magic int 0x57454131, кількість int 0..10000, далі записи по 16 байтів: long epochDay та double температури -90..60 °C. Заголовок займає 8 байтів; вивести кількість і прочитані дату/температуру.
2. Базовий рівень. Створити повну програму Java на JDK 27. Записати magic, кількість і фіксовані записи epochDay–double; читати запис за індексом через RandomAccessFile. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Формат big-endian: magic int 0x57454131, кількість int 0..10000, далі записи по 16 байтів: long epochDay та double температури -90..60 °C. Заголовок займає 8 байтів; вивести кількість і прочитані дату/температуру.
3. Високий рівень. Створити повну програму Java на JDK 27. Записати magic, кількість і фіксовані записи epochDay–double; читати запис за індексом через RandomAccessFile; відхилити NaN, нескінченність, неправильний розмір файла й індекс за межами. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу. Формат big-endian: magic int 0x57454131, кількість int 0..10000, далі записи по 16 байтів: long epochDay та double температури -90..60 °C. Заголовок займає 8 байтів; вивести кількість і прочитані дату/температуру.
Варіант 21. Пакетне перейменування
1. Початковий рівень. Створити повну програму Java на JDK 27. Згенерувати план нових імен за префіксом та номером для заданих файлів. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
2. Базовий рівень. Створити повну програму Java на JDK 27. Згенерувати план нових імен за префіксом та номером для заданих файлів; перевірити колізії всіх цілей до змін. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
3. Високий рівень. Створити повну програму Java на JDK 27. Згенерувати план нових імен за префіксом та номером для заданих файлів; перевірити колізії всіх цілей до змін; типово лише dry-run, зміни тільки з явним apply; звітувати про частковий збій без приховування. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу.
Варіант 22. Зсув субтитрів
1. Початковий рівень. Створити повну програму Java на JDK 27. Прочитати обмежений SRT: номер, часова пара, один текстовий рядок, порожній роздільник. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Час має формат HH:mm:ss,SSS із годинами 00..99; пару розділяє буквальне -->. Вивести номер, початок, кінець і тривалість кожного блока; початок раніше кінця.
2. Базовий рівень. Створити повну програму Java на JDK 27. Прочитати обмежений SRT: номер, часова пара, один текстовий рядок, порожній роздільник; зсунути час на задані мілісекунди, відхилити від’ємний результат. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Час має формат HH:mm:ss,SSS із годинами 00..99; пару розділяє буквальне -->. Вивести номер, початок, кінець і тривалість кожного блока; початок раніше кінця.
3. Високий рівень. Створити повну програму Java на JDK 27. Прочитати обмежений SRT: номер, часова пара, один текстовий рядок, порожній роздільник; зсунути час на задані мілісекунди, відхилити від’ємний результат; перевірити порядок початок–кінець, зберегти UTF-8 і не змінювати джерело. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу. Час має формат HH:mm:ss,SSS із годинами 00..99; пару розділяє буквальне -->. Вивести номер, початок, кінець і тривалість кожного блока; початок раніше кінця.
Варіант 23. Резервування кімнат
1. Початковий рівень. Створити повну програму Java на JDK 27. Прочитати CSV кімната,дата,початок,кінець із цілими годинами. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Дата має ISO-формат, години цілі 0..24 і початок раніше кінця. Вивести таблицю бронювань та сумарні години за кімнатою; нове бронювання отримати окремим рядком у тому самому форматі.
2. Базовий рівень. Створити повну програму Java на JDK 27. Прочитати CSV кімната,дата,початок,кінець із цілими годинами; відхилити накладання напіввідкритих інтервалів. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Дата має ISO-формат, години цілі 0..24 і початок раніше кінця. Вивести таблицю бронювань та сумарні години за кімнатою; нове бронювання отримати окремим рядком у тому самому форматі.
3. Високий рівень. Створити повну програму Java на JDK 27. Прочитати CSV кімната,дата,початок,кінець із цілими годинами; відхилити накладання напіввідкритих інтервалів; оновлювати файл через тимчасовий у тому самому каталозі та явно обробити відсутність ATOMIC_MOVE. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу. Дата має ISO-формат, години цілі 0..24 і початок раніше кінця. Вивести таблицю бронювань та сумарні години за кімнатою; нове бронювання отримати окремим рядком у тому самому форматі.
Варіант 24. Словник перекладів
1. Початковий рівень. Створити повну програму Java на JDK 27. Прочитати UTF-8 рядки ключ=переклад, де ключ не містить =. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
2. Базовий рівень. Створити повну програму Java на JDK 27. Прочитати UTF-8 рядки ключ=переклад, де ключ не містить =; підтримати пошук і додавання з перевіркою дубліката. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
3. Високий рівень. Створити повну програму Java на JDK 27. Прочитати UTF-8 рядки ключ=переклад, де ключ не містить =; підтримати пошук і додавання з перевіркою дубліката; зберігати відсортовано через новий файл та перевірити кирилицю й порожні значення. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу.
Варіант 25. HTML-звіт
1. Початковий рівень. Створити повну програму Java на JDK 27. Прочитати записи назва–ціле значення з обмеженого CSV й створити HTML-таблицю. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
2. Базовий рівень. Створити повну програму Java на JDK 27. Прочитати записи назва–ціле значення з обмеженого CSV й створити HTML-таблицю; екранувати амперсанд, кутові дужки та лапки в тексті. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
3. Високий рівень. Створити повну програму Java на JDK 27. Прочитати записи назва–ціле значення з обмеженого CSV й створити HTML-таблицю; екранувати амперсанд, кутові дужки та лапки в тексті; додати підсумок і перевірити зловмисний текст як дані, без виконання HTML. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу.
Варіант 26. Навчальний бюджет
1. Початковий рівень. Створити повну програму Java на JDK 27. Зберегти вигадані категорії та суми в копійках у власному Serializable-стані. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
2. Базовий рівень. Створити повну програму Java на JDK 27. Зберегти вигадані категорії та суми в копійках у власному Serializable-стані; експортувати ті самі дані в обмежений CSV. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
3. Високий рівень. Створити повну програму Java на JDK 27. Зберегти вигадані категорії та суми в копійках у власному Serializable-стані; експортувати ті самі дані в обмежений CSV; використати фільтр десеріалізації й перевірити семантичну рівність двох форматів без фінансових порад. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу.
Варіант 27. Markdown-звіт
1. Початковий рівень. Створити повну програму Java на JDK 27. Прочитати записи назва–кількість і записати Markdown-таблицю. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
2. Базовий рівень. Створити повну програму Java на JDK 27. Прочитати записи назва–кількість і записати Markdown-таблицю; екранувати вертикальні риски й переноси в клітинках. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
3. Високий рівень. Створити повну програму Java на JDK 27. Прочитати записи назва–кількість і записати Markdown-таблицю; екранувати вертикальні риски й переноси в клітинках; додати відсортовані підсумки та перевірити порожній набір і спеціальні символи. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу.
Варіант 28. Маніфест SHA-256
1. Початковий рівень. Створити повну програму Java на JDK 27. Для звичайних файлів каталогу записати відносний шлях і SHA-256. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
2. Базовий рівень. Створити повну програму Java на JDK 27. Для звичайних файлів каталогу записати відносний шлях і SHA-256; перевірити файли за маніфестом і показати змінені та відсутні. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
3. Високий рівень. Створити повну програму Java на JDK 27. Для звичайних файлів каталогу записати відносний шлях і SHA-256; перевірити файли за маніфестом і показати змінені та відсутні; заборонити вихід шляхів за корінь, обробити дублікати маніфесту й не вважати хеш автентифікацією. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу.
Варіант 29. CSV до JSON
1. Початковий рівень. Створити повну програму Java на JDK 27. Прочитати обмежений CSV id,назва без лапок і ком у полях. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Id – додатне ціле long, назва – непорожній рядок; вивести таблицю id/назва і кількість записів. JSON-вивід, якщо передбачений рівнем, має об’єкти з числовим id і текстовим name.
2. Базовий рівень. Створити повну програму Java на JDK 27. Прочитати обмежений CSV id,назва без лапок і ком у полях; записати JSON-масив стандартною бібліотекою з правильним екрануванням лапок, backslash і керувальних символів. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Id – додатне ціле long, назва – непорожній рядок; вивести таблицю id/назва і кількість записів. JSON-масив містить об’єкти з числовим id і текстовим name.
3. Високий рівень. Створити повну програму Java на JDK 27. Прочитати обмежений CSV id,назва без лапок і ком у полях; записати JSON-масив стандартною бібліотекою з правильним екрануванням лапок, backslash і керувальних символів; відхиляти неправильні id й перевірити порожній набір та Unicode; не називати split повним CSV-парсером. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу. Id – додатне ціле long, назва – непорожній рядок; вивести таблицю id/назва і кількість записів. JSON-вивід, якщо передбачений рівнем, має об’єкти з числовим id і текстовим name.
Варіант 30. Записи читачів
1. Початковий рівень. Створити повну програму Java на JDK 27. Серіалізувати record ReaderCard з id та непорожнім ім’ям у власний локальний файл. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
2. Базовий рівень. Створити повну програму Java на JDK 27. Серіалізувати record ReaderCard з id та непорожнім ім’ям у власний локальний файл; перевірити інваріанти канонічним конструктором при відновленні. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл.
3. Високий рівень. Створити повну програму Java на JDK 27. Серіалізувати record ReaderCard з id та непорожнім ім’ям у власний локальний файл; перевірити інваріанти канонічним конструктором при відновленні; додати ObjectInputFilter, ліміти та тести неправильного кореневого типу й обірваного файла. Використати try-with-resources і окремий тестовий каталог; вивести підписаний результат. Перевірити порожній, неправильний та відсутній файл. Підтримати CLI ключ=значення і --help; без аргументів читати ті самі поля з клавіатури. Звіт – таблиця з підсумками, помилки – stderr. Коди: 0 успіх/довідка, 2 неправильний ввід, 1 операційний збій. Додати автоматизовані тести та перевірку EOF без останнього переносу.
Порядок виконання та захисту
- Опишіть формат і відмінність порожнього файла від порожнього набору.
- Відокремте читання, валідацію, обчислення та запис.
- Закрийте всі ресурси, включно з потоками Files.lines/list/walk.
- Перевірте відсутній шлях, неправильний заголовок, EOF без завершального переносу, обірваний запис і відмову перезапису.
- Подайте зразки входу, фактичні файли результатів і таблицю тестів.
- Поясніть, що відбувається зі старим результатом після збою.