はじめに
最近巷ではいろいろな言語で湯婆婆を実装するのが流行っているようですが、まだRubyではなさそうなので乗っかっておきます。
コード
puts "契約書だよ。そこに名前を書きな。"
name = gets.chomp
puts "フン。#{name}というのかい。贅沢な名だねぇ。"
new_name_index = rand(name.size)
new_name = name[new_name_index]
puts "今からお前の名前は#{new_name}だ。いいかい、#{new_name}だよ。分かったら返事をするんだ、#{new_name}!!"
解説
契約書
まずは契約書を渡します。
puts "契約書だよ。そこに名前を書きな。"
name = gets.chomp
gets
で標準入力を読み取ります。これには最後の改行も含まれているため、chomp
で改行を取り除きます。
名前を奪う
new_name_index = rand(name.size)
new_name = name[new_name_index]
rand
で0 <= n < name.size
の乱数を生成し、一文字を抜き出します。
実行結果
$ ruby yubaba.rb
契約書だよ。そこに名前を書きな。
山田太郎
フン。山田太郎というのかい。贅沢な名だねぇ。
今からお前の名前は田だ。いいかい、田だよ。分かったら返事をするんだ、田!!
何も入力しないと
本家と違い、何も入力せずEnterを押してもエラーは発生しません。
$ ruby yubaba.rb
契約書だよ。そこに名前を書きな。
フン。というのかい。贅沢な名だねぇ。
今からお前の名前はだ。いいかい、だよ。分かったら返事をするんだ、!!
ただし、Enterの代わりにCtrl+Dを押すとエラーが発生します。
$ ruby yubaba.rb
契約書だよ。そこに名前を書きな。
Traceback (most recent call last):
yubaba.rb:3:in `<main>': undefined method `chomp' for nil:NilClass (NoMethodError)