Crash IRB (etkileşimli Ruby)


18

Ruby, oldukça kullanışlı olan yerleşik bir REPL ile birlikte gelir.

IRB ekran görüntüsü

Zorluk en az miktarda kod çökmesini!

"Crash" tanımı " istenmeyen bir şekilde çıkmasını sağlamaktır ". Bu demektir ki exit, quit, abort, irb_exit, irb_quit, et. ark. geçerli cevaplar değil.

Ayrıca, sistemin başka herhangi bir kısmında herhangi bir yan etkiye neden olamazsınız . Örneğin, `rm -rf /`geçerli de değil.

1.9.3 veya üzeri sürümler geçerlidir. Kodunuz yalnızca Ruby'nin belirli bir sürümünde çalışıyorsa, bunu yanıtta belirtebilirsiniz.

Son kısıtlama, herhangi bir cevhere güvenmemenizdir.

Bu , bu yüzden IRB çöküyor en kısa kod kazanacak!


Golfscript anser haz olabilir, plz?
Dijital Travma

3
vay. Ruby'yi bilmiyorum ve bu cevapları okuduktan sonra asla öğrenemeyeceğim.
izabera

"'Çökme' tanımı 'istenmeyen bir şekilde çıkmasını sağlamaktır." Ne istediğini belirsiz olarak kapatmak için oy kullanıyorum.
msh210

Yanıtlar:



17

16 karakter

String=0
String=0

En kısa değil, ama sanırım ikinci hatta kadar çökmemesi komik. IRB çıkmadan önce kabaca 20 satır metin oluşturur. Bazı nedenlerden dolayı kısaltılamaz 2.times{String=0}.


Düzenle

Şimdiye kadar tüm cevaplar arasında, bu benim için çalıştı tek (ve ellerimi alabilir tüm sürümlerinde çalışır), ve ben bu sürümlerde hepsini test:

sshÜniversiteme girerken ne tür bir Linux alıyorsam:
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 varsayılanı:
ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin13]
Homebrew üzerinden OS X'e yüklendi:
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin12.4.0]

düzenleme 2

7 karakter

İlk sürümümü (ve / veya @ Howard'ın cevabını, maksimum çapraz referans için) @ chinese perl goth'un cevabı ile birleştirmek:

STDIN=0

Array=0hemen çöküyor.
primo

1
@primo cool, ama işe
yarayamıyorum

Burada aynı, sadece bu ve kapanış stdin cevap çalışması, diğerleri sadece uyarı verir.
user12205

Evet, standart olan benim için de çalışıyor. Düzenlememden sonra yayınlandı.
daniero

1
İkinci satırı kısaltabilirsiniz =ve yine de kilitlenir.
Fraxtil

10

12 karakter

Ruby tam olarak benim fincan çay değil, ama stdin'i kapattığımda irb'in komik davrandığını öğrendim :)

$stdin.close

irb 0.9.6 (09/06/30) ve yakut 1.9.3p194 üzerinde test edilmiştir


5
STDIN.closeçok çalışıyor ve 1 daha az karakter!
Kavu

+1 çünkü ona baktığınızda sorun yaratacağı çok açıktır :) Cevabım muhtemelen bir hata daha, ama bunun için gerçekten IRB'nin akıllıca bir şey yapmasını bekleyemezsiniz; Star Trek'teki gibi ya da süper akıllı bir robota imkansız bir soru sorduklarında ve patlarsa.
daniero

İlgili: $>.close.
Ürdün

7

10 9 karakter

@ Daniero'nun cevabında daha kısa bir varyasyon:

String=1
-

Bu, en azından varsayılan OS X Mavericks Ruby'de (2.0.0) çalışır.

Cevap temel olarak Ruby Tokenişlevinin casegiriş jetonunda bir yaptığı gerçeğine dayanır . Davalardan biri String, ilk satır tarafından yeniden tanımlanmış olan davalara karşı kontrol eder . Bu durum başarısız olur, bu nedenle nesne, nesnenin bir ancestorserişimcisi olduğunu varsayar (varsayılan değildir) varsayılana geçer .

"Hata" belirteçte olduğu için, ilk satır başarısız olmaz çünkü satır yalnızca ayrıştırma bittikten sonra yürürlüğe girer. Böylece, sadece sonraki satırları etkiler. Sonraki satırlarda, arızayı görmek için bir tür operatör bulunmalıdır.


+1 Açıklama için. Ama bu daneiro kim? ;)
daniero

@daniero: Özür dilerim, bugün lizdeksik görünüyorum.
nneonneo

6

5 karakter

$>=$<

Stdout'u, stdin'i yazmak için açmaya çalışırken hataya neden olan stdin'e ayarlar ve irb'yi kilitler.


Bunun yakut üzerinde test edildiğine dikkat edin 2.3.0p0
fotoyonize

5

22 karakter

def method_missing;end

Görünüşe göre bazı irb iç ile karışıklık. (Düzeltmek için self.sonra ekleyin def.)


4

12 karakter

def send;end

Bildiğim kadarıyla, Object sınıfında bu tür davranışları gösteren dört yöntem vardır:

send
method_missing
respond_to?
respond_to_missing?

4
Benim IRB içinde sadece döner nilve devam ediyor
daniero

@daniero 1.8.6 ve 1.9.3 her ikisi de çöküyor.
primo

@primo artık
2.0.0'da çökmüyor

4

5 Karakter

IRB=0

IRB'yi yeniden tanımlamak gibi hiçbir şey IRB'yi rahatsız etmez.


Evet! Bu çökmez, ancak bir şeyden sonra 20 satır hatası yazdırır!
Mega Man

Muhtemelen şimdi IRB'nin farklı bir versiyonu, @MegaMan şimdiye kadar kesinlikle YMMV.
vgoff

Her ikisi de, yine de serin!
Mega Man



0

26 + 1 = 27 karakter

Bu çok golf değil, ama kazara keşfetmek için eğlendirildi ve diğerleri zevk olabilir düşündüm.

class Fixnum;def +;end end

Yukarıya girdikten sonra Enter tuşuna ikinci kez basmanız gerektiğinden puana +1 ekledim (ancak başka hiç kimse Enter saymadığından +2 değil).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.