Сообщение | Кратко | Сообщается ли номер теста? | Значение вердикта | Возможная причина |
---|---|---|---|---|
OK | OK | Нет | Решение зачтено | Программа верно работает на соответствующем наборе тестов |
Compilation error | CE | Нет | Компиляция программы завершилась с ошибкой | 1. в программе допущена синтаксическая или семантическая ошибка 2. неправильно указан язык |
Wrong answer | WA | Да | Ответ неверен | 1. ошибка в программе 2. неверный алгоритм |
Presentation error | PE | Да | Тестирующая система не может проверить выходные данные, так как их формат не соответствует описанному в условиях задачи | 1. неверный формат вывода 2. программа не печатает результат 3. лишний вывод |
Time-limit exceeded | TL | Да | Программа превысила установленный лимит времени | 1. ошибка в программе 2. неэффективное решение |
Memory limit exceeded | ML | Да | Программа превысила установленный в условиях лимит памяти | 1. ошибка в программе (например, бесконечная рекурсия) 2. неэффективное решение |
Output limit exceeded | OL | Да | Программа превысила установленный в условиях лимит вывода | 1. программа выводит больше информации, чем установлено в ограничениях |
Run-time error | RE | Да | Программа завершила работу с ненулевым кодом возврата | 1. ошибка выполнения 2. программа на C или C++ не завершается оператором return 0 3. ненулевой код возврата указан явно 4. Программа на Java описана в пакете |
Precompile check failed | PCF | Нет | Программа не прошла проверку на качество кода перед компиляцией | 1. плохое качество кода 2. неправильно отформатированный код |
Idleness limit exceeded | IL | Да | Программа слишком долго не отвечала на запросы системы и не выполняла действий | 1. программа ожидает ввода с консоли, которого не должно быть 2. не использован flush() |
Решаю вот эту задачу(пробный контест):
A. Быстрый старт
Ограничение времени 1 секунда
Ограничение памяти 64Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
В этом году третий раз одна известная компания проводит соревнование по программированию искусственного интеллекта для игровых стратегий. В этот раз участникам предложили написать искусственный интеллект для управления командой хоккеистов. Вася решил побороться за главный приз. Прочитав раздел “Быстрый старт”, он приступил к делу. Не прошло и нескольких часов, как хоккеисты начали ездить за шайбой по площадке. Но Вася заметил, что не всегда у игрока получается взять шайбу. Перечитав внимательно документацию, он выяснил, что для расчета вероятности подобрать шайбу нужно подсчитать коэффициент, равный максимальному значению из двух характеристик хоккеиста — ловкости D и подвижности A. Помогите Васе по известным значениям ловкости и подвижности определить этот коэффициент.
Формат ввода
Во входном файле заданы два целых числа D и A (0 ≤ D, A ≤ 109) — ловкость и подвижность хоккеиста соответственно.
Формат вывода
В выходной файл выведите коэффициент
Пример 1
Ввод Вывод
100 64 100
Пример 2
Ввод Вывод
31 14 31
Код:
Python | ||
|
выводит ошибку Run-time error
хотя при проверке вроде все работало
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
Yandex Contest
Яндекс.Контест — сервис для онлайн-проверки заданий по программированию. Он предназначен для проведения состязаний любого уровня: олимпиады, соревнования международного класса, домашние задания. Его можно использовать также для подготовки к турнирам и для приёма экзаменов. Решения проверяются автоматически — с помощью набора тестов, составленных авторами заданий. Участники отправляют свои решения в тестирующую систему, а та выдает результат.
Мы предлагаем ознакомиться с краткой инструкцией по данной платформе, чтобы вы могли уделить свое время только решению задач.
Инструкция
В конце каждой прослушанной лекции на данной платформе будут даваться задачи для самостоятельного решения.
Перейдя по ссылке к домашней работе, вам в первую очередь нужно будет авторизоваться на платформе через аккаунт в Яндексе.
Если у вас нет аккаунта, то пройдите самую обычную процедуру регистрации.
Далее вы увидите кнопку регистрации, по которой нужно перейти для выполнения задач.
Обратите внимание, что на картинке изображен обратный отсчет. Но обычно мы не делаем ограничений по времени на сдачу домашнего задания.
После старта вы увидите основную информацию о соревновании: название, количество оставшегося времени, кнопка досрочного завершения. Нас будет интересовать ссылка на решение задач.
Основная информация о задаче представлена на картинке:
Есть несколько типов вердиктов после отправки вашего ответа:
- OK — ответ/код правильный;
- WA — есть ошибка.
И другие. Подробнее про них вы можете прочитать здесь, а также ниже.
При этом стоит обратить внимание, что Система засчитывает задание решенным, если хотя бы одно из отправленных решений был верным (если не оговорено другое). После него вы можете отправлять хоть 10 неверных ответов, однако в системе все равно будет зафиксировано, что вы давали верный ответ.
Если вы закончили решать задачи раньше установленного времени, то можете завершить соревнование и сохранить ваши результаты:
Если такой кнопки в контесте нет — ничего страшного. Соревнование завершится автоматически по достижению дедлайна.
Типы ошибок в Яндекс. Контест и способы их устранения.
Как уже было сказано выше, при отправке решений в Яндекс. Контест тестовая система может не принимать решения, выдавая некоторую ошибку. Возможные типы ошибок с их краткими описаниями уже приводились выше. Ниже будут более подробно разобраны некоторые ошибки и их возможные исправления.
CE (Compilation Error)
Данная ошибка возникает, если ваша программа написана не по правилам языка Python. Попробуйте сначала запустить вашу программу в Google Colab. При этом обратите внимание на следующие моменты:
- Не нужно забывать про отступы. Не нужно делать никаких лишних отступов. При этом, в каждом блоке должно быть одинаковое количество пробелов в качестве отступов (рекомендуется использовать 4 пробела). В противном случае Яндекс. Контест выдаст ошибку CE (Compilation Error).
Например, ошибочным будет такой код:
x = 123 print(x) # Ошибка будет здесь, т.к. перед print стоят лишние отступы
Также ошибка будет в таком фрагменте:
x = 1 if x==1: print("One") else: print("Else") # Ошибка будет здесь, т.к. во всех блоках программы должно быть одинаковое # количество отступов, здесь внутри else перед print используется 1 отступ, хотя # ранее после if перед print использовалось 4 отступа
- Проверьте, что в качестве отступов везде используется либо только пробелы, либо только t. Обратите внимание, что Tab не всегда равен 8 проблелам. t и несколько пробелов – это разные символы. Поэтому если в программе для отступов используется и t, и пробелы – система может выдать ошибку.
- Не забывайте закрывать все скобки и кавычки. Например, ошибку CE вызывают следующие фрагменты кода:
print('str'
,print('123)
и т.д. - Проверьте наличие двоеточия после строчки с
if, else, for, while
(if x>y:
).
PE (Presentation error)
Данная ошибка может возникать, если формат вывода программы неверный.
При возникновении этой ошибки рекомендуется проверить следующее:
- В Google Colab для вывода значения переменной достаточно указать просто её имя:
Это допущение сделано для упрощения разработки. В Яндекс. Контесте такого нет. Необходимо явно использовать print()
, чтобы вывести значение переменной:
- Тестовая система проверяет ответ с эталонным посимвольно. Поэтому отличие хотя бы в одном символе может привести к ошибке. Поэтому перед отправкой решений проверяйте, что в программе нет лишних (или недостающих) пробелов, переходов на новую строку и других символов.
- Лишним также могут быть вспомогательные сообщения, которые указываются в параметрах
input()
илиprint()
, т.к. эти сообщения попадают в стандартный поток вывода и рассматриваются тестирующей системой как часть ответа.
Как правило, в задачах требуется просто ввести или вывести какие-то значения без каких-то дополнительных подсказок.
Т.е. не нужно писатьinput(“Введите число: ”)
илиprint(“Искомый результат: ”, res)
(здесь res — некоторая переменная, показывающая результат работы программы). Нужно писать простоinput()
илиprint(res)
.
RE (Runtime error)
Самая частая ошибка. Возникает, если код написан в целом по правилам языка Python, однако в ходе выполнения программы обнаруживаются какие-то ошибки.
При возникновении этой ошибки следует проверить следующее:
- Проверьте, что выполнены все рекомендации при возникновении ошибки Presentation error (эти же ситуации иногда могут приводить и к RE).
- Попробуйте запустить код в Google Colab и самостоятельно поискать ошибку.
- При использовании сторонних библиотек (
numpy
,pandas
,math
,fractions
,itertools
и др.) не забывайте делать соответствующийimport
:
- Если программа использует работу с файлами – проверьте точное совпадение имен входного и выходного файла в вашей программе с тем, что указано в условии.
- Проверьте, что имена стандартных функций и арифметические операции записаны верно (при этом не забывайте, что Python чувствителен к регистру букв, т.е.
Print()
иprint()
– это разные функции). Например,2^3
– неверная запись операции возведения в степень (нужно2**3
). Аналогично,Print('string')
– неверно, т.к. написано с большой буквы (верноprint('string')
). - Не забывайте, сколько и каких параметров принимает каждая функция. Например, функция
write()
принимает только одну строку в отличие отprint()
(который принимает сколько угодно параметров, а также именованные параметры вродеsep
иend
). Также функцияfloat()
принимает в качестве параметра строку, представляющую вещественное число, где в качестве разделителя используется точка, а не запятая. Т.е. записьfloat("3,14")
приведёт к ошибке (нужноfloat("3.14")
). - Проверьте, что нигде в вашей программе не может возникнуть деление на ноль при определённых входных данных или обращение к элементу списка/словаря с несуществующим индексом/ключом (например, для
lst=[1, 2, 3]
обращениеlst[500]
вызовет ошибку, т.к. элемента с индексом 500 в списке нет. Аналогично, для словаряd = {‘cat’: 3, ‘lion’: 2, ‘dog’: 7}
вызовет ошибку обращениеd[‘mouse’]
(т.к. такого ключа в словаре нет)).
WA (Wrong answer)
Эта ошибка возникает в том случае, когда код написан без ошибок, связанных с языком Python, однако где-то в логике программы присутствует ошибка.
Тестовая система проверяет ваш код на различных входных данных (так называемых тестах) и сверяет ответ работы программы с эталонным. Если хотя бы на одном тесте ответ отличается, программа выдаёт ошибку WA. При этом, в таблице с вердиктом (она находится внизу решения на сайте Яндекс. Контест) в строке, соответствующей ошибке WA в столбце «Тест» указывается номер теста, на котором ответ вашей программы не совпал с эталонным.
В случае возникновения этой ошибки, проверьте следующие моменты:
- Проверьте, что выполнены все рекомендации при возникновении ошибки Presentation error (эти же ситуации иногда могут приводить и к WA).
- Если ошибка возникает на тесте № 1 – следует проверить корректность работы программы на данных из условия (обычно в условии есть пример ввода и вывода).
- Если ошибка возникает на тесте с номером больше 1 – стоит внимательно перечитать условие и комментарии к нему и проверить, что всё учтено:
- Верно указаны имена входных и выходных файлов (если программа подразумевает работу с файлами).
- Соблюдён формат выходных данных (всегда печатается нужное количество знаков после точки в вещественных числах, в .csv-файлах используются верные разделители, а названия колонок в точности совпадают с теми, что требуются в условии).
- Попытайтесь подумать, на каких входных данных, которые не совпадают с примером из условия, но соответствуют условию, ваша программа может работать некорректно.
Тренируюсь решать задачи Яндекса.
Вот условие:
Дан упорядоченный по неубыванию массив целых 32-разрядных чисел. Требуется удалить из него все повторения.
Желательно получить решение, которое не считывает входной файл целиком в память, т.е., использует лишь константный объем памяти в процессе работы.
Первая строка входного файла содержит единственное число n, n ≤ 1000000.
На следующих n строк расположены числа — элементы массива, по одному на строку. Числа отсортированы по неубыванию.
У меня возникает Runtime error, а из-за чего — не могу понять. Не сказано же какая. В чём может быть проблема?
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class WooHoo {
public static void main(String[] args) throws Exception {
BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(r.readLine());
int prev = Integer.parseInt(r.readLine());
System.out.println(prev);
for (int i = 1; i < n; i++) {
int cur = Integer.parseInt(r.readLine());
if (prev == cur) {
continue;
} else {
prev = cur;
System.out.println(cur);
}
}
}
}
Содержание
- Работа с тестирующей системой, расшифровка сообщений. «Задача A+B» на разных языках
- Задача «A+B» на разных языках программирования
- Pascal
- Delphi
- Сообщения тестирующей системы
- Компиляторы
- Примеры ошибок в решениях:
- Presentation Error (PE)
- Wrong Answer (WA)
- Compile Error (CE)
- Runtime Error (RE)
- Time Limit (TL)
- Memory Limit (ML)
- presentation error. Не могу найти причину ошибки в своём коде.
- Проверка решения
- Задачи с автоматической проверкой
- Задачи с ручной проверкой
- Все решения
- Фильтрация
- Статусы задач
- Проверка на плагиат
- Проверка решения
- Задачи с автоматической проверкой
- Задачи с ручной проверкой
- Все решения
- Фильтрация
- Статусы задач
- Проверка на плагиат
Работа с тестирующей системой, расшифровка сообщений. «Задача A+B» на разных языках
Тестирующая система TestSys расположена по адресу: ts.lokos.net.
Для входа в систему следует использовать логин (обычно — 2 цифры) и пароль выданные преподавателем.
Задача «A+B» на разных языках программирования
Нужно ввести из входного файла два целых числа и вывести их сумму в выходной файл.
Pascal
Delphi
Сообщения тестирующей системы
- Accepted— Все в порядке! Ваша программа принята! Она откомпилировалась без ошибок и прошла все тесты.
- Presentation Error (PE) — неправильный формат вывода, проверяющая программа не смогла прочитать ваш выходной файл или ваша программа вообще не создала выходной файл.
- Wrong Answer (WA)— неправильный ответ на тест.
- Compile Error (CE) — ошибки компиляции программы. Посмотрите что вы отправляете (нажмите view в отправках).
- Runtime Error (RT) — ошибка времени выполнения (выход за границы массива, переполнение переменной, деление на ноль, корень из отрицательного числа, ошибка в имени входного файла).
- Time Limit (TL) — ваша программа выполнялась на каком-то тесте больше времени по условию задачи.
- Memory Limit (ML) — ваша программа использовала больше памяти, чем разрешено по условию задачи.
Компиляторы
- Pascal: Borland Delphi 7.0, Free Pascal 2.6.0;
- C/C++: Visual C++ 2010 Express Edition, GNU C++ 4.6.1 (MinGW), Code::Blocks 10.05;
- C#: Visual C# 2010 Express Edition;
- Java: Sun JDK 7 update 9, Eclipse 4.2.
- Python: Python 3.3.0, Wing IDE 101 4.1.9.
Примеры ошибок в решениях:
Presentation Error (PE)
Неправильное имя выходного файла:
Программа выводит на экран вместо файла:
Wrong Answer (WA)
Точности/разрядности типов данных не хватает:
Compile Error (CE)
Комментарий тестирующей системы:
Runtime Error (RE)
Программа завершилась с ненулевым кодом возврата, либо создала исключительную ситуацию (exception) и не обработала ее.
Для поиска RE в программе на Delphi используйте директивы:
Time Limit (TL)
Программа не завершилась за отведенный период времени.
Возможные причины:
- Неэффективное решение;
- Ошибка в программе (например, зацикливание).
Memory Limit (ML)
Программа попыталась использовать больше памяти, чем разрешается.
Источник
presentation error. Не могу найти причину ошибки в своём коде.
Для игры в «Поле чудес» используется круглый барабан, разделенный на сектора, и стрелка. В каждом секторе записано некоторое число. В различных секторах может быть записано одно и то же число. Однажды ведущий игры решил изменить правила. Он сам стал вращать барабан и называть игроку (который барабана не видел) все числа подряд в том порядке, в котором на них указывала стрелка в процессе вращения барабана. Получилось так, что барабан сделал целое число оборотов, то есть последний сектор совпал с первым. После этого, ведущий задал участнику вопрос: какое наименьшее число секторов может быть на барабане? Требуется написать программу, отвечающую на этот вопрос ведущего.
Входные данные
В первой строке входного файла INPUT.TXT записано число N – количество чисел, которое назвал ведущий (2 ≤ N ≤ 30000). Во второй строке записано N чисел, на которые указывала стрелка в процессе вращения барабана. Первое число всегда совпадает с последним (в конце стрелка указывает на тот же сектор, что и в начале). Числа, записанные в секторах барабана – натуральные, не превышающие 32000.
Выходные данные
В выходной файл OUTPUT.TXT необходимо вывести одно число – минимальное число секторов, которое может быть на барабане.
1 13
5 3 1 3 5 2 5 3 1 3 5 2 56
#include
using namespace std;
int main() <
int n, x;
cin >> n;
int *p = new int[n + 1];
for (int i = 0; i > *(p + i); >
p[n] = ‘’;
for (int i = 1; i Лучший ответ
int main() <
int n, len;
cin >> n;
for (int i = 0; i > numbers[i]; >
Источник
Проверка решения
Задачи с автоматической проверкой
Вердикт | Расшифровка |
---|---|
OK | Решение зачтено, программа на всех тестах работает корректно. |
runtime-error | Ошибка при выполнении программы: программа завершила работу с ненулевым кодом возврата. |
time-limit-exceeded | Превышен лимит времени: решение неэффективное или в программе ошибка. |
wrong-answer | Неверный ответ: в программе ошибка или алгоритм неверный. |
presentation-error | Неверный формат вывода. |
compilation-error | Ошибка оформления кода: допущена синтаксическая или семантическая ошибка. |
memory-limit-exceeded | Превышен лимит памяти: решение неэффективное или в программе ошибка. |
crash | Ошибка проверки, обратитесь в поддержку. |
precompile-check-failed | Программа не прошла проверку на качество кода перед компиляцией. |
output-limit-exceeded | Программа превысила лимит вывода, установленный в условиях. |
ignored | Ошибка оформления кода: допущена синтаксическая или семантическая ошибка. |
idleness-limit-exceeded | Программа долго не отвечала на запросы и не выполняла действий. |
Вердикт | Расшифровка |
---|---|
OK | Решение зачтено, программа на всех тестах работает корректно. |
runtime-error | Ошибка при выполнении программы: программа завершила работу с ненулевым кодом возврата. |
time-limit-exceeded | Превышен лимит времени: решение неэффективное или в программе ошибка. |
wrong-answer | Неверный ответ: в программе ошибка или алгоритм неверный. |
presentation-error | Неверный формат вывода. |
compilation-error | Ошибка оформления кода: допущена синтаксическая или семантическая ошибка. |
memory-limit-exceeded | Превышен лимит памяти: решение неэффективное или в программе ошибка. |
crash | Ошибка проверки, обратитесь в поддержку. |
precompile-check-failed | Программа не прошла проверку на качество кода перед компиляцией. |
output-limit-exceeded | Программа превысила лимит вывода, установленный в условиях. |
ignored | Ошибка оформления кода: допущена синтаксическая или семантическая ошибка. |
idleness-limit-exceeded | Программа долго не отвечала на запросы и не выполняла действий. |
В правой части экрана появится окно с подробными результатами автоматической проверки.
Задачи с ручной проверкой
Для некоторых задач с ручной проверкой предусмотрен набор предварительных тестов. Вам останется проверить, например, использует ли ученик нужные конструкции или не списывают ли в группе.
Часть решений, например в творческих задачах, нужно полностью проверять вручную.
Ученику будет назначено максимальное количество баллов за задачу.
По умолчанию указано максимально возможное количество баллов.
Все решения
Вы можете посмотреть все решения, которые отправили ученики, на вкладке Решения . Последние попытки решений отображаются в начале списка.
Фильтрация
Статусы задач
Статус | Расшифровка |
---|---|
Автопроверка | Решение отправлено на проверку в Яндекс Контест |
На ручной проверке | Решение ожидает ручной проверки |
Доработать | Решение не прошло проверку и вернулось к ученику на доработку |
Зачтено | Решение прошло проверку, ученик получил за него баллы, задача считается сданной |
Зачтено после дедлайна | Решение прошло проверку, но ученик не получит за него баллы, потому что решение отправлено после дедлайна |
Статус | Расшифровка |
---|---|
Автопроверка | Решение отправлено на проверку в Яндекс Контест |
На ручной проверке | Решение ожидает ручной проверки |
Доработать | Решение не прошло проверку и вернулось к ученику на доработку |
Зачтено | Решение прошло проверку, ученик получил за него баллы, задача считается сданной |
Зачтено после дедлайна | Решение прошло проверку, но ученик не получит за него баллы, потому что решение отправлено после дедлайна |
Проверка на плагиат
Каждая попытка решения задачи проходит проверку на плагиат. Проверка происходит автоматически, попытка ученика сравнивается с попытками решения той же задачи других учеников Лицея Академии Яндекса.
Если подозрение на плагиат есть, рядом с номером решения появляется значок .
Чтобы проверить попытку на плагиат:
Проверка решения
Задачи с автоматической проверкой
Вердикт | Расшифровка |
---|---|
OK | Решение зачтено, программа на всех тестах работает корректно. |
runtime-error | Ошибка при выполнении программы: программа завершила работу с ненулевым кодом возврата. |
time-limit-exceeded | Превышен лимит времени: решение неэффективное или в программе ошибка. |
wrong-answer | Неверный ответ: в программе ошибка или алгоритм неверный. |
presentation-error | Неверный формат вывода. |
compilation-error | Ошибка оформления кода: допущена синтаксическая или семантическая ошибка. |
memory-limit-exceeded | Превышен лимит памяти: решение неэффективное или в программе ошибка. |
crash | Ошибка проверки, обратитесь в поддержку. |
precompile-check-failed | Программа не прошла проверку на качество кода перед компиляцией. |
output-limit-exceeded | Программа превысила лимит вывода, установленный в условиях. |
ignored | Ошибка оформления кода: допущена синтаксическая или семантическая ошибка. |
idleness-limit-exceeded | Программа долго не отвечала на запросы и не выполняла действий. |
Вердикт | Расшифровка |
---|---|
OK | Решение зачтено, программа на всех тестах работает корректно. |
runtime-error | Ошибка при выполнении программы: программа завершила работу с ненулевым кодом возврата. |
time-limit-exceeded | Превышен лимит времени: решение неэффективное или в программе ошибка. |
wrong-answer | Неверный ответ: в программе ошибка или алгоритм неверный. |
presentation-error | Неверный формат вывода. |
compilation-error | Ошибка оформления кода: допущена синтаксическая или семантическая ошибка. |
memory-limit-exceeded | Превышен лимит памяти: решение неэффективное или в программе ошибка. |
crash | Ошибка проверки, обратитесь в поддержку. |
precompile-check-failed | Программа не прошла проверку на качество кода перед компиляцией. |
output-limit-exceeded | Программа превысила лимит вывода, установленный в условиях. |
ignored | Ошибка оформления кода: допущена синтаксическая или семантическая ошибка. |
idleness-limit-exceeded | Программа долго не отвечала на запросы и не выполняла действий. |
В правой части экрана появится окно с подробными результатами автоматической проверки.
Задачи с ручной проверкой
Для некоторых задач с ручной проверкой предусмотрен набор предварительных тестов. Вам останется проверить, например, использует ли ученик нужные конструкции или не списывают ли в группе.
Часть решений, например в творческих задачах, нужно полностью проверять вручную.
Ученику будет назначено максимальное количество баллов за задачу.
По умолчанию указано максимально возможное количество баллов.
Все решения
Вы можете посмотреть все решения, которые отправили ученики, на вкладке Решения . Последние попытки решений отображаются в начале списка.
Фильтрация
Статусы задач
Статус | Расшифровка |
---|---|
Автопроверка | Решение отправлено на проверку в Яндекс Контест |
На ручной проверке | Решение ожидает ручной проверки |
Доработать | Решение не прошло проверку и вернулось к ученику на доработку |
Зачтено | Решение прошло проверку, ученик получил за него баллы, задача считается сданной |
Зачтено после дедлайна | Решение прошло проверку, но ученик не получит за него баллы, потому что решение отправлено после дедлайна |
Статус | Расшифровка |
---|---|
Автопроверка | Решение отправлено на проверку в Яндекс Контест |
На ручной проверке | Решение ожидает ручной проверки |
Доработать | Решение не прошло проверку и вернулось к ученику на доработку |
Зачтено | Решение прошло проверку, ученик получил за него баллы, задача считается сданной |
Зачтено после дедлайна | Решение прошло проверку, но ученик не получит за него баллы, потому что решение отправлено после дедлайна |
Проверка на плагиат
Каждая попытка решения задачи проходит проверку на плагиат. Проверка происходит автоматически, попытка ученика сравнивается с попытками решения той же задачи других учеников Лицея Академии Яндекса.
Если подозрение на плагиат есть, рядом с номером решения появляется значок .
Источник
Разве вы не ненавидите, когда вы пытаетесь запустить программу и получаете сообщение об ошибке «Ошибка выполнения»? К сожалению, несмотря на то, что люди регулярно раздражают, ужасная ошибка времени выполнения не очень хорошо объясняет сама себя и то, что именно произошло.
Ошибки времени выполнения бывают разных форм и размеров, и они печально известны тем, что мешают вашему рабочему процессу. Таким образом, вот некоторые из наиболее распространенных ошибок времени выполнения, их причины и способы их устранения.
Что такое ошибки во время выполнения?
Ошибка выполнения возникает в программе, пока она выполняется. Ошибки времени выполнения определяются тем, как они возникают после компиляции программы, а не во время разработки программы. Ошибки времени выполнения разочаровывают тем, что они могут привести к неожиданному завершению работы программы, и иногда бывает трудно определить единственную причину.
Различные типы ошибок времени выполнения
Во время выполнения могут возникать несколько различных типов ошибок, поэтому рекомендуется узнать, что они из себя представляют и что их вызывает. Таким образом, вы будете точно знать, что делать, когда кто-то поднимает свою уродливую голову.
1. Ошибка деления на ноль
Ваш компьютер выполняет много математических операций при обработке данных, а это означает, что ошибки могут возникать даже при выполнении простых арифметических действий. Например, одна распространенная ошибка времени выполнения называется ошибкой «Делить на ноль». Этот симпатичный на носу; это происходит, когда ваш компьютер производит вычисления и пытается разделить число на 0.
Когда вы пытаетесь разделить число на 0, вы получите неопределенное число. Когда компьютер делает это, он не знает, что делать с неопределенным числом, и вызывает сбой программы.
К сожалению, это не та ошибка, которую вы можете решить на своей стороне. Если вы обнаружите ошибку деления на ноль, лучше всего обратиться к разработчику программного обеспечения.
2. Ошибки, вызванные неполной установкой
Иногда в процессе установки что-то идет не так. Существует множество причин, по которым программа не устанавливается должным образом, и когда это происходит, это может привести к проблемам.
Иногда некоторые файлы не устанавливаются или в установочном пакете есть ошибки. В любом случае, если программа не установлена должным образом, определенные файлы, которые ей необходимо запустить, могут не существовать, что приведет к ошибке выполнения. В этом случае лучше всего переустановить программу или попробовать найти другую версию установочного пакета.
3. Логические ошибки в программировании программного обеспечения.
Независимо от того, насколько хорош программист, всегда возникают случайные ошибки. Логическая ошибка — это тип ошибки времени выполнения, который может указывать на ошибку в кодировании.
По теме: Типы ошибок программирования и как их избежать
Горячий ответ: кодирование — это довольно сложно. Существуют тысячи и тысячи символов, которые необходимо правильно ввести для правильной работы программы. Если в коде есть опечатки, это может привести к неожиданным результатам. Из-за этого программа может глючить или даже вообще вылетать.
Лучше всего обратиться к разработчику программного обеспечения. Вы также должны проверить, используете ли вы самую последнюю версию программного обеспечения. В более поздней версии проблема может быть решена.
4. Ошибки, вызванные утечками памяти.
Еще одна довольно распространенная ошибка времени выполнения — ошибка утечки памяти. Когда программа запущена, она использует часть оперативной памяти. Затем, когда программа завершается, она сообщает системе, что она завершена, и освобождает эту оперативную память, чтобы другие программы могли ее использовать. Однако иногда программа этого не делает, и программы продолжают использовать новую оперативную память, пока она не закончится.
Связанный: Как устранить нехватку оперативной памяти или утечки памяти в Windows
Представьте себе жилой комплекс с 10 квартирами, восемь из которых заняты. Если трое жильцов уезжают, не сообщив об этом руководству квартиры, офис считает, что восемь квартир все еще заняты, когда заняты только пять. Затем, когда еще три человека хотят переехать, офис отказывает одному человеку, полагая, что для него нет места.
Утечка памяти может привести к проблемам с ОЗУ, снижению производительности и сбоям программы. В этом случае хорошим решением будет перезагрузка компьютера. Это полностью очистит всю оперативную память.
5. Ошибка ненулевого статуса выхода.
Программное обеспечение состоит из множества строк кода. Каждая линия должна функционировать должным образом, чтобы все работало бесперебойно. К сожалению, бывают случаи, когда линия работает не так, как должна, что приводит к ошибкам.
Одна такая ошибка называется ошибкой ненулевого статуса выхода. Для разных систем кодирования каждой строке кода присваивается статус выхода, который представляет собой число, указывающее, была ли она выполнена успешно или нет. Если компьютер успешно выполнил линию, он получает 0 в качестве статуса выхода. Если оно находится в диапазоне от 1 до 255, значит, это сбой. Хороший пример: если вы запустите строку, которая пытается получить доступ к файлу, которого нет на компьютере, она, скорее всего, получит код выхода 1.
Связанный: Способы проверить, существует ли файл с помощью Python
6. Ошибка переполнения
Когда дело доходит до кодирования, всегда есть ограничения. Например, когда вы пытаетесь поместить число в переменную (также известную как свойство), существует ограничение на то, насколько большим может быть это число. Если вы попытаетесь назначить большее число, чем этот предел, вы получите ошибку переполнения во время выполнения, что может привести к тому, что программа перестанет отвечать.
Когда вы получаете ошибку переполнения, вы должны начать с проверки, является ли ваша версия программного обеспечения последней. Если вы используете последнюю версию, попробуйте переустановить программное обеспечение.
7. Ошибка ошибки сегментации
Ошибки ошибки сегментации являются наиболее распространенным типом ошибок времени выполнения. Существуют определенные правила, которым программа должна следовать при доступе к памяти и записи в нее. Когда некоторые из этих правил нарушаются, вы рискуете получить ошибку ошибки сегментации.
Ошибка сегментации может произойти несколькими способами. Вот некоторые общие причины:
-
когда программа пытается записать в постоянную память
-
когда программа пытается получить доступ к памяти, к которой ей не разрешен доступ
-
когда программа пытается разыменовать освобожденную память или указатели NULL
-
когда программа пытается получить доступ к большему количеству данных, чем разрешено
-
когда программа пытается записать место, которое ей не разрешено
Если вы столкнетесь с одной из этих проблем, Переполнение стека есть отличный список решений, которые вы можете попробовать, поэтому обязательно ознакомьтесь с ним.
Множество ошибок во время выполнения в дикой природе
Когда дело доходит до ошибок времени выполнения, это только верхушка айсберга. Этот список можно продолжить, так как существует множество ошибок и еще больше способов их вызвать. Лучшее, что можно сделать, — это изучить больше ошибок времени выполнения, как их идентифицировать и как их решать; это может помочь предотвратить множество неприятностей.
Yandex Contest
Яндекс.Контест — сервис для онлайн-проверки заданий по программированию. Он предназначен для проведения состязаний любого уровня: олимпиады, соревнования международного класса, домашние задания. Его можно использовать также для подготовки к турнирам и для приёма экзаменов. Решения проверяются автоматически — с помощью набора тестов, составленных авторами заданий. Участники отправляют свои решения в тестирующую систему, а та выдает результат.
Мы предлагаем ознакомиться с краткой инструкцией по данной платформе, чтобы вы могли уделить свое время только решению задач.
Инструкция
В конце каждой прослушанной лекции на данной платформе будут даваться задачи для самостоятельного решения.
Перейдя по ссылке к домашней работе, вам в первую очередь нужно будет авторизоваться на платформе через аккаунт в Яндексе.
Если у вас нет аккаунта, то пройдите самую обычную процедуру регистрации.
Далее вы увидите кнопку регистрации, по которой нужно перейти для выполнения задач.
Обратите внимание, что на картинке изображен обратный отсчет. Но обычно мы не делаем ограничений по времени на сдачу домашнего задания.
После старта вы увидите основную информацию о соревновании: название, количество оставшегося времени, кнопка досрочного завершения. Нас будет интересовать ссылка на решение задач.
Основная информация о задаче представлена на картинке:
Есть несколько типов вердиктов после отправки вашего ответа:
- OK — ответ/код правильный;
- WA — есть ошибка.
И другие. Подробнее про них вы можете прочитать здесь, а также ниже.
При этом стоит обратить внимание, что Система засчитывает задание решенным, если хотя бы одно из отправленных решений был верным (если не оговорено другое). После него вы можете отправлять хоть 10 неверных ответов, однако в системе все равно будет зафиксировано, что вы давали верный ответ.
Если вы закончили решать задачи раньше установленного времени, то можете завершить соревнование и сохранить ваши результаты:
Если такой кнопки в контесте нет — ничего страшного. Соревнование завершится автоматически по достижению дедлайна.
Типы ошибок в Яндекс. Контест и способы их устранения.
Как уже было сказано выше, при отправке решений в Яндекс. Контест тестовая система может не принимать решения, выдавая некоторую ошибку. Возможные типы ошибок с их краткими описаниями уже приводились выше. Ниже будут более подробно разобраны некоторые ошибки и их возможные исправления.
CE (Compilation Error)
Данная ошибка возникает, если ваша программа написана не по правилам языка Python. Попробуйте сначала запустить вашу программу в Google Colab. При этом обратите внимание на следующие моменты:
- Не нужно забывать про отступы. Не нужно делать никаких лишних отступов. При этом, в каждом блоке должно быть одинаковое количество пробелов в качестве отступов (рекомендуется использовать 4 пробела). В противном случае Яндекс. Контест выдаст ошибку CE (Compilation Error).
Например, ошибочным будет такой код:
x = 123 print(x) # Ошибка будет здесь, т.к. перед print стоят лишние отступы
Также ошибка будет в таком фрагменте:
x = 1 if x==1: print("One") else: print("Else") # Ошибка будет здесь, т.к. во всех блоках программы должно быть одинаковое # количество отступов, здесь внутри else перед print используется 1 отступ, хотя # ранее после if перед print использовалось 4 отступа
- Проверьте, что в качестве отступов везде используется либо только пробелы, либо только t. Обратите внимание, что Tab не всегда равен 8 проблелам. t и несколько пробелов – это разные символы. Поэтому если в программе для отступов используется и t, и пробелы – система может выдать ошибку.
- Не забывайте закрывать все скобки и кавычки. Например, ошибку CE вызывают следующие фрагменты кода:
print('str'
,print('123)
и т.д. - Проверьте наличие двоеточия после строчки с
if, else, for, while
(if x>y:
).
PE (Presentation error)
Данная ошибка может возникать, если формат вывода программы неверный.
При возникновении этой ошибки рекомендуется проверить следующее:
- В Google Colab для вывода значения переменной достаточно указать просто её имя:
Это допущение сделано для упрощения разработки. В Яндекс. Контесте такого нет. Необходимо явно использовать print()
, чтобы вывести значение переменной:
- Тестовая система проверяет ответ с эталонным посимвольно. Поэтому отличие хотя бы в одном символе может привести к ошибке. Поэтому перед отправкой решений проверяйте, что в программе нет лишних (или недостающих) пробелов, переходов на новую строку и других символов.
- Лишним также могут быть вспомогательные сообщения, которые указываются в параметрах
input()
илиprint()
, т.к. эти сообщения попадают в стандартный поток вывода и рассматриваются тестирующей системой как часть ответа.
Как правило, в задачах требуется просто ввести или вывести какие-то значения без каких-то дополнительных подсказок.
Т.е. не нужно писатьinput(“Введите число: ”)
илиprint(“Искомый результат: ”, res)
(здесь res — некоторая переменная, показывающая результат работы программы). Нужно писать простоinput()
илиprint(res)
.
RE (Runtime error)
Самая частая ошибка. Возникает, если код написан в целом по правилам языка Python, однако в ходе выполнения программы обнаруживаются какие-то ошибки.
При возникновении этой ошибки следует проверить следующее:
- Проверьте, что выполнены все рекомендации при возникновении ошибки Presentation error (эти же ситуации иногда могут приводить и к RE).
- Попробуйте запустить код в Google Colab и самостоятельно поискать ошибку.
- При использовании сторонних библиотек (
numpy
,pandas
,math
,fractions
,itertools
и др.) не забывайте делать соответствующийimport
:
- Если программа использует работу с файлами – проверьте точное совпадение имен входного и выходного файла в вашей программе с тем, что указано в условии.
- Проверьте, что имена стандартных функций и арифметические операции записаны верно (при этом не забывайте, что Python чувствителен к регистру букв, т.е.
Print()
иprint()
– это разные функции). Например,2^3
– неверная запись операции возведения в степень (нужно2**3
). Аналогично,Print('string')
– неверно, т.к. написано с большой буквы (верноprint('string')
). - Не забывайте, сколько и каких параметров принимает каждая функция. Например, функция
write()
принимает только одну строку в отличие отprint()
(который принимает сколько угодно параметров, а также именованные параметры вродеsep
иend
). Также функцияfloat()
принимает в качестве параметра строку, представляющую вещественное число, где в качестве разделителя используется точка, а не запятая. Т.е. записьfloat("3,14")
приведёт к ошибке (нужноfloat("3.14")
). - Проверьте, что нигде в вашей программе не может возникнуть деление на ноль при определённых входных данных или обращение к элементу списка/словаря с несуществующим индексом/ключом (например, для
lst=[1, 2, 3]
обращениеlst[500]
вызовет ошибку, т.к. элемента с индексом 500 в списке нет. Аналогично, для словаряd = {‘cat’: 3, ‘lion’: 2, ‘dog’: 7}
вызовет ошибку обращениеd[‘mouse’]
(т.к. такого ключа в словаре нет)).
WA (Wrong answer)
Эта ошибка возникает в том случае, когда код написан без ошибок, связанных с языком Python, однако где-то в логике программы присутствует ошибка.
Тестовая система проверяет ваш код на различных входных данных (так называемых тестах) и сверяет ответ работы программы с эталонным. Если хотя бы на одном тесте ответ отличается, программа выдаёт ошибку WA. При этом, в таблице с вердиктом (она находится внизу решения на сайте Яндекс. Контест) в строке, соответствующей ошибке WA в столбце «Тест» указывается номер теста, на котором ответ вашей программы не совпал с эталонным.
В случае возникновения этой ошибки, проверьте следующие моменты:
- Проверьте, что выполнены все рекомендации при возникновении ошибки Presentation error (эти же ситуации иногда могут приводить и к WA).
- Если ошибка возникает на тесте № 1 – следует проверить корректность работы программы на данных из условия (обычно в условии есть пример ввода и вывода).
- Если ошибка возникает на тесте с номером больше 1 – стоит внимательно перечитать условие и комментарии к нему и проверить, что всё учтено:
- Верно указаны имена входных и выходных файлов (если программа подразумевает работу с файлами).
- Соблюдён формат выходных данных (всегда печатается нужное количество знаков после точки в вещественных числах, в .csv-файлах используются верные разделители, а названия колонок в точности совпадают с теми, что требуются в условии).
- Попытайтесь подумать, на каких входных данных, которые не совпадают с примером из условия, но соответствуют условию, ваша программа может работать некорректно.
Я всё перепроверил 10 раз, но так и не понял в чём эта ошибка заключается. Надеюсь на вашу помощь
module.exports = function (N, staff, K) {
if (N === K){
return staff.reduce((accumulator, currentNumb) => accumulator += currentNumb, 0)
}
let maxNumbers = []
for (let i = 1; i <= K; i++){
let max = Math.max(...staff)
maxNumbers.push(max)
let indexOfMax = staff.indexOf(max)
staff.splice(indexOfMax, 1)
}
return maxNumbers.reduce((accumulator, currentValue) => accumulator += currentValue, 0)
}
-
Вопрос задан04 февр.
-
141 просмотр
Тебе надо сумму К самых крупных значений? Решение конечно так себе, O(n*k), я бы поюзал бинарную кучу…
Но если абстрагироваться от скорости, то не разобран кейс, когда К > N. И конечно, переполнение стека при достаточно большом массиве staff. Не используй Math.max(…staff), сделай нормальный человеческий цикл.
N — это ведь длина массива staff?
Пригласить эксперта
-
Показать ещё
Загружается…
06 июн. 2023, в 04:00
4500 руб./за проект
06 июн. 2023, в 02:35
800 руб./в час
06 июн. 2023, в 00:15
30000 руб./за проект
Минуточку внимания
Написал код, который должен переделывать строку «Я есть Грут. Ты нет.» в «Грут есть я. Нет ты.»
sentance = input().split('.')
first = []
second =[]
for word in sentance[0].split():
word = word.strip('.')
first.append(word)
for word in sentance[1].split():
word = word.strip('.')
second.append(word)
first = first.reverse()
second = second.reverse()
for i in first, second:
i[-1] = i[-1] + '.'
i[0] = i[0].title()
print(*first, *second)
При выполнении выдает ошибку:
Traceback (most recent call last):
File "test.py", line 18, in <module>
i[-1] = i[-1] + '.'
TypeError: 'NoneType' object is not subscriptable
Как это исправить?
insolor
45.9k16 золотых знаков54 серебряных знака95 бронзовых знаков
задан 16 апр 2022 в 15:51
Замените метод reverse на функцию reversed (и тогда всё работает так, как вы хотите):
first = list(reversed(first))
second = list(reversed(second))
В описании метода сказано, что он ничего не возвращает. А функция — возвращает. На это и ошибка указывала — NoneType часто в таких случаях получаем.
ответ дан 16 апр 2022 в 16:03
СергейСергей
4,9056 золотых знаков11 серебряных знаков29 бронзовых знаков
5
sentance = input().split('.')
first = []
second = []
for word in sentance[0].split():
word = word.strip('.')
first.append(word)
for word in sentance[1].split():
word = word.strip('.')
second.append(word)
first.reverse()
second.reverse()
for i in first, second:
i[-1] = i[-1] + '.'
i[0] = i[0].title()
print(*first, *second)
Так возможно заработает
ответ дан 16 апр 2022 в 16:22
1