Ruby est livré avec un REPL intégré, ce qui est assez pratique.
Votre défi est de le planter dans le moins de code!
La définition de «crash» est «faites-le sortir de manière non intentionnelle ». Ce moyen exit
, quit
, abort
, irb_exit
, irb_quit
, et. Al. ne sont pas des réponses valides.
De plus, vous ne pouvez provoquer aucun effet secondaire sur aucune autre partie du système. Par exemple, `rm -rf /`
n'est pas valide non plus.
Toute version 1.9.3 ou supérieure est valide. Si votre code ne fonctionne que sur une version spécifique de Ruby, vous pouvez le spécifier dans la réponse.
La dernière restriction est que vous ne pouvez pas compter sur des gemmes.
C'est le code-golf , donc le code le plus court qui plante IRB gagnera!
Réponses:
5 caractères
(inspiré par la réponse de @daniero )
la source
irb(main):001:0> ENV=0 (irb):1: warning: already initialized constant ENV
irb 0.9.6(09/06/30)
16 caractères
Pas le plus court, mais je pense que c'est drôle qu'il ne plante pas avant la deuxième ligne. Génère environ 20 lignes de texte avant la fermeture de l'IRB. Pour une raison quelconque, il ne peut pas être raccourci par exemple
2.times{String=0}
.Éditer
De toutes les réponses jusqu'à présent, c'est la seule qui a fonctionné pour moi (et cela fonctionne dans toutes les versions sur lesquelles je pourrais mettre la main), et je les ai toutes testées dans ces versions:
Quel que soit le type de Linux que j'obtiensssh
en entrant dans mon université: Mac OS X Mavericks par défaut: Installé via Homebrew sur OS X:modifier 2
7 caractères
Combiner ma première version (et / ou la réponse de @ Howard pour une référence croisée maximale) avec la réponse de @ chinese perl goth :
la source
Array=0
se bloque immédiatement.=
et elle se bloque toujours.12 caractères
le rubis n'est pas exactement ma tasse de thé, mais je viens de découvrir que l'irb agit de façon drôle quand je ferme le stdin :)
testé sur irb 0.9.6 (09/06/30) et rubis 1.9.3p194
la source
STDIN.close
fonctionne aussi, et c'est 1 char de moins!$>.close
.109 caractèresUne variante plus courte de la réponse de @ daniero:
Cela fonctionne au moins dans OS X Mavericks Ruby par défaut (2.0.0).
La réponse repose essentiellement sur le fait que la
Token
fonction Ruby fait uncase
sur le jeton d'entrée. Un des cas vérifieString
, qui a été redéfini par la première ligne. Ce cas échoue, donc le cas tombe à la valeur par défaut, ce qui suppose que l'objet a unancestors
accesseur (ce qu'il n'a pas).Parce que le "bug" est dans le tokenizer, la première ligne n'échouera pas car la ligne ne prend effet qu'après l'analyse. Ainsi, cela n'affecte que les lignes suivantes. Les lignes suivantes doivent contenir une sorte d'opérateur afin de voir l'échec.
la source
5 caractères
Définit stdout sur stdin, ce qui génère une erreur lors de l'ouverture de stdin pour l'écriture et bloque irb.
la source
22 caractères
Apparemment, il dérange certains internes irb. (Pour le réparer, ajoutez
self.
aprèsdef
.)la source
12 caractères
Pour autant que je sache, il existe quatre méthodes dans la classe Object qui montrent ce type de comportement:
la source
nil
et continue5 personnages
Rien ne dérange l'IRB tout comme la redéfinition de l'IRB.
la source
1210 caractèresJe ne sais pas si cela compte, à cause de la
exec
la source
exec
8 caractères
Similaire à Chinese Perl Goth's Answer :
$>
est un alias pour STDOUT.la source
26 + 1 = 27 caractères
Ce n'est pas très golfique, mais j'ai été amusé de le découvrir par accident et j'ai pensé que d'autres pourraient l'apprécier.
J'ai ajouté +1 au score parce que vous devez appuyer sur Entrée une deuxième fois après avoir entré ce qui précède (mais pas +2 car personne d'autre n'a compté Entrée).
la source