最短エラーメッセージ


135

チャレンジ

コンパイルまたは実行すると、プログラム自体よりも致命的なエラーメッセージが生成される最短のプログラムを作成します。エラーメッセージは、Pythonなどのプログラム自体によって生成されない場合がありますraise。有効な回答には、コードとエラーメッセージの両方を含める必要があります。最短有効回答が勝ちます。

エラーメッセージはエラーメッセージとしてカウントされません。

例(Lua)

コード(46バイト):

[
--aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

エラー(45バイト):

[string "[..."]:1: unexpected symbol near '['

コメントは詳細なディスカッション用ではありません。この会話はチャットに移動さました
デニス

1
@Dennisこれは、「OPは説明を編集して問題にしない」問題を解決する1つの方法だと思います。
Ørjanヨハンセン

1
最も多くの票を得た私の答えを受け入れてくれてありがとう。ただし、これにはcode-golfというタグが付けられているため、この回答を受け入れる必要があります。これは最短です。
MD XF

@smartpeopleはこれです:「__main__.CodeException: Raised an &rror.」私のエラーまたはこれは、次のとおりです。」Raised an &rror."
FantaC

TrumpScriptは中国で実行されていますか?
スタン・ストラム

回答:


58

ed、3バイト

注:ここでの回答のほとんどは、カウントのエラーメッセージの一部として出力される末尾の改行を無視しています。しかし、私はそれを無視することを正当化する質問には何も見当たりません、そして著者は改行を含めるべきであるとコメントしました。質問が変更されない限り、私はそれを含めるつもりです。

コード(末尾の改行付き):

??

エラー(末尾の改行あり):

?


19
実際、これは打ち負かすことは不可能です。:P-
完全に人間

1
edは加算および素数テストを実行できますか それとも、この種のチャレンジには必要ありませんか?
スティーブン

4
@StepHenはい、通常の後方参照付き正規表現のトリックを介して単項で加算および素数のテストを実行できます。
アンデルスカセオルグ

1
非常に賢いですが、「?」致命的ではありません。
マークプロトニック

2
フラグで指摘したように、コードが端末から読み取られない場合、エラーは致命的です。オンラインでお試しください!
デニス

59

C(最新のLinux)、19バイト

私の有名なセグメンテーション違反を起こしたでしょうが、完全に人間が盗みました。

main(){longjmp(0);}

出力(18バイト):

Segmentation fault

あなたは現在、私よりも高いスコアを持っているので... Win-Win?
完全に人間


短いバージョンの他のロケールはありませんmain(){main();}か?
12431234123412341234123

@ 12431234123412341234123知らない。また、main(){main();}セグメンテーション違反が保証されていません。
MD XF

1
@MDXF保証はありません(gccまたはclangで最適化を有効にすると、無限ループになるか、呼び出しを無視します)。しかし、Code Golfでは、保証ではなく実用的な実装が必要です。
12431234123412341234123

48

Python 2、35バイト

import sys;sys.tracebacklimit=000;a

エラーが発生します:

NameError: name 'a' is not defined

14
トレースバック制限の変更...素晴らしいもの
-HyperNeutrino

1
これは賢いです!
スカイラー

34

JavaScript(Firefox)、31バイト

# This is a comment, right? ...

このエラーをスローします:

SyntaxError: illegal character

Windows 7上のFirefox 54.0.1のコンソールでテスト済み。


26

Pythonの287の 79バイト

ZacharýとErik the Outgolferのおかげで-8バイト。

from __future__ import braces
#i am most surely seriously actually totallyhuman

オンラインでお試しください!

エラーメッセージ、78バイト:

コードがというファイルに保存されていると仮定しますa

  File "a", line 1
    from __future__ import braces
SyntaxError: not a chance

これは実際にはPythonの素敵な小さなイースターエッグです。:D


1
1文字のファイル名を想定できます!
ザカリー

1
1文字のファイル名を想定して、これにゴルフできます。
エリックアウトゴルファー

いいね - - -
totallyhuman

1
しかし、エラーメッセージは、プログラム自体よりも小さくなければならない...
漏れ修道女

1
IDLEを使用すると、\s\sFile "<stdin>", line 1\nSyntaxError: not a chance50バイトのみ(\sスペースおよび\n改行)を取得できるため、51バイトのプログラムを取得できます。
boboquack

20

Haskell、13バイト

main = (main)

t.hsまたは別の1文字の名前で保存し、でコンパイルしghcて実行します。エラーメッセージ(末尾の改行を含む):

t: <<loop>>

19

タクシー38 21バイト

Switch to plan "abc".

生産物:

error: no such label

オンラインでお試しください!

Engineer Toastのおかげで-17バイト

存在しない「abc」への切り替えを試みます。あなたは[abc]どこかにいるでしょう。


4
Switch to plan "abc".生成すると、21バイトまで取得できますerror: no such label。これは、タクシーがいくつかの伝統的な言語に勝る数少ないコードゴルフの課題の1つかもしれません。
エンジニアトースト

@EngineerToastありがとう、そのことを考えていませんでした。
スティーブン

18

> <>、26バイト

>>>>>>>>>>>>>>>>>>>>>>>>>:

オンラインでお試しください!

Fishのすべてのエラーメッセージはsomething smells fishy...であるため、これはポインターをそれよりも長く移動するだけで、その時点で空であるスタックの最上部を複製しようとします。


2
私はそれが好き、それが:-)すべてのソリューションの間違いほとんどの魚だ
XANくんクラーク・デイビス

