Інтерактор — це спеціальна програма, яка взаємодіє з рішенням учасника під час його виконання. Замість того, щоб просто передавати статичні дані на вхід програми, інтерактор може "спілкуватися" з рішенням, зчитуючи його вивід та надаючи додаткові дані на основі відповідей програми. Це дозволяє створювати задачі, де динамічна взаємодія є частиною процесу розв'язання.
Класичний приклад задачі з використанням інтерактора — це гра "вгадай число", де рішення намагається вгадати число, а інтерактор надає зворотний зв'язок (наприклад, "занадто мало" або "занадто багато") після кожної спроби.
Щоб налаштувати інтерактор для вашої задачі, виконайте наступні кроки:
Відкрийте консоль і виберіть простір, де розміщена задача.
Перейдіть у розділ Задачі в лівому меню.
Виберіть задачу, яку хочете змінити.
Перейдіть у розділ Тестування в меню задачі.
Натисніть на Інтерактор, щоб налаштувати його.
Рис. 1. Форма налаштування інтерактора
Налаштування інтерактора полягає у виборі середовища виконання (мови програмування) та вказуванні вихідного коду для інтерактора.
Інтерактор запускається для кожного тесту перед рішенням учасника і працює до завершення тестування. Він налаштований на те, щоб зчитувати дані зі стандартного виводу рішення, а вивід інтерактора надсилається на стандартний вхід рішення. Це створює двосторонній канал зв'язку між інтерактором та рішенням, де програми по черзі надсилають запити та очікують відповіді. Взаємодія зазвичай слідує чітко описаному протоколу, який має бути докладно викладений в умові задачі.
Крім цього, інтерактор може отримати доступ до файлів input.txt, output.txt (відповідь учасника) та answer.txt (правильна відповідь). Файл input.txt зазвичай використовується для налаштування поведінки інтерактора, тоді як output.txt та answer.txt застосовуються чекером для перевірки рішення. Імена файлів для вхідних даних, виводу та відповіді передаються інтерактору як аргументи, і ми настійно рекомендуємо використовувати аргументи замість жорсткого кодування імен файлів. Інтерактор виконується таким чином:
interactor input.txt output.txt answer.txt < /solution-output > /solution-input
Код завершення інтерактора вказує на успішність взаємодії. Код 0 означає, що взаємодія завершилася успішно, і система може перейти до стадії перевірки. Код 1 призведе до вердикту "Неправильна відповідь" для тесту. Будь-який інший код завершення сигналізує про помилку в роботі інтерактора і призведе до присвоєння статусу "Системна помилка".