Crash IRB (Ruby interaktif)

18

Ruby hadir dengan REPL bawaan, yang cukup praktis.

tangkapan layar IRB

Tantangan Anda adalah membuatnya crash dalam jumlah kode paling sedikit!

Definisi "crash" adalah "membuatnya keluar dengan cara yang tidak disengaja ." Ini berarti exit, quit, abort, irb_exit, irb_quit, et. Al. bukan jawaban yang valid.

Selain itu, Anda tidak boleh menyebabkan efek samping apa pun pada bagian lain dari sistem. Misalnya, `rm -rf /`tidak valid juga.

Versi 1.9.3 atau lebih tinggi adalah valid. Jika kode Anda hanya berfungsi pada versi Ruby tertentu, Anda dapat menentukannya dalam jawaban.

Batasan terakhir adalah Anda tidak boleh bergantung pada permata apa pun.

Ini adalah , jadi kode terpendek yang menabrak IRB akan menang!

Gagang pintu
sumber
Saya bisa menambahkan skrip golf, plz?
Digital Trauma
3
Wow. saya tidak tahu ruby, dan setelah membaca jawaban ini saya tidak akan pernah mempelajarinya.
izabera
"Definisi 'crash' adalah 'membuatnya keluar dengan cara yang tidak disengaja.'" Bagaimana kita seharusnya menulis kode yang dimaksudkan untuk melakukan sesuatu yang tidak disengaja? Saya memilih untuk menutup karena tidak jelas apa yang Anda minta.
msh210

Jawaban:

6

5 karakter

ENV=0

(terinspirasi oleh jawaban @daniero )

Howard
sumber
tidak bekerja untuk saya:irb(main):001:0> ENV=0 (irb):1: warning: already initialized constant ENV
Brian Minton
@BrianMinton Hanya memiliki 1.9.3p194 di tangan dan "berfungsi" dengan versi itu.
Howard
ah, versi saya sudah cukup tua:irb 0.9.6(09/06/30)
Brian Minton
1
@BrianMinton itu adalah versi terbaru dari irb
DarkHeart
17

16 karakter

String=0
String=0

Bukan yang terpendek, tapi saya pikir itu lucu bahwa itu tidak crash sampai baris kedua. Menghasilkan sekitar 20 baris teks sebelum IRB keluar. Untuk beberapa alasan itu tidak dapat disingkat menjadi misalnya 2.times{String=0}.


sunting

Dari semua jawaban sejauh ini, ini adalah satu-satunya yang bekerja untuk saya (dan itu bekerja di semua versi yang bisa saya dapatkan), dan saya sudah menguji semuanya dalam versi ini:

Di Linux apa pun yang saya dapatkan ketika sshmasuk ke universitas saya:
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux]
ruby 1.8.5 (2006-08-25) [x86_64-linux]
Default Mac OS X Mavericks:
ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin13]
Diinstal melalui Homebrew pada OS X:
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin12.4.0]

edit 2

7 karakter

Menggabungkan versi pertama saya (dan / atau jawaban @ Howard , untuk referensi silang maksimum) dengan jawaban @ chinese perl goth :

STDIN=0
daniero
sumber
Array=0crash segera.
primo
1
@rimo keren, tapi saya tidak bisa membuatnya bekerja: / (Lihat edit saya)
daniero
Sama di sini, hanya ini dan jawaban stdin penutup bekerja, semua yang lain hanya memberikan peringatan.
user12205
Ya, yang stdin bekerja untuk saya juga. Itu diposting setelah edit saya.
daniero
1
Anda dapat mempersingkat baris kedua ke =dan itu masih macet.
Fraxtil
10

12 karakter

ruby bukan cangkir teh saya, tapi saya baru tahu bahwa irb bertindak lucu ketika saya menutup stdin :)

$stdin.close

diuji pada irb 0.9.6 (09/06/30) dan ruby ​​1.9.3p194

perl Cina goth
sumber
5
STDIN.closebekerja juga, dan itu 1 kurang char!
Kavu
+1 karena sangat jelas ketika Anda melihatnya akan menimbulkan masalah :) Jawaban saya mungkin lebih merupakan bug, tetapi untuk yang ini Anda tidak dapat benar-benar mengharapkan IRB untuk melakukan sesuatu yang pintar; itu seperti di Star Trek atau apa pun ketika mereka mengajukan robot yang sangat cerdas pertanyaan yang mustahil dan meledak.
daniero
Terkait: $>.close.
Jordan
7

10 9 karakter

Varian yang lebih pendek pada jawaban @ daniero:

String=1
-

Ini berfungsi setidaknya di OS default Mavericks Ruby (2.0.0).

Jawabannya pada dasarnya bergantung pada fakta bahwa Tokenfungsi Ruby melakukan casepada token input. Salah satu kasus memeriksa String, yang telah didefinisikan ulang oleh baris pertama. Kasing ini gagal, maka kasing jatuh ke default, yang mengasumsikan objek memiliki ancestorsaccessor (yang tidak).

Karena "bug" ada di tokenizer, baris pertama tidak akan gagal karena garis hanya berlaku setelah penguraian selesai. Dengan demikian, itu hanya mempengaruhi baris berikutnya. Saluran berikutnya harus berisi beberapa jenis operator untuk melihat kegagalannya.

nneonneo
sumber
+1 Untuk penjelasannya. Tapi siapa daneiro ini? ;)
daniero
@daniero: Permintaan maaf saya, saya tampak lysdexic hari ini.
nneonneo
6

5 karakter

$>=$<

Set stdout ke stdin yang melempar kesalahan saat mencoba membuka stdin untuk menulis dan crash irb.

difotoionisasi
sumber
Perhatikan bahwa ini diuji pada 2.3.0p0 ruby
photoionized
5

22 karakter

def method_missing;end

Rupanya itu kacau dengan beberapa irb internal. (Untuk memperbaikinya, tambahkan self.setelah def.)

Gagang pintu
sumber
4

12 karakter

def send;end

Sejauh yang saya tahu, ada empat metode di kelas Object yang menunjukkan perilaku semacam ini:

send
method_missing
respond_to?
respond_to_missing?
David Herrmann
sumber
4
Di IRB saya hanya mengembalikan nildan menjalankan
daniero
@daniero 1.8.6 dan 1.9.3 keduanya macet.
primo
@primo tidak lagi mogok pada 2.0.0
drusepth
4

5 Karakter

IRB=0

Tidak ada yang mengganggu IRB seperti mendefinisikan ulang IRB.

vgoff
sumber
Ya! Ini tidak crash, tetapi mencetak 20 baris kesalahan setelah apa pun!
Mega Man
Mungkin versi IRB yang berbeda sekarang, @MegaMan jadi sekarang, pasti YMMV.
vgoff
Keduanya keren, pokoknya!
Mega Man
2

12 10 karakter

exec"exec"

Saya tidak tahu apakah ini penting, karena exec

CocoaBean
sumber
1
Anda dapat menyingkirkan ruang setelah yang pertamaexec
Gugatan Dana Monica
2

8 karakter

Mirip dengan jawaban cina perl goth :

$>.close

$> adalah alias untuk STDOUT.

Yordania
sumber
0

26 + 1 = 27 karakter

Ini tidak terlalu golf, tetapi saya senang menemukannya secara tidak sengaja dan berpikir orang lain akan menikmatinya.

class Fixnum;def +;end end

Saya menambahkan +1 ke skor karena Anda harus menekan Enter untuk kedua kalinya setelah memasukkan di atas (tetapi tidak +2 karena tidak ada orang lain yang menghitung Enter).

Yordania
sumber