@ Xan-KunClark-Davis ため息をついた...:P
HyperNeutrino

18

JavaScript(Firefox)、21バイト

(a=null)=>a.charAt(1)

エラー(20バイト)TypeError: a is null


2
ど!短いものがあることは知っていました
...-ETHproductions

私は同じ考えを持っていて、a = null; a.x01234567890を思いついた同じバイト量
-RuteNL

16

System Vシェル、25バイト

mount /dev/hda1 /mnt/hda1

エラーメッセージ(23バイト):

mount: not a typewriter

「タイプライターではない」、またはUnixシステムでENOTTY定義されたエラーコードerrno.hです。これは、無効なioctl(入力/出力制御)番号がioctlシステムコールで指定されたことを示すために使用されます。私のシステムでは/usr/include/asm-generic/errno-base.h、次の行を見つけることができます。

#define ENOTTY          25      /* Not a typewriter */

バージョン6 UNIX以前では、I / Oはテレタイプ(TTY)などのシリアル接続された端末デバイスに制限されていました。これらは通常、gttyおよびsttyシステムコールを介して管理されました。これらのシステムコールのいずれかを非端末デバイスで使用しようとすると、ENOTTY生成されました。

最近では、当然、テレタイプを使用する必要はありません。ときgttystty置き換えられたioctlENOTTY維持しました。一部のシステムでは、引き続きこのメッセージが表示されます。しかし、ほとんどの場合、代わりに「デバイスの不適切なioctl」と言います。


...教えてください
ロックマン

@MegaMan説明付きで更新。
MD XF

1
説明を実際に啓発するための賛成票。
ザンクンクラークデイビス

11

QBasic、11バイト

QBasicには11バイトのソリューションが2つあり、そのうちの1つをさらにゴルフすることができます。QBasicが持つ最短のエラーメッセージはでありoverflow、次のようにトリガーできます。

i%=i%+32677

overflowinteger(i%)の最大値はであるため、これはスローされ32676ます。32677QBasicをこれをオートキャストせずにゴルフをすることはできませんでした...

11バイトの別のエラーはになりますout of data。QBasicにはDATA、プログラムにデータを保存するステートメントがあり、ステートメントは後でアクセスできますREADREADsより多くのsを発行するDATAと、エラーが発生します。

READ a$ '--

エラーメッセージの長さまで、ステートメントにコメントが埋め込まれることに注意してください。はい、短いプログラムのエラーメッセージと短いエラーメッセージのプログラムがあります...


11

C(モダンLinux)、19バイト

