Вас вітає Algotester!
- Що таке Algotester?
- Що потрібно зробити щоб почати користуватись Algotester-ом?
- Я хочу спробувати розв'язати одну дуже просту задачу і, якщо сподобається, то більше.
- Я отримав результат "Неправильна відповідь" на задачі "A плюс B".
Неправильна відповідь |
На деяких вхідних даних, які дозволені згідно з умовою, ваша програма повертає іншу (неправильну) відповідь ніж розв'язок авторів задачі |
Помилка часу виконання |
Програма неочікувано завершила роботу (run-time error). |
Перевищено ліміт часу |
Програма працює на одному тесті повільніше, ніж ліміт, зазначений в умові задачі |
Перевищено ліміт пам'яті |
Програма використовує на одному тесті більше оперативної пам'яті, ніж зазначено в умові задачі |
Помилка компіляції |
Компілятор видав помилку при компіляції вашого вихідного коду. |
Зараховано |
Це єдиний вердикт який хороший для вас — ваша задача повністю правильна і пройшла всі тести! |
- Чи можу я порівняти свої успіхи в розв'язуванні задач з успіхами інших учасників?
- Архів це круто, але чи можу я взяти участь у реальному змаганні?
- Я хочу навчитись чогось нового, але не знаю звідки.
Без проблем — щочетверга в стінах ЛНУ ім. І. Франка проводиться Коледж алгоритмічного програмування — безкоштовні заняття для тих, хто хоче дізнатись більше, навчитись нових алгоритмів та перебрати досвіду від досвідчених учасників. Детальніше про це можна дізнатись в секції "Коледж" нашого сайту.
-
Приклади розв'язку задачі "A плюс B" різними мовами програмування:
-
C++
#include <iostream> using namespace std; int main() { int a, b; cin >> a >> b; cout << a + b << endl; return 0; }
-
C#
using System; class Algotester { public static void Main(string[] args) { string[] line = Console.ReadLine().Split(' '); int a = Int32.Parse(line[0]); int b = Int32.Parse(line[1]); Console.WriteLine(a + b); } }
-
Java
import java.util.Scanner; public class Algotester { public static void main(String[] args) { Scanner in = new Scanner(System.in); int a = in.nextInt(); int b = in.nextInt(); System.out.println(a + b); } }
-
Pascal
var a, b : integer; begin read(a, b); writeln(a + b); end.
-
Python 3
a, b = input().split() a, b = int(a), int(b) print(a+b)
-
F#
open System let sum = Console.ReadLine().Split() |> Seq.map System.Int64.Parse |> Seq.sum printfn "%d" sum
-
C++
- У правому меню сайту algotester.com відкрити секцію “Задачі (Автор)”. В цій секції відображаються всі додані вами задачі, а також ті задачі, автор яких вказав вас помічником.
- Натиснути кнопку “Створити”.
- Ввести назву задачі, вказати обмеження (часу виконання одного тесту, використаної оперативної пам’яті на одному тесті, розміру виводу програми на одному тесті).
- Вказати достовірник (checker) – програму яка перевіряє вивід учасника на правильність. У випадку звичайних задач, в яких відповідь однозначна, достатньо вибрати вже реалізований Token Cheсker. Поля “Основний розв’язок” та “Validator” можна наразі залишити пустими.
- Тепер в секції “Задачі (автор)” появилася нова задача з вказаною вами назвою.
- Натиснувши по назві задачі відкривається секція редагування вашої задачі.
- У вкладці “Умови” можна додавати умови задачі на різних мовах. Для того щоб додати умову на українській мові необхідно виконати наступні дії:
- Натиснути кнопку “Створити”, вказати українську мову та ввести назву задачі;
- Відкрити додану умови у списку всіх умов;
- Ввести текст умови. Для зручності умова розбита на декілька блоків: опис, ввід, вивід, обмеження та примітки. Умови слід писати мовою розмітки latex. Для простоти можна знайти умову задачі A+B та робити все за зразком;
- Повернутись назад до списку умов, вибрати додану умову та натиснути “Надіслати”;
- Для того щоб переглянути саму умову, потрібно вибрати вкладку “Результат”;
- Просимо дотримуватись наших рекомендацій щодо написання умов задач.
- У вкладці “Першоджерела” слід створити наступні два файли:
- Розв’язок задачі однією із доступних мов програмування – вихідний код, який система буде компілювати і виконувати для отримання тестів та звірення результату із результатами учасників;
- Перевірник (Validator) – дуже проста але важлива програма, написана довільною доступною мовою програмування, яка повинна зчитувати один тест і перевіряти, чи всі задані параметри задовольняють вказані в умові обмеження. В разі коректного тесту програма не повинна виводити нічого, а в разі помилки – вивести у консоль короткий текст-пояснення помилки. Для зразку можна переглянути перевірник для задачі Марічка і смачні цукерки (зауважте, що при створенні першоджерел пропонується також додати файли типу “generator” та “checker”, однак для простих задач цілком достатньо лише розв’язку та перевірника). Після створення розв’язку та перевірника їх слід вказати як основні для задачі. Для цього необхідно перейти до вкладки “Home” (з малюнком хатки), там натиснути “Змінити” і вказати основний розв’язок та перевірник.
- У вкладці “Тести” можна додавати тести, на яких буде перевірятись розв’язок учасника з авторським. Для того, щоб додати ручний (manual) тест, тобто тест, для якого вхідні та вихідні дані введені вручну автором, необхідно натиснути кнопку “Створити”, а потім вибрати “Ручний тест”. Далі потрібно ввести коротку назву тесту (як “Приклад з умови”, “Максимальний тест”, “Дуже хитрий тест”), вказати, чи потрібно додавати тест як приклад в умову, ввести ввід та очікуваний вивід та натиснути кнопку “Створити”. Для того, щоб генерувати тести програмно, потрібно створити генератор, а пізніше додати тести як набір параметрів, з якими буде запускатись генератор.
- Після заповнення вище описаних вкладок слід перейти назад до секції “Автор”, виділити додану вами задачу та натиснути “Надіслати”. В разі успішного створення задачі у колонці “Стан” появиться надпис “Успішно завершено”. У протилежному разі слід перейти у вкладку "Результат" задачі та отримати детальне повідомлення про те, що пішло не так.
Генератор
- Генератор - програма, яка дозволяє автоматизувати процес створення тестів для задачі. Ця програма є звичайною консольною аплікацією, яка приймає параметри і виводить один або більше тестів на основі цих параметрів. Наприклад, генератор може приймати аргумент maxN і виводити тест, вибравши N довільним випадковим числом від 1 до maxN. Ось приклад генератора до задачі Тренер слонів. Зауважте, що оскільки одним генератором з тими самими параметрами може бути потрібно згенерувати багато тестів, першим параметром передається номер тесту, для того щоб можна було зробити srand (вказати seed генератора випадкових чисел) відносно цього номера.
- Для того, щоб додати генератор, необхідно перейти на вкладку "Першоджерела" та додати вихідний код з типом "Генератор". Для того, щоб додати тести, згенеровані генератором, слід перейти до вкладки "Тести", далі "Створити", далі "Тест генератора". На цій сторінці потрібно ввести короткий опис тесту, кількість тестів, ввід аргументів запуску, а також обрати генератор, яким потрібно генерувати тест.
Достовірник
- Достовірник (Checker) - програма, яка визначає чи відповідь яку вивів користувач на один тест є правильною. Для більшості задач достатньо використовувати стандартні достовірники системи - це Token Checker (перевіряє на збіг лише частини виводу, отримані розбиттям по whitespace символам) та Double Checker (порівнює дійсні числа з заданою точністю).
- Однак іноді буває, що в задачі існує більше одного розв'язку, тоді потрібно написати достовірник самостійно. Достовірник це також консольна програма, якій передаються три параметри - вхідні дані тесту, авторська відповідь на тест та відповідь учасника. В разі помилки у відповіді учасника, достовірник повинен вивести причину помилки, якщо ж все гаразд, він не повинен виводити нічого. Ось приклад достовірника для задачі Марічка і смачні цукерки.