10
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rubyで湯婆婆を実装してみる

Posted at

はじめに

最近巷ではいろいろな言語で湯婆婆を実装するのが流行っているようですが、まだ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]

rand0 <= 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)
10
7
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?