Вызов
Напишите самую короткую программу, которая при компиляции или выполнении выдает сообщение о фатальной ошибке, которое меньше самой программы. Сообщение об ошибке не может быть сгенерировано самой программой, такой как Python raise
. Действительный ответ должен включать как код, так и сообщение об ошибке. Самый короткий действительный ответ выигрывает.
Никакое сообщение об ошибке не считается сообщением об ошибке.
Пример (Луа)
Код (46 байт):
[
--aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Ошибка (45 байт):
[string "[..."]:1: unexpected symbol near '['
code-golf
error-message
user72528
источник
источник
__main__.CodeException: Raised an &rror.
" моя ошибка или это: "Raised an &rror.
"Ответы:
ed , 3 байта
Примечание. Большинство ответов здесь игнорируют завершающий символ новой строки, напечатанный как часть сообщения об ошибке в их числе. Но я не вижу в этом вопросе ничего, что могло бы оправдать его игнорирование, и автор отметил, что следует включить перевод строки . Поэтому, если вопрос не изменится, я включу его.
Код (с завершающим переводом строки):
Ошибка (с завершающим переводом строки):
источник
C (современный Linux), 19 байт
Сделал бы мой знаменитый сегфо, но полностью человек украл его.
Выход (18 байт):
источник
main(){main();}
)?main(){main();}
не гарантируется seg-вина.Python 2, 35 байт
Выдает ошибку:
источник
JavaScript (Firefox), 31 байт
Выдает эту ошибку:
Протестировано в консоли Firefox 54.0.1 на Windows 7.
источник
Python 2 ,
8779 байт-8 байт благодаря Захари и Эрику Гольфителю.
Попробуйте онлайн!
Сообщение об ошибке, 78 байт:
Предполагая, что код хранится в файле с именем
a
.На самом деле это милое маленькое пасхальное яйцо в Python. : D
источник
\s\sFile "<stdin>", line 1\nSyntaxError: not a chance
только 50 байт [\s
это пробел и\n
Haskell, 13 байт
Сохранить как
t.hs
или другое односимвольное имя, скомпилироватьghc
и запустить. Сообщение об ошибке (с завершающим символом новой строки):источник
Такси ,
3821 байтПроизводит:
Попробуйте онлайн!
-17 байт благодаря Engineer Toast
Пытается переключиться на «abc», который не существует. Вы бы
[abc]
где-нибудь.источник
Switch to plan "abc".
производствомerror: no such label
. Это может быть одной из немногих проблем в гольф-коде, где Такси побеждает некоторые традиционные языки.> <> , 26 байт
Попробуйте онлайн!
Каждое сообщение об ошибке в Fish есть
something smells fishy...
, поэтому оно просто перемещает указатель вправо на достаточное количество раз, чтобы быть длиннее этого, и пытается дублировать вершину стека, который в данный момент пуст.источник
JavaScript (Firefox), 21 байт
Ошибка (20 байт) :
TypeError: a is null
источник
Оболочка системы V, 25 байт
Сообщение об ошибке (23 байта):
«Не пишущая машинка» или
ENOTTY
код ошибки, определенный вerrno.h
системах Unix. Это используется для указания того, что в системном вызове ioctl был указан недопустимый номер ioctl (контроль ввода / вывода). В моей системе,/usr/include/asm-generic/errno-base.h
я могу найти эту строку:В версии 6 UNIX и более ранних версиях ввод-вывод был ограничен терминальными устройствами с последовательным подключением, такими как телетайп (TTY). Они, как правило , удалось через
gtty
иstty
системные вызовы. Если попытаться использовать любой из этих системных вызовов на нетерминальном устройстве,ENOTTY
было сгенерировано.В наше время, естественно, нет необходимости использовать телетайп. Когда
gtty
иstty
были замененыioctl
,ENOTTY
был сохранен. Некоторые системы по-прежнему отображают это сообщение; но большинство говорят «неуместное ioctl для устройства».источник
QBasic, 11 байт
В QBasic есть два решения по 11 байтов, одно из которых может быть расширено. Самое короткое сообщение об ошибке, которое имеет QBasic, есть
overflow
, и может быть вызвано так:Это бросает,
overflow
потому что максимум для целого числа (i%
)32676
. Я не смог бы32677
сыграть в гольф без автоспуска QBasic, чтобы долго ...Другая ошибка, в 11 байтов, будет
out of data
. В QBasic естьDATA
операторы, которые хранят данные в программе, к которым позже могут обращатьсяREAD
операторы. Выдача большеREAD
s, чемDATA
s вызывает ошибку:Обратите внимание, что оператор дополняется комментарием, чтобы получить его до длины сообщения об ошибке. Да, у меня есть сообщение об ошибке с более короткой программой, и программа с более коротким сообщением об ошибке ...
источник
C (современный Linux), 19 байт
Я предложил это в чате, но никто не воспользовался возможностью. : P Отдайте должное веселому ответу MD XF .
Сообщение об ошибке, 18 байт
источник
W_EXITCODE(0, 11) == 11
) и код выхода 139 (W_EXITCODE(139, 9) == 139 << 8
). Оболочки устанавливаются$?
не сюръективноWIFEXITED(wstatus) ? WEXITSTATUS(wstatus) : WTERMSIG(wstatus) + 128
, но большинство языков демонстрируют разницу.WIFEXITED(wstatus)
эквивалентноDIVORCE(alimony)
случайно?Javascript (V8), 24 байта
Ошибка, 23 байта:
Протестировано на Nodejs v6.11.0 и Google Chrome v59.0.3071.115 .
Попробуйте онлайн!
Обратите внимание, что TIO расширяет сообщение об ошибке.
источник
TrumpScript , 30 байт
Сообщение об ошибке:
источник
PowerShell ,
215189 байтПопробуйте онлайн!
Итак, PowerShell имеет ... подробные ... сообщения об ошибках. Кроме того, большинство несинтаксических сообщений об ошибках являются исключениями времени выполнения, что означает, что они не являются фатальными, что сводит эту проблему к необходимости поиска короткой ошибки синтаксического анализа.
Я думаю, что это одна из самых коротких, если не самая короткая,@TessellatingHeckler продемонстрировала, что это самая короткая ошибка синтаксического анализа, и она по-прежнему весит в188
байтах только для сообщения об ошибке. Таким образом, нам нужно добавить достаточно1
s, чтобы достичь189
байтов «кода».c:\a.ps1
Например, при локальном запуске это сократит количество байтов, поскольку это всего лишь более короткий путь к файлу, но тогда он недоступен в TIO.Выдает ошибку:
источник
[]
что выглядит как более короткая ошибка,Missing type name after '['
и в зависимости от того, как именно вы рассчитываете, может быть около 190 - tio.run/##K8gvTy0qzkjNyfn/PzqWy3Dogv//AQ (взято из строк парсера, которое для меня выглядит как самая короткая ошибка парсера([xml](gc .\ParserStrings.resx)).root.data.value | sort { $_.length } -Desc
).Commodore 64 Basic, 15 байт
Производит
(Обратите внимание на два пробела в сообщении об ошибке, где программа имеет три)
?SYNTAX ERROR
Это?VERIFY ERROR
третье самое короткое сообщение об ошибке, которое может выдать C64 Basic, и самое короткое, которое может быть надежно инициировано кодом (самое короткое сообщениеBREAK IN 1
, требует взаимодействия с пользователем,?LOAD ERROR
требует дефектной ленты или дискеты и?VERIFY ERROR
требует наличия дискета или лента, содержащая файл, который не соответствует программе в оперативной памяти).источник
R ,
2928 байт-1 байт благодаря JarkoDubbeldam
Выдает ошибку,
Error: object 'a' not found
которая составляет 27 байт.Попробуйте онлайн!
источник
a #abcdefghijklmnopqrstuvwxy
ОшибкаError: object 'a' not found
на один байт короче.Рубин (
3332 байта)32 байта
Выдает ошибку (при условии, что в файле с именем "a"):
31 байт
Edit : Бритый байты с использованием
&
вместо<<
благодаря Эрике , который также пришел с еще более коротким раствором Ruby: http://codegolf.stackexchange.com/a/135087/65905источник
&
нет. Ухоженная! Кроме того, хорошая находка с помощью шестнадцатеричного выхода Я изо всех сил пытался найти более короткое и фатальное сообщение об ошибке трассировки не в стеке, кроме синтаксической ошибки.Brainf ** k, 17 байт, этот интерпретатор
Brainf ** k - такой простой язык, что почти у каждого переводчика есть разные сообщения об ошибках. Этот используется,
Memory Error: -1
когда указатель слишком сильно перемещен влево и вы пытаетесь выполнить другую операциюисточник
Common Lisp , 20 байт
Попробуйте онлайн!
Сообщение об ошибке
источник
TryAPL, 11 байт
Код (11):
Ошибка (10):
источник
Javascript (Firefox),
2927 байтбросает
RangeError: invalid date
что составляет 24 байта. Протестировано на Firefox 54.0.1 на Windows 10.источник
ZX Spectrum Basic, 9 байтов
производит:
Объяснение:
Я (исключительно) подсчитываю ASCII-представление программы для целей длины, включая конец строки (это не очень важно, поскольку мы всегда можем дополнить более короткую программу пробелами).
Как правило, сообщения об ошибках ZX Spectrum длиннее и полезнее, чем это: подпрограмма ПЗУ по адресу 0x0008 ожидает код ошибки после вызова машинного кода
RST 8
и извлекает некоторый случайный (детерминированный) байт из ПЗУ, которое выдает это бессмысленное сообщение об ошибкеM
.5
это номер ошибки,,
добавляется процедурой печати ошибок и0:1
является строкой: позиция команды ошибки.источник
Баклажан , 53 байта
Выходы
SyntaxError: Invalid instruction (0) at character 0.
Попробуйте онлайн!
источник
Perl 5 , 5 байтов
Выводит новую строку для одного байта.
Попробуйте онлайн!
источник
Perl 5 , 11 байт
Поскольку мне не ясно, подчиняется ли мой другой ответ правилам вызова, вот еще один вариант.
Ошибка вывода:
С завершающим переводом строки, на 6 байтов.
Попробуйте онлайн!
По какой-то причине внутренняя функция интерпретатора Perl
Perl_mess_sv
содержит:где
CopLINE(cop)
получает номер строки текущего контекста кода. Так что если этот номер строки окажется равным нулю, Perl пропустит добавление обычного" at <filename> line <n>"
к сообщению об ошибке.источник
die
для программы, чтобы выйти.raise
?ArnoldC , 150 байт
Попробуйте онлайн!
Ошибка составляет 94 байта (включая завершающий перевод строки):
Сохранилось, потому что я думаю, что это более забавно - спойлер: это были те чертовы шутники-подростки.
ArnoldC , 280 байт
псевдокод:
Попробуйте онлайн!
Генерирует ошибку «нет ввода». (Почти все другие ошибки в ArnoldC включают большой кусок шаблона):
279 байт (включая завершающий перевод строки):
источник
TI-Basic, 9 байтов
Кратчайшие сообщения об ошибках 8 байт каждые:
ERR:DATE
,ERR:MODE
,ERR:STAT
, иERR:ZOOM
. Я не учел,ERR:DATE
потому что это не работает на моделях без внутренних часов. Кроме того, я не пошел,ERR:ZOOM
потому что это казалось слишком сложным для запуска.Программа (9 байт):
Сообщение об ошибке:
ERR:MODE
(8 байт)Программа (9 байт):
Сообщение об ошибке:
ERR:STAT
(8 байт)источник
Рубин, 25 байт
Это было забавное упражнение, спасибо! Возможно, есть способ получить более короткое сообщение об ошибке с помощью SegFault, но я не смог его найти.
Сообщение об ошибке:
24 байта, включая завершающий перевод строки.
Попробуйте онлайн!
Рубин, 26 байт
Вот мой предыдущий ответ:
Сообщение об ошибке:
25 байт, включая завершающий перевод строки.
источник
C ++ (на MacOS High Sierra beta), 23 символа
Вывод: (22 символа)
Я не помню, давали ли предыдущие версии macOS более традиционный
Segmentation fault (core dumped)
ответ, но добавление пробелов в код для дополнения этого кода довольно тривиально.источник