Задачі

Eolymp це надійна система для розміщення задач з інформатики та автоматична система оцінювання, яка перевіряє відправки користувачів. Кожна задача вимагає від учасників написати програму, що реалізує певний алгоритм. Якщо програма видає правильний результат для заданого набору тестів, задача вважається вирішеною.

Eolymp пропонує гнучкі інструменти для створення задач і підтримує імпорт задач з інших джерел:

Основні поняття

Умови

Умова задачі — це текстовий документ, який пояснює завдання, яке повинні виконати учасники. Він містить мету задачі, обмеження, формат вхідних і вихідних даних, а також інші важливі деталі, як-от приклади вхідних та вихідних даних. Чітка і добре структурована умова це ключова частина задачі, оскільки вона надає учасникам інформацію необхідну для розв’язання задачі. Умови записуються використовуючи формати Markdown або LaTeX, що підтримують багате форматування та математичні нотації.

Шаблони коду

Шаблони коду — це заздалегідь підготовлені фрагменти коду, що надають учасникам початкову точку для розв’язання задачі. Ці шаблони зазвичай реалізовують базові функції, як-от зчитування вхідних даних і підготовка виводу, та допомагають учасникам зосередитися на реалізації основної логіки рішення. Ви можете створювати декілька шаблонів для різних мов програмування.

Тестування

Ключовою особливістю системи Eolymp є здатність автоматично оцінювати рішення, відправлені користувачами. Після відправки рішення платформа компілює код і запускає його на наборі тестів, щоб перевірити правильність алгоритму.

Тести

Тести є базовими елементами оцінювання. Кожен тест складається з вхідних даних і очікуваного результату (відповіді).

Коли користувач відправляє рішення, система запускає програму для кожного тестового випадку, передаючи їй вхідні дані та фіксуючи вивід програми. Потім цей вивід порівнюється з очікуваним результатом. Якщо вони збігаються, тест вважається пройденим, і користувач отримує бали за нього.

Набори тестів

Набори тестів — це групи тестів, що дозволяють організувати тести задачі в підзадачі, кожна з яких має свою конфігурацію оцінювання та обмеження. Наприклад, ви можете створити набір базових тестів для перевірки основної функціональності та набір розширених тестів для перевірки граничних випадків або великих вхідних даних. Кожен набір тестів може мати власні обмеження на час, використання процесора та пам'яті.

Набори тестів особливо корисні, коли ви хочете призначити різну вагу різним частинам задачі. Також вони дозволяють надавати часткові бали, коли учасники отримують бали за простіші випадки, навіть якщо вони не розв’язали складніші.

Чекери

Чекер — це програма, яка порівнює вивід, згенерований рішенням учасника, з очікуваним результатом. Eolymp має вбудовані чекери для найбільш поширених випадків (як-от точний збіг або порівняння за токенами), але ви також можете створювати власні чекери для складніших перевірок, наприклад якщо у задачі може бути декілька правильних відповідей.

Інтерактори

Інтерактор — це спеціальна програма, яка взаємодіє з рішенням учасника під час його виконання. Замість того, щоб просто подавати статичні вхідні дані програмі, інтерактор може "спілкуватися" з рішенням, зчитуючи його вивід і надаючи додаткові вхідні дані на основі відповідей програми. Це дозволяє створювати задачі, де динамічна взаємодія є частиною процесу вирішення.

Класичним прикладом задачі з інтерактором може бути гра, де рішення намагається вгадати число, а інтерактор дає зворотний зв’язок (наприклад, "забагато" або "замало") після кожної спроби.