私はこれをチャットで提案しましたが、誰もその機会を奪いませんでした。:P MD XFの陽気な回答に感謝します

main(){puts('s');;}

エラーメッセージ、18バイト

Segmentation fault

1
しかし、エラーメッセージは、プログラム自体よりも小さくなければならない...
漏れ修道女

バイトカウントがめちゃくちゃになってしまった。
完全に人間

9
これは、サブプロセスが終了コード139で終了したときにシェルによって出力される一般的なメッセージです。Cプログラム自体は、エラーメッセージをまったく生成しません。
デニス

7
@Dennis終了コード139は、実際にはシェルによって作成された別の嘘です。Unixは、シグナル11(W_EXITCODE(0, 11) == 11)と終了コード139(W_EXITCODE(139, 9) == 139 << 8)を区別します。シェルは$?非単射でに設定しますWIFEXITED(wstatus) ? WEXITSTATUS(wstatus) : WTERMSIG(wstatus) + 128が、ほとんどの言語では違いが現れます。
アンデルスカセオルグ

2
@Andersは万が一とWIFEXITED(wstatus)同等DIVORCE(alimony)ですか?
ヤヌスバズジャケ



10

PowerShellの215の 189バイト

[]
111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

オンラインでお試しください!

そのため、PowerShellには...詳細...エラーメッセージがあります。さらに、ほとんどの非構文エラーメッセージはランタイム例外です。つまり、致命的ではないため、この問題は短い解析エラーを見つける必要がなくなります。

私が考えるこれがない場合は、最短の一つである最短、 @TessellatingHecklerはこれが最短の解析エラーで実証してきました、そしてそれはまだの重さ188だけでエラーメッセージのバイト。したがって、基本的に「コード」のバイト1に到達するのに十分なs を追加する必要があり189ます。

c:\a.ps1たとえば、これをローカルで実行すると、ファイルパスが短くなるだけでバイトカウントが削減されますが、TIOでは使用できません。

エラーを生成します:

At /tmp/home/.code.tio.ps1:1 char:2
+ []
+  ~
Missing type name after '['.
    + CategoryInfo          : ParserError: (:) [], ParseException
    + FullyQualifiedErrorId : MissingTypename

コメントで3つの質問をされましたが、そのうちの1つはあなたが尋ねたものですが、あなたが尋ねなかった2つはあなたの答えではなくあなたの答えに当てはまりました。
user72528

@ user72528ええ、私もそれが面白いことがわかりました。
AdmBorkBork

1文字のファイル名を使用できます!
ザカリー

1
@Zacharýできますが、TIOがサンドボックスを処理する方法のために、TIOで再現できません。数バイトを節約するよりも、TIOで使用できるようにしたいです。
AdmBorkBork

2
[]短いエラーのように見えるものと、Missing type name after '['正確に数える方法に応じて約190-tio.run/##K8gvTy0qzkjNyfn/PzqWy3Dogv//AQここでのパーサー文字列から取られ、私にとって最も短いパーサーエラーのように見えます ([xml](gc .\ParserStrings.resx)).root.data.value | sort { $_.length } -Desc
TessellatingHeckler

9

Commodore 64 Basic、15バイト

?SYNTAX   ERROR

生産する

?SYNTAX  ERROR

(プログラムに3つあるエラーメッセージの2つのスペースに注意してください)

?SYNTAX ERROR結ばれている?VERIFY ERROR確実コード(最短メッセージによってトリガすることができるC64 Basicが生成することができる第三最短エラーメッセージ、および最短としてBREAK IN 1、つつ、ユーザとの対話を必要とする?LOAD ERROR不良テープやフロッピーディスクを必要とする、と?VERIFY ERRORの存在を必要としますRAM内のプログラムと一致しないファイルを含むフロッピーまたはテープ)。


1
私は投稿時にハ、でもこれを見ていない鉱山。別のBASICユーザーに会えるのはいつでも良い... +1
MD XF


7

ルビー(33 32バイト)

32バイト

&
#abcdefghijklmnopqrstuvwxyz12

