Tutorial
- Авторизованный учитель
- Просмотр списка посылок
- Редактирование задач
- Создание групп школьников
- Создание курса
- О задачах
- Создание задач
- Редактирование задач
- Мониторы
- Статусы посылок
Задачи | Гость | Школьник | Команда | Учитель | Авторизованный учитель | Редактор |
---|---|---|---|---|---|---|
Просмотр материалов сайта | + | + | + | + | + | + |
Просмотр закрытых материалов | при наличии ключа | при наличии ключа | при наличии ключа | при наличии ключа | ||
Сдача решений в тестирующую систему | + | во время виртуального турнира | + | + | ||
Просмотр списка посылок | + | + | + | + | ||
Просмотр текстов и протоколов своих программ | + | + | + | + | ||
Просмотр чужих посылок | + | |||||
Создание групп школьников | + | + | ||||
Создание своих курсов и материалов | + | + | ||||
Создание задач | + | + | + | + | + | |
Редактирование условий, разборов, тем | + | |||||
Предложение новых тем к задаче | + | + | + | + | + | |
Создание мониторов | + | + | ||||
Комментирование посылок участников | + | + | ||||
Редактирование статусов посылок | + |
Авторизованный учитель
Статус авторизованного учителя на informatics.mccme.ru
На ресурсе informatics существует специальный тип пользователей — авторизованный учитель.
Он имеет возможность просматривать все посылки участников (исходные коды, протоколы и тесты).
Авторизованным учителями могут стать учителя и руководители кружков, которые смогут подтвердить свой статус учителя и пройти процедуру аккредитации.
Чтобы получить статус авторизованного учителя, зарегистрируйтесь как учитель и заведите тикет https://informatics.msk.ru/support/, приложив следующую информацию о себе:
Ваш логин в системе.
Ссылка на страницу образовательной организации, в которой Вы работаете.
Ссылка на свой курс на informatics
Напоминаем, что при наличии роли авторизованного учителя строго запрещается:
Копировать и публиковать и распространять тесты к задачам.
Изменять статусы посылок пользователей, которые не являются слушателями курса Авторизованного учителя.
Просмотр списка посылок
Всем пользователям сайта доступны списки посылок: собственных по данной задаче (отображаются на странице задачи), всех пользователей по данной задаче (ссылка Посылки над условием задачи), всех пользователей по задачам данного контеста и пользователей ваших групп по задачам данного контеста (отображаются слева от условий задач), а также все собственные посылки по всем задачам (ссылка Мои посылки на главной странице) и всех посылок на сайте (ссылка Последние посылки в разделе Статистика на главной странице сайта).
Кроме того, для собственных посылок (а для авторизованных учителей — для всех посылок всех пользователей) по ссылке подробнее можно просмотреть исходный код посылки, полный протокол проверки, а также входные и выходные данные на каждом тесте.
Редактирование задач
Отдельным пользователям дополнительно предоставляются права Редактор сайта. Эти пользователи могут редактировать условия и разборы всех задач, а также указывать новые и редактировать старые темы, отнесенные к задаче.
Кроме того, каждый пользователь может предложить добавить к задаче ту или иную тему из тематического рубрикатора. Эти предложения вступают в силу после авторизации администратором.
Создание групп школьников
Для наблюдения за успехами ваших школьников вы можете объединять их в группы. У вас, как у создателя группы, и у всех включенных вами в группу участников на странице каждого контеста появятся новые ccылки: таблица результатов данной группы и список всех посылок данной группы:
Группу может создать любой учитель. В группу можно включать как школьников, так и других учителей (при этом изменять состав группы может только ее создатель или администраторы сайта).
Для того, чтобы создать группу:
- На главной странице в левом верхнем углу щелкните по ссылке Управление группами.
- На открывшейся странице щелкните по ссылке новая группа
- Введите название группы (например, «школа 125, 9А класс» и нажмите на кнопку создать.
- В правом окошке размещен список всех пользователей сайта. Вам предстоит выбрать нужных вам участников и перетащить их мышкой в левую часть. Для поиска нужных людей вы можете воcпользоваться сортировкой по любому столбцу (для этого достаточно щелкнуть по его заголовку) а также поиском в столбце (для этого необходимо навести мышку на правый конец заголовка нужного столбца, щелкнуть по появившейся стрелочке, выбрать в меню Фильтр и ввести текст для поиска (например, фамилию ученика, номер школы или город).
- Найти нужного школьника и мышкой перетащить в левую таблицу. Он сразу же будет добавлен в группу.
Чтобы исключить школьника из группы, нужно перетащить его из левой таблички в правую.
Создание курса
Каждый учитель может создавать на сайте свои курсы:
Курс может включать в себя несколько разделов, состоящих из материалов различного типа: контестов, теоретических материалов, тестов, заданий, ссылок на файлы и веб-страницы, таблиц результатов и т.д. Ссылки на все созданные курсы отображаются на главной странице в разделе Кружки и уроки.
Для создания нового курса необходимо:
- Щелкнуть по ссылке Создать курс в левом верхнем углу главной страницы сайта.
- Указать Полное название курса. Оно обязательно должно содержать название учебного заведений или города!
- Выбрать короткое имя курса, которое будет указываться в строке меню.
- В поле количество недель/тем указать количество разделов (на рисунке выще они пронумерованы цифрами 1,2)
- Если вы хотите временно скрыть курс от посетителей сайта (до начала занятий или на время разработки), в пункте Доступность выберите Курс не доступен для студентов.
- Если вы не хотите допускать в курс посторонних, введите Кодовое слово и сообщите его всем участникам курса.
- Нажмите кнопку Сохранить. После этого вы окажетесь внутри созданного вами курса.
В дальнейшем вы всегда сможете изменить любой из указанных параметров курса.
Добавление учебных материалов
Для начала редактирования курса нажмите кнопку Редактировать в правом верхнем углу на страничке курса.
Курс состоит из вводного раздела (без номера), в котором собрана информация и материалы, относящиеся ко всему курсу целиком, а также пронумерованных разделов (1, 2, 3, …) каждый из которых может соответствовать по вашему желанию одному занятию, одному классу, одному мероприятию и т.п.
Для указания названия (или вступления) к разделу, нажмите на в левом верхнем углу соответствующего раздела. В этом поле вы можете написать любой текст в формате html, например:
<b>Условный оператор</b><br>Задачи этого раздела нужно сдать до 5 февраля.
или просто указать название раздела, например:
Условный оператор
Далее, в каждый раздел вы можете добавить различные учебные материалы, выбрав соответствующую строчку в выпадающем меню. Приведем краткие описания наиболее полезных видов материалов.
- Условия задач: контест, составленный из задач, имеющихся в тестирующей системе сайта. Школьникам будут доступны условия задач и возможность сдачи решений в тестирующую систему. Отметим, что эти материалы являются основным содержанием сайта, и мы надеемся, что вы будете создавать курсы с использованием задач с автоматическим тестированием.
- Таблица результатов: сводная таблица по нескольким контестам для данной группы.
- Пояснение: небольшой фрагмент текста на странице курса (в формате html)
- Текстовая страница: отдельный текстовый документ, который вы планируете написать, со ссылкой на него со страницы курса.
- Веб-страница: то же, но в формате html
- Ссылка на файл или веб-страницу: ссылка на существующую страницу в сети интернет или на страницу или файл на данном сайте. Вы также можете предварительно закачать файлы в свой курс и поставить ссылку на них.
Также вы можете создавать тесты, задания. опросы и т.п.
После создания любого материала справа от него появятся значки: перенести вправо (сделать отступ), перенести (в другое место курса), редактировать (сам материал и/или его настройки), удалить, спрятать (от школьников).
Создание контеста
Контест — это набор задач на одну тему, либо предлназначенный для решения на одной олимпиаде, тренировке итп.
Для каждого контеста доступна своя таблица результатов, а также список посылок, сделанных школьниками по задачам данного контеста. Одна задача может входить в разные контесты, при ее решении результаты (в таблице результатов и списке посылок) появляются сразу во всех контестах, содержащих данную задачу.
Для создания контеста выберите в выпадающем меню Добавить ресурс в соответствующем разделе вашего курса пункт Условия задач. В поле название укажите заголовок контеста (например: Условный оператор или Тренировка №5). Если вы планируете провести олимпиаду и контрольную работу, вы можете отметить флажок Не показывать разборы, темы и т.д. — в этом случае школьникам не будут показываться различные подсказки.
Если вы пока не хотите открывать данный контест для школьников, выберите в пункте Доступные вариант Спрятать.
Нажмите кнопку Сохранить.
После этого вы сможете выбрать задачи для данного контеста. Для этого есть два основных способа:
-
Выбрать задачи из тематического рубрикатора. После перехода по данной ссылке вы попадете в тематический рубрикатор. Там присутствуют не все, но большая часть задач, имеющихся в тестирующей системе, и он постоянно пополняется. Под каждой задачей есть ссылка добавить, которая перемещает данную задачу в ваш контест. После выбора всех необходимых задач нужно нажать ссылку Создать контест в левом верхнем углу.
-
Добавить задачи по id (идентификационному номеру). Вы можете предварительно выбрать интересующие вас задачи в других разделах сайта и выписать себе их номера, а затем ввести их, перейдя по данной ссылке.
Продвинутым пользователям, знакомым со структурой контестов в ejudge данного сайта, доступна также возможность выбирать задачи непосредственно из контестов в тестирующей системе.
После выбора задач вы можете менять их порядок и удалять или скрывать те или иные задачи.
О задачах
Задача — это основной объект на данном сайте. Данный сайт в первую создавался в первую очередь как база задач по программированию для школьников с автоматической проверкой. Чтобы успешно использовать его в своей деятельности, необходимо прежде всего понять, что такое задача и как она устроена.
Структура задачи
Каждая задача включает в себя:
- Id — уникальный числовой идентификатор, по которому вы можете получить доступ к данной задаче из окошка на главной странице, по которому вы можете добавить задачу в контест и который удобнее всего использовать при ссылке на данную задачу.
- Название задачи
- Условие задачи — хранится на сайте в формате html. Некоторые задачи опуликованы без условий, либо по лицензионным соображениям (задачи взяты из книг), либо потому что добавивший их учитель не хочет раньше времени показывать условие ученикам.
- Темы — большинству задач приписаны одна или несколько тем из Тематического рубрикатор. Вы можете предложить новые темы для каждой задачи, после одобрения администратором они будут прикреплены к задаче.
- Разбор — описание решения задачи. Как правило, разборы написаны школьниками-участниками сайта, и мы не несем ответственности за их содержание и грамотность. При этом данные тексты часто бывают полезны школьникам, поэтому пока мы оставили их на сайте в таком виде.
- Описание — краткий текст для учителя, описывающий задачу и/или ее решение.
- Тестирующий модуль: тесты и проверяющие программы — практически все задачи на сайте сопровождаются возможностью их автоматической проверки.
- Посылки — список всех посланных на проверку решений с указанием результатов проверки. Авторизованным учителям и администраторам также доступны тексты всех решений и тестов и правильных ответов. Остальным участникам доступны только тексты своих решений, протоколы проверки, а также — для некоторых задач, как правило, личных олимпиад начального уровня — тесты и правильные ответы.
- Результаты — таблица результатов по данной задаче.
Одна и та же задача может присутствовать в разных контестах, при этом сдача решения в одном контесте влечет за собой появление информации о посылке и результатах данного участника по данной задаче во всех контестах, куда входит эта задача.
Список всех ваших посылок доступен в меню на главной странице сайта (ссылка Мои посылки).
Создание задач
Редактирование задач
Отдельным пользователям дополнительно предоставляются права Редактор сайта. Эти пользователи могут редактировать условия и разборы всех задач, а также указывать новые и редактировать старые темы, отнесенные к задаче.
Кроме того, каждый пользователь может предложить добавить к задаче ту или иную тему из тематического рубрикатора. Эти предложения вступают в силу после авторизации администратором.
Мониторы
Иногда бывает удобно объединить в одну таблицу результатов несколько контеcтов (например, все уроки данного класса или два тура одной олимпиады).
Создание таких таблиц результатов делается в два шага.
-
Создание набора контестов (монитора). На главной странице в разделе Рабочий стол учителя пройдите по ссылке Управление мониторами, далее: создать монитор и укажите название создаваемого монитора. Выберите контесты, которые необходимо в него включить и перетащите их мышью из правой таблицы в левую.
-
Создание таблицы результатов. Находясь в своем курсе, нажмите кнопку редактировать, в нужном разделе в выпадающем меню Добавить реcурс… выберите пункт Таблица результатов. Укажите ее название, выберите в пункте Таблица результатов созданный вами в п.1 монитор, а в пункте Группа — интересующую вас группу школьников либо пункт Все участники. Нажмите Сохранить.
В мониторе указываются только те участники, которые сделали в указанных контестах хотя бы одну посылку, и только те контестых, в которых указанные участники сделали хотя бы одну посылку.
Чтобы сделать монитор по секретной ссылке, можно сделать следующее:
- найти id нужных контестов, например https://informatics.mccme.ru/course/view.php?id=34 — id это 34
- сгенерировать секретную ссылку, для этого нужно отправить POST-запрос на /py/monitor, с нужными параметрами
Параметры:
contest_id=1&contest_id=2&contest_id=3 … — нужные id контестов aka модулей курсов
group_id=4 — группа, по которой делается монитор, если не указывать, будет по всем пользователям
time_before=1521742439 — время в timestamp, до которого собирать посылки
time_after=1521742439 — время в timestamp, после которого собирать посылки
Можно сделать это например с помощью js в консоли браузера на сайте информатикса:
url = 'https://informatics.msk.ru/py/monitor?contest_id=19635&group_id=11139'
jQuery.post(url, (data) => console.log(data))
> {link: "b1gefbmozwa72hasnj8z"}
или
url = 'https://informatics.msk.ru/py/monitor?contest_id=19635&group_id=11139&time_before=1521742439'
jQuery.post(url, (data) => console.log(data))
> {link: "g0fa6u928we50w1pdow9"}
Из запроса вернётся JSON с токеном для доступа к монитору
- Вставить токен вот сюда, https://informatics.msk.ru/py/monitor//render — это будет собственно монитор, например
https://informatics.msk.ru/py/monitor/b1gefbmozwa72hasnj8z/render
https://informatics.msk.ru/py/monitor/g0fa6u928we50w1pdow9/render
Параметры:
partial_score=on — показывать баллы, например:
https://informatics.msk.ru/py/monitor/b1gefbmozwa72hasnj8z/render?partial_score=on
Так же можно получить и чистый JSON:
https://informatics.msk.ru/py/monitor/b1gefbmozwa72hasnj8z
https://informatics.msk.ru/py/monitor/g0fa6u928we50w1pdow9
Чтобы сгенерировать ссылку, нужно быть авторизованным учителем; чтобы увидеть монитор, нужно быть залогиненым
Статусы посылок
После автоматического тестирования каждое решение получает статус проверки: OK, неполное решение, превышен лимит времени, превышен лимит памяти, и т.д.
Авторизованные учителя могут вручную изменять статус проверки. Обычно вручную устанавливаются следующие статусы:
- Ошибка оформления кода: этот статус устанавливается учителем, если ему не нравится, как отформатирован код, как названы переменные и т.п.
- Проигнорировано: этот статус означает, что учитель по тем или иным причинам не хочет засчитывать данное решение (например, использован не тот алгоритм итп)
- Дисквалифицирован: решение не засчитано по причине списывания и т.п.
Варианты статусов посылок
Сокращение | In English | Расшифровка |
---|---|---|
OK | OK | OK |
RJ | Rejudge | Перетестировать |
AC | Accepted for Testing | Зачтено/Принято |
SV | Style Violation | Ошибка оформления кода |
IG | Ignore | Проигнорировано |
CE | Compilation Error | Ошибка компиляции |
DQ | Disqualified | Дисквалифицировано |
PT | Partial Solution | Частичное решение |
PD | Pendin | Ожидает проверки |
RT | Run-Time Error | Ошибка во время выполнения программы |
TL | Time-Limit Exceeded | Превышено максимальное время работы |
PE | Presentation Error | Неправильный формат вывода |
WA | Wrong Answer | Неправильный ответ |
CF | Check Failed | Ошибка проверки, обратитесь к администраторам |
ML | Memory Limit Exceeded | Превышение лимита памяти |
SE | Security violation | Security error |
RU | Running | Проверяется |
CG | Cpmpilling | В очереди компиляции или компилируется |
AW | Awaiting | В очереди проверки |
1 minute read
При работе на сайте дистанционной подготовки по информатике (informatics.mccme.ru или informatics.msk.ru) часто возникает потребность отфильтровать посылки по пользователю, по языку, по вердикту.
Самим сайтом такая возможность, к сожалению, не предоставляется, но фильтр можно подобрать, просто изменяя URL.
URL посылок в общем виде выглядит следующим образом
https://informatics.msk.ru/mod/statements/view3.php?chapterid=1&submit#1
Здесь нас интересует часть chapterid=1. Это параметр фильтра посылок. Таблица ниже приводит ещё несколько параметров.
Параметр | Значение |
---|---|
chapterid | id задачи (можно найти на странице задачи Задача №1664 ) |
status_id | id статуса посылки |
user_id | id пользователя (можно найта в url его страницы https://informatics.msk.ru/moodle/user/view.php?id=302820 ) |
lang_id | id компилятора |
Статусы посылок
id | Статус |
---|---|
0 | OK |
1 | Ошибка компиляции |
2 | Ошибка во время выполнения программы |
3 | Превышено максимальное время работы |
4 | Неправильный формат вывода |
5 | Неправильный ответ |
6 | Ошибка проверки, обратитесь к администраторам |
7 | Частичное решение |
8 | Зачтено/Принято |
9 | Проигнорировано |
10 | Дисквалифицировано |
14 | Ошибка оформления кода |
Компиляторы
id | Компилятор |
---|---|
1 | Free Pascal 3.0.2 |
2 | GNU C 7.2.0 |
3 | GNU C++ 7.2.0 |
7 | Turbo Pascal |
8 | Borland Delphi 6 — 14.5 |
18 | Java JDK 1.8 |
22 | PHP 7.1.13 |
23 | Python 2.7.10 |
24 | Perl 5.26.1 |
25 | Mono C# 4.8 |
26 | Ruby 2.4.3 |
27 | Python 3.6.4 |
28 | Haskell GHC 8.0.2 |
29 | FreeBASIC 1.05.0 |
30 | PascalABC 3.1.0.1198 |
Пример
Например, мы хотим выбрать все мои (id=302820) посылки по задаче “1664. Суперсумма”:
https://informatics.msk.ru/mod/statements/view3.php?chapterid=1664&user_id=302820&submit#1
А теперь только посылки на языке Python 3:
https://informatics.msk.ru/mod/statements/view3.php?chapterid=1664&lang_id=27&user_id=302820&submit#1
Или все успешные посылки по всем пользователям на языке C++:
https://informatics.msk.ru/mod/statements/view3.php?chapterid=1664&lang_id=3&status_id=0&submit#1
PS
Подобные фильтры можно применять и на других страницах. Например, нам потребовалось получить все успешные посылки пользователя на языке Free Pascal. Для примера опять же использую свой id:
https://informatics.msk.ru/submits/view.php?user_id=302820&lang_id=1&status_id=0#1
milwey 0 / 0 / 0 Регистрация: 26.10.2021 Сообщений: 14 |
||||
1 |
||||
В чем здесь ошибка, не понимаю03.11.2021, 15:40. Показов 4075. Ответов 11 Метки нет (Все метки)
Ошибка оформления кода. stdout: stderr:
__________________
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
03.11.2021, 15:40 |
11 |
4055 / 2993 / 1079 Регистрация: 21.03.2016 Сообщений: 7,543 |
|
03.11.2021, 17:34 |
2 |
а что в вашей портянке можно понять??? выделить и по скринам действовать
3 |
milwey 0 / 0 / 0 Регистрация: 26.10.2021 Сообщений: 14 |
||||
03.11.2021, 20:06 [ТС] |
3 |
|||
0 |
Status 418 3152 / 1859 / 528 Регистрация: 26.11.2017 Сообщений: 4,568 Записей в блоге: 2 |
|
03.11.2021, 20:11 |
4 |
Semen-Semenich, теперь отступам придется учить
1 |
0 / 0 / 0 Регистрация: 26.10.2021 Сообщений: 14 |
|
03.11.2021, 20:19 [ТС] |
5 |
там после «:» должно быть четыре пробела. stdout: stderr:
0 |
3692 / 2275 / 491 Регистрация: 07.11.2019 Сообщений: 3,835 |
|
03.11.2021, 20:21 |
6 |
milwey, отступы сделай!
0 |
0 / 0 / 0 Регистрация: 26.10.2021 Сообщений: 14 |
|
03.11.2021, 20:27 [ТС] |
7 |
Вот такая задача: Вывод Добавлено через 1 минуту
0 |
3692 / 2275 / 491 Регистрация: 07.11.2019 Сообщений: 3,835 |
|
03.11.2021, 20:27 |
8 |
milwey, пробелами, как и в редакторе кода.
1 |
milwey 0 / 0 / 0 Регистрация: 26.10.2021 Сообщений: 14 |
||||
03.11.2021, 20:40 [ТС] |
9 |
|||
Добавлено через 3 минуты stdout: stderr: Я не знаю, как ее исправить
0 |
3692 / 2275 / 491 Регистрация: 07.11.2019 Сообщений: 3,835 |
|
03.11.2021, 20:48 |
10 |
milwey, тебе пишет ошибку, что проблемы с отступами. Исправь отступами (пробелами). Почитай про форматирование кода в Python отступами, если проблемы с пониманием.
0 |
Модератор 33881 / 18908 / 3981 Регистрация: 12.02.2012 Сообщений: 31,714 Записей в блоге: 13 |
|
04.11.2021, 08:18 |
11 |
milwey, пока не научишься правильно расставлять тэги — не трогай Питон!
1 |
Автоматизируй это! 6490 / 4181 / 1142 Регистрация: 30.03.2015 Сообщений: 12,337 Записей в блоге: 29 |
|
04.11.2021, 09:45 |
12 |
пока не научишься правильно расставлять тэги — не трогай Питон! отлить в граните!
1 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
04.11.2021, 09:45 |
Помогаю со студенческими работами здесь В чём здесь ошибка? int main() В чём здесь ошибка? В чём здесь ошибка? #include "stdafx.h" В чем здесь ошибка ? В чем здесь ошибка? В чём здесь ошибка? В чем здесь ошибка? public static void main(String args) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 12 |
-
#1
Python 3.8.3
Windows 10
Написал код для задачи, всегда получаю правильный ответ, но робот — проверщик пишет мне, что неправильный формат вывода. Надолго застопорился, если кто-то найдет у меня ошибку буду очень признателен.
https://informatics.mccme.ru/mod/statements/view.php?id=2741&chapterid=3161#1 (ссылка на задание)
мой код:
Python:
x = list(map(int, input().split()))
p = int(input('Введите ваш рост: '))
m = min(x)
if m >= p:
print(len(x) + 1)
elif m < p:
for i in range(len(x)):
if p > x[i]:
k = i + 1
print(k)
break
else:
continue
-
#4
Возможно тест не проходит из за:
p = int(input(‘Введите ваш рост: ‘))
Попробуй:
p = int(input())
Бывает на это ругается. В условии у тебя четко ввод только целых чисел без комментария к вводу.
-
#2
Python:
x = list(map(int, input().split()))
#x = [165, 163, 160, 160, 157, 157, 155, 154]
p = int(input('Введите ваш рост: '))
#p = 160
k = 1
for i in range(len(x)):
if p <= x[i]:
k += 1
print(int(k))
По идеи вывод они ждут int и получают его.
Последнее редактирование: Ноя 7, 2020
-
#3
Python:
x = list(map(int, input().split())) #x = [165, 163, 160, 160, 157, 157, 155, 154] p = int(input('Введите ваш рост: ')) #p = 160 k = 1 for i in range(len(x)): if p <= x[i]: k += 1 print(int(k))
По идеи вывод они ждут int и получают его.
Мне нравится ваше решение, но к сожалению, его робот тоже не принял. Некоторым ребятам удавалось получить полный балл за эту задачу, так что ждем дополнительных идей.