Problems

Eolymp provides a robust system for hosting computer science problems along with an automated grading system that evaluates user submissions. Each problem requires participants to write a program that implements a specific algorithm. If the program produces the correct output for a given set of tests, the problem is marked as solved.

Eolymp offers flexible tools for creating problems and supports importing problems from external sources:

Concepts

Statements

A problem statement is a detailed description of the task participants need to solve. It outlines the problem’s objective, constraints, the format of input and output data, and other crucial details such as example inputs and outputs. A clear and well-structured statement is essential, as it provides participants with all the information they need to approach the problem. You can write statements in Markdown or LaTeX to support rich formatting and mathematical notation.

Code Templates

Code templates are predefined snippets of code that provide participants with a starting point for solving the problem. These templates often handle the basic structure, such as reading input and preparing output, so that participants can focus on implementing the core logic of the solution. You can create templates for different programming languages to help streamline the coding process for participants.

Testing

The key feature of Eolymp's system is its ability to automatically grade solutions submitted by users. After a participant submits a solution, the platform compiles the code and runs it against a series of test cases to verify if the algorithm works as expected.

Test cases

Test cases are the fundamental units of the grading process. Each test case consists of an input and an answer (expected output).

When a user submits a solution, the system runs the program for each test case, feeding it the input and capturing the program's output. The output is then compared to the expected result. If they match, the test is marked as passed and the user is awarded points.

Testsets

Testsets are collections of test cases that allow you to organize the problem's tests into sub-tasks, each with its own scoring configuration and constraints. For example, you might have a basic testset that checks basic functionality and an advanced testset that tests edge cases or larger inputs. Each testset can have its own time, CPU, and memory constraints.

Testsets are valuable when you want to assign different weights to different parts of the problem. You can also use them to provide partial scores, where participants receive points for solving simpler cases even if they don’t fully solve the harder ones.

Checkers

A checker is a program that compares the output generated by the participant’s solution to the expected output. While Eolymp provides built-in checkers for common use cases (such as exact matches or tokenized comparisons), you can also create custom checkers for more complex output validation.

Interactors

An interactor is a special program that interacts with the participant’s solution during execution. Instead of just feeding static input to the program, the interactor can "communicate" with the solution by reading its output and providing additional input based on the program's responses. This allows for problems where dynamic interaction is part of the solution process.

A classic example of a problem using an interactor might be a guessing game where the solution tries to guess a number, and the interactor provides feedback (e.g., "too low" or "too high") after each guess.