練習問題6:
"99本のビールが壁に..." 遠足などでよく歌われる古典的な童謡の歌詞、"99 Bottles of Beer on the Wall" を 出力するプログラムを書いてみましょう。
耳の遠いおばあちゃんのプログラムを書いてみましょう。 おばあちゃんに何を言っても(何をタイプしても)、叫ばない限り (つまり、全部大文字でタイプしない限り)、 は?! もっと大きな声で話しておくれ、坊や! と返事をします。もし叫んだときは、彼女はあなたの言葉を聞いて (少なくとも聞いた気がして)、 いやー、1938年以来ないねー! と大声で返事をします。 プログラムにちょっと真実味 を持たせるため、 1930年から1950年のランダムな数字で毎回違う年を叫ぶようにしましょう。あなたはBYEと叫ぶまでおばあちゃんとの会話から逃れられません。上で作った、「耳の遠いおばあちゃんのプログラム」を拡張しましょう。 おばあちゃんはあなたに行って欲しくないのです。 あなたがBYEと叫んでもおばあちゃんは聞こえないふりをします。 BYEを3回連続で 叫ばないといけないように変更してみてください。 BYEと3回叫んでも 連続していない限り、おばあちゃんとの会話は続くようになっているか プログラムをテストして確認してみましょう。
うるう年。 開始の年と終わりの年を聞いて、その間にあるすべてのうるう年を (もし開始や終了の年がうるう年だったらそれも含めて)表示するプログラムを書きましょう。 うるう年は(1984年とか2004年のように)4で割り切れる数の年です。ただし、100で割り切れる年は うるう年ではなくて (たとえば1800年や1900年)、さらに、それは 400で割り切れない限り です。
#songs
bottles = 99
while bottles != 0
puts bottles.to_s + 'Bottles of Beer on the Wall'
puts bottles.to_s + 'Bottles of beer'
puts 'Take one down and pass it around'
bottles -= 1
puts bottles.to_s + 'Bottles of beer on the wall'
puts ''
end
#耳の遠いおばあちゃんのプログラム
tweet = gets.chomp
while tweet != 'BYE'
if tweet != tweet.upcase
puts 'もっと大きな声で話しておくれよ、坊や!'
tweet = gets.chomp
else
year = 1930 + (rand(21))
puts 'いやー ' + year.to_s + ' 年以来ないねー'
tweet = gets.chomp
end
end
puts 'あんだって??'
tweet2 = gets.chomp
while tweet2 != 'BYE'
if tweet2 != tweet2.upcase
puts 'もっと大きな声で話しておくれよ、坊や!'
tweet2 = gets.chomp
else
year = 1930 + (rand(21))
puts 'いやー ' + year.to_s + ' 年以来ないねー'
tweet2 = gets.chomp
end
end
puts 'えぇ??'
tweet3 = gets.chomp
while tweet3 != 'BYE'
if tweet3 != tweet3.upcase
puts 'もっと大きな声で話しておくれよ、坊や!'
tweet3 = gets.chomp
else
year = 1930 + (rand(21))
puts 'いやー ' + year.to_s + ' 年以来ないねー'
tweet3 = gets.chomp
end
end
puts 'はい、バイバイ'
#うるう年
puts 'はじまりの年を教えて下さい'
beginYear = gets.chomp.to_i
puts '終わりの年を教えて下さい'
endYear = gets.chomp.to_i
finishYear = endYear + 1
while beginYear != finishYear
a = beginYear % 4
b = beginYear % 100
c = beginYear % 400
if a == 0 and b != 0
puts beginYear
end
if c == 0
puts beginYear
end
beginYear += 1
end