Ruby kommt mit einem eingebauten REPL, was sehr praktisch ist.
Ihre Herausforderung ist es, es in der geringsten Menge an Code zum Absturz zu bringen!
Die Definition von "Absturz" lautet " Unbeabsichtigtes Beenden ". Dieses Mittel exit
, quit
, abort
, irb_exit
, irb_quit
, et. al. sind keine gültigen Antworten.
Darüber hinaus können Sie nicht jede Nebenwirkung zu einem anderen Teil des Systems führen. Zum Beispiel `rm -rf /`
ist auch nicht gültig.
Jede Version 1.9.3 oder höher ist gültig. Wenn Ihr Code nur für eine bestimmte Version von Ruby funktioniert, können Sie dies in der Antwort angeben.
Die letzte Einschränkung ist, dass Sie sich nicht auf Edelsteine verlassen dürfen.
Das ist Code-Golf , also gewinnt der kürzeste Code, der IRB zum Absturz bringt!
Antworten:
5 Zeichen
(inspiriert von @danieros Antwort)
quelle
irb(main):001:0> ENV=0 (irb):1: warning: already initialized constant ENV
irb 0.9.6(09/06/30)
16 Zeichen
Nicht die kürzeste, aber ich finde es lustig, dass es erst in der zweiten Zeile abstürzt. Erzeugt vor dem Beenden von IRB ungefähr 20 Textzeilen. Aus irgendeinem Grund kann es nicht zum Beispiel gekürzt werden
2.times{String=0}
.bearbeiten
Von den bisherigen Antworten ist dies die einzige, die für mich funktioniert hat (und sie funktioniert in allen Versionen, die ich in die Finger bekommen konnte), und ich habe sie alle in diesen Versionen getestet:
Auf welcher Art von Linux auch immer, wenn ichssh
in meine Universität komme : Mac OS X Mavericks Standard: Installiert über Homebrew unter OS X:bearbeiten 2
7 Zeichen
Kombiniere meine erste Version (und / oder @ Howards Antwort für maximale Querverweise) mit der Antwort von @ chinese perl goth :
quelle
Array=0
stürzt sofort ab.=
und es stürzt immer noch ab.12 Zeichen
rubin ist nicht gerade meine tasse tee, aber ich habe gerade herausgefunden, dass irb lustig wirkt, wenn ich den stdin schließe :)
getestet auf irb 0.9.6 (09/06/30) und ruby 1.9.3p194
quelle
STDIN.close
funktioniert auch und es ist 1 weniger char!$>.close
.109 ZeichenEine kürzere Variante zu @ danieros Antwort:
Dies funktioniert zumindest in der Standardversion von OS X Mavericks Ruby (2.0.0).
Die Antwort beruht im Wesentlichen auf der Tatsache, dass die Ruby-
Token
Funktion eincase
Eingabetoken verarbeitet. Einer der Fälle prüft dagegenString
, welcher durch die erste Zeile neu definiert wurde. Dieser Fall schlägt fehl, sodass der Fall auf den Standardwert zurückgeht, bei dem davon ausgegangen wird, dass das Objekt über einenancestors
Accessor verfügt (was nicht der Fall ist ).Da sich der "Bug" im Tokenizer befindet, schlägt die erste Zeile nicht fehl, da die Zeile erst nach Abschluss des Parsings wirksam wird. Es betrifft also nur nachfolgende Zeilen. Nachfolgende Zeilen müssen einen Operator enthalten, um den Fehler anzuzeigen.
quelle
5 Zeichen
Setzt stdout auf stdin, wodurch ein Fehler beim Öffnen von stdin zum Schreiben ausgelöst wird und irb abstürzt.
quelle
22 Zeichen
Anscheinend liegt es an einigen irb-Interna. (Um es zu beheben, fügen Sie
self.
nachdef
.)quelle
12 Zeichen
Soweit ich weiß, gibt es in der Object-Klasse vier Methoden, die diese Art von Verhalten zeigen:
quelle
nil
und geht weiter5 Zeichen
Nichts stört den IRB so sehr wie die Neudefinition des IRB.
quelle
1210 ZeichenIch weiß nicht, ob das zählt, wegen der
exec
quelle
exec
8 Charaktere
Ähnlich wie die Antwort von Chinese Perl Gothic :
$>
ist ein Alias für STDOUT.quelle
26 + 1 = 27 Zeichen
Das ist nicht sehr golfen, aber ich war amüsiert, es zufällig zu entdecken und dachte, andere könnten es genießen.
Ich habe +1 zur Punktzahl hinzugefügt, weil Sie die Eingabetaste ein zweites Mal drücken müssen, nachdem Sie die oben genannten Punkte eingegeben haben (aber nicht +2, weil sonst niemand die Eingabetaste gezählt hat).
quelle