Как принимать только функции?

Обсуждение вопросов, связанных с системой проведения турниров ejudge.
Post Reply
VPetr
Posts:5
Joined:22 November 2011, 16:43
Как принимать только функции?

Post by VPetr » 11 March 2012, 14:49

Как настроить турнир так, чтобы на проверку принимались не полные тексты программ, а только функции, написанные участниками?
То есть участники пишут не всю программу, а только её небольшую часть.
Остальная же часть программы добавлялась бы самой системой.

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: Как принимать только функции?

Post by cher » 13 March 2012, 10:11

Смотрите параметры задачи source_header и source_footer

VPetr
Posts:5
Joined:22 November 2011, 16:43

Re: Как принимать только функции?

Post by VPetr » 26 March 2012, 02:33

Спасибо, попробовал, работает.

VPetr
Posts:5
Joined:22 November 2011, 16:43

Re: Как принимать только функции?

Post by VPetr » 11 April 2012, 19:45

Возник вопрос. Перед компиляцией текст собирается из нескольких частей. Сейчас в версии 2.3.19 сделано так, что предварительную стилевую проверку проходит весь собранный текст. Если возникает ошибка, то у меня мой стилевой чекер распечатывает весь проверяемый текст до места стилевой ошибки, включая добавленные части (всегда то, что добавилось в начале ).
Как сделать так, чтобы стилевую проверку проходил только файл, сданный пользователем? (а не то, что получается после добавления - header и footer).

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: Как принимать только функции?

Post by cher » 14 April 2012, 07:19

Никак. Я думаю, можно модифицировать проверку стиля таким образом, чтобы не выводился текст,
отмеченный какими-нибудь специальными комментариями.

imslavko
Posts:17
Joined:21 March 2012, 20:18

Re: Как принимать только функции?

Post by imslavko » 21 May 2012, 21:08

А есть ли возможность, в зависимости от языка вставлять разные header?
Или как сделать так, чтобы именно для этой задачи можно было инклюдить свой файл? Тоесть чтобы работал #include "myheader.h"?

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: Как принимать только функции?

Post by cher » 21 May 2012, 22:04

http://ejudge.ru/wiki/index.php/%D0%A4% ... 0%BA%D0%B8

Можно написать

Code: Select all

source_header = "header_%Ln%Ls"
Форматные подстановки языков программирования есть в текущей версии SVN и будут в следующей версии.

imslavko
Posts:17
Joined:21 March 2012, 20:18

Re: Как принимать только функции?

Post by imslavko » 21 May 2012, 22:34

это печально, на нашем сайте 2.3.17

imslavko
Posts:17
Joined:21 March 2012, 20:18

Re: Как принимать только функции?

Post by imslavko » 21 May 2012, 22:36

а что по-поводу заголовочных файлов для конкретной задачи? Чтобы во время компиляции исходника в папке лежали также те файлы, которые я укажу?

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: Как принимать только функции?

Post by cher » 22 May 2012, 07:47

Вы можете настраивать опции компиляции для каждой задачи отдельно в файле serve.cfg, например,

Code: Select all

lang_compiler_env = "g++=EJUDGE_FLAGS=-O2 -Wall -std=gnu++0x -I/home/judges/000001/problems/A"
http://ejudge.ru/wiki/index.php/Serve.c ... mpiler_env

imslavko
Posts:17
Joined:21 March 2012, 20:18

Re: Как принимать только функции?

Post by imslavko » 23 May 2012, 22:31

Спасибо, а можно тоже самое для fpc? И как я понял, надо будет две строки в поле вписать? Я гуглил, чесно

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: Как принимать только функции?

Post by cher » 24 May 2012, 09:03

У fpc это, кажется, опции -Fi и -Fu.

Code: Select all

 lang_compiler_env = "fpc=-FuDIR -FiDIR"

imslavko
Posts:17
Joined:21 March 2012, 20:18

Re: Как принимать только функции?

Post by imslavko » 24 May 2012, 18:44

большое спасибо, все работает. Осталось только обновить ejudge на сервере.

aropan
Posts:64
Joined:13 April 2012, 18:22

Re: Как принимать только функции?

Post by aropan » 07 March 2016, 18:41

cher wrote:Вы можете настраивать опции компиляции для каждой задачи отдельно в файле serve.cfg, например,

Code: Select all

lang_compiler_env = "g++=EJUDGE_FLAGS=-O2 -Wall -std=gnu++0x -I/home/judges/000001/problems/A"
http://ejudge.ru/wiki/index.php/Serve.c ... mpiler_env
При Check contest settings это опция компиляции для задачи не учитывается (если я правильно проверял) и при сборке решений возникают проблемы. При посылки решения и тестировании все работало как надо. Как это сделать по нормальному? По ненормальном (нужно было решение) --- прописал нужные опции в compiler_env :), т. е. для всех задач (и тогда получилось прогнать Check contest settings по всем задачам).

И можно ли как-то не заменять опции EJUDGE_FLAGS, а добавить к нему опций? Думаю "g++=EJUDGE_FLAGS=EJUDGE_FLAGS ..." работать не будет (и если с $).

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: Как принимать только функции?

Post by cher » 11 March 2016, 09:44

Да, надо исправить.

Post Reply