エラーをスローします(「a」という名前のファイルを想定):

31バイト

a:1: syntax error, unexpected &

編集:使用してバイトを削り取ら&代わりの<<おかげエリックもさらに短くRubyの解決策を考え出した、: http://codegolf.stackexchange.com/a/135087/65905


1
PPCGへようこそ!
マーティンエンダー

@EricDuminilいいね!エラーメッセージではすべての単一文字演算子が引用されていると思いましたが、あなたは正しいです&。そうではありません。きちんとした!また、16進エスケープで適切に検索します。構文エラー以外の、短くて非スタックトレースの致命的なエラーメッセージを見つけるのに苦労していました。
-ameketa

@ameketa:実際にブルートフォースプログラムを作成し、可能な1、2、3バイトのRubyプログラムをすべてテストしました:Dリンクをお寄せいただきありがとうございます。
エリックドゥミニル

5

Brainf ** k、17バイト、このインタープリター

+++++++++++++++<<

Brainf ** kは非常に単純な言語であり、ほとんどすべてのインタープリターが異なるエラーメッセージを持っています。これはMemory Error: -1、ポインターが左に移動しすぎて別の操作を試みるときに使用します


通訳者を選ぶことは、言語を選ぶことと同じくらい挑戦の一部だと思います。
user72528

@ user72528さて、ここでインタープリターによって言語を定義するので、この課題は、エラーメッセージが最も短いインタープリターを選択することに関するものです:)
HyperNeutrino

1
誰がbrainfuckを倒しますか?誰も?わかった。
エリックアウトゴルファー

無敵の解決策は、1文字のエラーを引き起こす2バイトの解決策です。
ザカリー

@ザカリー確かに笑
HyperNeutrino


5

TryAPL、11バイト

コード(11):

'abcdefghij

エラー(10):

open quote

5

Javascript(Firefox)、29 27バイト

new Date('-').toISOString()

RangeError: invalid date24バイトのスロー。Windows 10上のFirefox 54.0.1でテスト済み。


5

ZX Spectrum Basic、9バイト

RUN USR 8

生成するもの:

エラーメッセージ

説明:

私は(例外的に)行末を含む長さの目的でプログラムのASCII表現をカウントしています(短いプログラムには常にスペースを埋め込むことができるので、それはあまり重要ではありません)。

通常、ZX Spectrumのエラーメッセージはこれよりも長く便利です。0x0008のROMルーチンは、RST 8。へのマシンコード呼び出しに続くエラーコードを予期し、ROMからランダム(確定的)バイトをフェッチし、この無意味なエラーメッセージを生成しますM5はエラー番号で,、エラー印刷ルーチンによって追加され、エラー0:1のline:command位置です。


ZX Spectrumは実行時に数値を評価しないため、実際にはこれは通常9バイトです。したがって、実際には8のバイナリ表現に直接アクセスできる6つの隠しバイトがあります。
ニール


4

Perl 5、5バイト

die$/

1バイトの改行を出力します。

オンラインでお試しください!


._。今...空のファイルでperlエラーのみが発生した場合!
ザカリー

4
待って、これは「プログラム自体によって生成されない可能性がある」違反ですか?そのルールが何を言っているのか理解できませんでした。
アシェプラー

1
@Zacharý...全体の長さが負のエラーメッセージを表示しますか?
アシュプラー

1
これは無効である...かないかもしれません、OPが意味するかどうかに依存して、エラーまたはエラーメッセージ
ザカリー

^明確化:直接プログラムエラーかどうか、直接のエラーメッセージを作成します
ザカリー

4

Perl 5、11バイト

私の他の答えがチャレンジルールに従っているかどうかは明確ではないので、別の選択肢があります。

#line 0
die

エラー出力:

Died.

改行で終わる、6バイト。

オンラインでお試しください!

何らかの理由で、Perlインタープリターの内部関数にPerl_mess_svは以下が含まれます。

if (CopLINE(cop))
    Perl_sv_catpvf(aTHX_ sv, " at %s line %" IVdf,
                    OutCopFILE(cop), (IV)CopLINE(cop));

