Напишите программу, которая распечатывает сообщение о синтаксической ошибке компилятора или интерпретатора. Сообщение об ошибке должно вводить в заблуждение, так что сопровождающим кода потребуется несколько дней, чтобы выяснить, что ошибка была фальсифицирована, то есть вам следует запутать (и скрыть свое намерение). Кроме того, ошибка должна быть максимально точной и должна правильно ссылаться на код.
Для компилируемых языков предположим, что ваш сопровождающий код будет выполнять compile program.p && ./program
в командной строке компиляцию и запускать программу, это означает, что он не может различить, поступает ли результат от компилятора или самой программы. Также предположим, что ваш сопровождающий код включит синтаксические сообщения об ошибках.
Для справки вот пример, который я сделал: https://gist.github.com/359604
DATA
Секция кодирует строку сообщения об ошибке, и хэш %abcdef
является таблицей декодирования. Ошибка напечатала ссылки на обратную косую черту, которая заставляет сопровождающего кода попытаться подсчитать обратную косую черту.
Записи будут оцениваться по:
- Кодекс имеет обманчиво очевидное намерение
/6
- Код корректно воспроизводит ошибку
/16
(ваша точка начинается с 16 и делится на соответствующие коэффициенты для каждой неточности)- Правильная капитализация: 4
- Правильный номер строки и номер столбца: 4
- Правильная формулировка: 2 за каждое неверное слово
- Указанный номер строки вводит в заблуждение сопровождающий код
/3
Например,
./pythontest1.py: line 7: syntax error near token `('
./pythontest1.py: line 7: ` x=input("Enter a number:") #Number input'
получает 8 (16/2) правильности за пропущенное «неожиданное» перед «токеном», отображается обычный интерпретатор Python
./pythontest1.py: line 7: syntax error near unexpected token `('
./pythontest1.py: line 7: ` x=input("Enter a number:") #Number input'
Если ваш пункт «Код воспроизводит ошибку правильно» меньше 1, ваша заявка будет дисквалифицирована.
В случае галстука я выставлю дополнительные оценочные факторы.
источник
Ответы:
питон
Это программа, которая должна взять имя файла в командной строке, вычислить в нем первую строку и распечатать результат. Есть 2 ошибки. Основной ошибкой является то, что он должен использовать
sys.argv[1]
, а неsys.argv[0]
так, что в итоге он оценивает саму программу, а не содержимое файла, названного первым аргументом. Вторая ошибка заключается в том, что аргумент,print_exc
заставляющий его печатать только самый глубокий кадр в стеке, скрывает тот факт, что ошибка произошла внутриeval
. В результате вы получите ошибку, подобную этой:Это выглядит очень похоже на синтаксическую ошибку в первой строке программы. Это не совсем правильно, как файл
<string>
, нетfake_error.py
, но в остальном он неотличим от случая, когда, например, вы пишетеimport
неправильно.Обе ошибки несколько «закулисны» в том смысле, что они могут быть случайными.
источник
raise
в Python 2, но в IDLE, IDE по умолчанию Python, вызывает внутреннюю ошибку печати бред о очередях.Traceback (most recent call last): ** IDLE Internal Exception: File "2.7/lib/python2.7/idlelib/run.py", line 325, in runcode exec code in self.locals File "2.7/lib/python2.7/idlelib/run.py", line 111, in main seq, request = rpc.request_queue.get(block=True, timeout=0.05) File "2.7/lib/python2.7/Queue.py", line 176, in get raise Empty
Напоминает мне практическую шутку.
источник
BrainF ***
Я не могу найти тот компилятор, который использовал раньше, но уверяю вас, что это именно то сообщение об ошибке.
источник
:)
Джава
Я не знал, имели ли вы в виду генерирование необработанного исключения (как в этом примере) или симуляцию сообщения об ошибке. Если это так, это должно работать:
С
(это предполагает, что
stdio.h
#included)источник
Game Maker Language
источник
ACTIONSCRIPT 3
источник