クラッシュIRB(インタラクティブRuby)


18

Rubyには組み込みのREPLが付属しており、非常に便利です。

IRBのスクリーンショット

あなたの挑戦は、最小限のコードでクラッシュさせることです!

「クラッシュ」の定義は、「意図しない方法で終了させる」です。この手段exitquitabortirb_exitirb_quit、ら。al。有効な答えではありません。

さらに、システムの他の部分に副作用を引き起こすことはできません。たとえば、`rm -rf /`も無効です。

バージョン1.9.3以上が有効です。コードが特定のバージョンのRubyでのみ機能する場合は、答えで指定できます。

最後の制限は、宝石に依存しないことです。

これはなので、IRBをクラッシュさせる最短のコードが勝ちます!


Golfscript anser、plzを削除できますか?
デジタル外傷14

3
ワオ。私はルビーを知りません、そして、これらの答えを読んだ後、私はそれを決して学びません。
イザベラ14

「「クラッシュ」の定義は、「意図しない方法で終了させる」ことです。」意図しない何かを行うためのコードをどのように記述するのでしょうか。私は、あなたが何を求めているのかわからないとして閉めることに投票します。
msh210

回答:


6

5文字

ENV=0

@danieroの答えに触発された)


私のために動作しません:irb(main):001:0> ENV=0 (irb):1: warning: already initialized constant ENV
ブライアンミントン14

@BrianMintonは手元に1.9.3p194しかなく、そのバージョンで「動作」していました。
ハワード14

ああ、私のバージョンはかなり古いです:irb 0.9.6(09/06/30)
ブライアンミントン

1
irbの最新バージョンである
@BrianMinton

17

16文字

String=0
String=0

最短ではありませんが、2行目までクラッシュしないのは面白いと思います。IRBが終了する前に約20行のテキストを生成します。何らかの理由で、たとえばに短縮することはできません2.times{String=0}


編集する

これまでのすべての答えのうち、これは私のために働いた唯一のものであり(そして私が手に入れることができるすべてのバージョンで動作します)、私はこれらのバージョンですべてをテストしました:

ssh大学に入学する ときにどんな種類のLinuxでも手に入ります。
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux]
ruby 1.8.5 (2006-08-25) [x86_64-linux]
Mac OS X Mavericksのデフォルト:
ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin13]
OS XのHomebrewを介してインストール:
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin12.4.0]

編集2

7文字

私の最初のバージョン(および/または最大の相互参照のための@ ハワードの答え)と@ chinese perl gothの答えを組み合わせます:

STDIN=0

Array=0すぐにクラッシュします。
primo 14

1
@primoかっこいいが、うまくいかない:/(私の編集を参照)
daniero 14

ここでも同じですが、これと最後の標準入力のみが機能し、他のすべては警告のみを表示します。
user12205 14

はい、標準入力は私にも有効です。編集後に投稿されました。
ダニエル14

1
2行目を短くし=ても、クラッシュします。
Fraxtil 14

10

12文字

rubyは正確には私のお茶ではありませんが、stdinを閉じるとirbがおかしくなることがわかりました:)

$stdin.close

irb 0.9.6(09/06/30)およびruby 1.9.3p194でテスト済み


5
STDIN.close動作しますが、1文字少ないです!
カヴー14

+1を見てみると、トラブルを引き起こすほど明白だからです:)私の答えはおそらくバグです。スタートレックなど、スーパーインテリジェントロボットに不可能な質問をして爆発するようなものです。
daniero 14

関連:$>.close
ヨルダン

7

10 9文字

@danieroの答えの短い変形:

String=1
-

これは、少なくともデフォルトのOS X Mavericks Ruby(2.0.0)で機能します。

答えは基本的に、Ruby Token関数がcase入力トークンに対して行うという事実に依存しています。ケースの1つは、String最初の行で再定義されたに対してチェックします。このケースは失敗するため、ケースはデフォルトに戻り、オブジェクトにancestorsアクセサーがあります(そうではない)。

「バグ」はトークナイザーにあるため、解析が終了した後にのみ行が有効になるため、最初の行は失敗しません。したがって、後続の行にのみ影響します。失敗を確認するには、後続の行に何らかの演算子を含める必要があります。


+1説明のため。しかし、このダネイロは誰ですか?;)
daniero 14

@daniero:おMyび申し上げますが、今日はリクソデックスのようです。
nneonneo 14

6

5文字

$>=$<

stdoutをstdinに設定します。これにより、書き込みのためにstdinを開こうとしてエラーがスローされ、irbがクラッシュします。


これはRubyの2.3.0p0でテストされることに注意してください
光イオン化

5

22文字

def method_missing;end

どうやら、それはいくつかのirb内部を混乱させます。(修正するには、self.後に追加しdefます。)


4

12文字

def send;end

私の知る限り、Objectクラスにはこのような動作を示す4つのメソッドがあります。

send
method_missing
respond_to?
respond_to_missing?

4
私のIRBで、それは単にリターンnilとに運ぶ
daniero

@daniero 1.8.6および1.9.3の両方がクラッシュします。
プリモ

@primoは2.0.0でクラッシュしなくなりました
14年

4

5キャラクター

IRB=0

IRBを再定義するようなIRBを妨害するものはありません。


うん!これはクラッシュしませんが、何とかして20行のエラーを出力します!
メガマン

おそらく現在は異なるバージョンのIRB、@ MegaManですので、間違いなくYMMVです。
vgoff

とにかく両方ともクールです!
メガマン



0

26 + 1 = 27文字

これはあまりゴルフではありませんが、偶然発見したのは面白く、他の人が楽しんでくれると思いました。

class Fixnum;def +;end end

上記を入力した後、もう一度Enterキーを押す必要があるため、スコアに+1を追加しました(ただし、他の人がEnterをカウントしなかったため、+ 2は追加しません)。

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