where CopLINE(cop)は、現在のコードコンテキストの行番号を取得します。したがって、その行番号がゼロと評価された場合、Perlは通常" at <filename> line <n>"のエラーメッセージへの追加をスキップします。


1
それは私にとっても有効ではないようです。IIRC dieは、プログラムを終了するためのものです。
sergiol

1
それはPythonとraiseどう違うのですか?
エリックドゥミニル

さて、OPはエラーまたはエラーメッセージの生成を参照していた可能性があります。私は彼が何を言ったかについてコメントしました。
ザカリー

4

ArnoldC、150バイト

IT'S SHOWTIME
HEY CHRISTMAS TREE b
YOU SET US UP 0
GET TO THE CHOPPER b
HERE IS MY INVITATION b
HE HAD TO SPLIT 0
ENOUGH TALK
YOU HAVE BEEN TERMINATED

オンラインでお試しください!

エラーは94バイトです(末尾の改行を含む):

Exception in thread "main" java.lang.ArithmeticException: / by zero
    at code.main(Hello.java)

私はこれがもっと面白いと思うので保存されています-ネタバレ:それはそれらの10代のいたずらでした。

ArnoldC、280バイト

IT'S SHOWTIME
HEY CHRISTMAS TREE BRBDoorBetterNotBeThosePeskyTeenagePranksters
YOU SET US UP 0
GET YOUR ASS TO MARS BRBDoorBetterNotBeThosePeskyTeenagePranksters
DO IT NOW
I WANT TO ASK YOU A BUNCH OF QUESTIONS AND I WANT TO HAVE THEM ANSWERED IMMEDIATELY
YOU HAVE BEEN TERMINATED

擬似コード:

start program
new variable
set to 0
set new variable to output from function
call function
take input
end program

オンラインでお試しください!

「入力なし」エラーを生成します。(ArnoldCの他のほとんどすべてのエラーには、ボイラープレートの大きな部分が含まれています):

279バイト(末尾の改行を含む):

Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Scanner.java:862)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextInt(Scanner.java:2117)
    at java.util.Scanner.nextInt(Scanner.java:2076)
    at code.main(Hello.java)

4

TI-Basic、9バイト

:最短のエラーメッセージは、8バイトそれぞれERR:DATEERR:MODEERR:STAT、とERR:ZOOMERR:DATE内部クロックのないモデルでは機能しないため、考慮しませんでした。また、ERR:ZOOMトリガーするのが難しすぎるように思えたので、私は行きませんでした。

プログラム(9バイト):

Seq:DrawInv X:::::

エラーメッセージ:ERR:MODE(8バイト)

プログラム(9バイト):

median({1},{0::

エラーメッセージ:ERR:STAT(8バイト)


3

ルビー、25バイト

楽しい運動でした、ありがとう!SegFaultで短いエラーメッセージを表示する方法はおそらくありますが、見つかりませんでした。

/\x
# Invalid hexa regexp

エラーメッセージ:

a:1: invalid hex escape

末尾の改行を含む24バイト。

オンラインでお試しください!

ルビー、26バイト

以前の回答は次のとおりです。

08
# No 8 allowed in octal

エラーメッセージ:

a:1: Invalid octal digit

末尾の改行を含む25バイト。


答えを分けるべきだと思います。
ソロモンウッコ

@SolomonUcko:理由はなんですか?すでに多くの答えがあります。以前の回答の痕跡を残したかっただけです。通常、人々は単に<s> 26 </ s> 25でバイトカウントを編集しますが、多くの場合、小さな変更が必要です。
エリックドゥミニル

実際、なぜ私がそれを言ったのかわからないので、気にしません。
ソロモンウッコ

3

C ++(macOS High Sierraベータ版)、23文字

int main(){*(int*)0=0;}

出力:(22文字)

Segmentation fault: 11

macOSの以前のバージョンがより伝統的なSegmentation fault (core dumped)応答を提供するかどうかを思い出しませんが、それを埋めるためにコードにスペースを追加することは非常に簡単です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.