Rubyで鶴亀算を書いてみる

Rubyを使い始めて2日目です。
今回は鶴亀算をしてくれるコードを書いてみます。

鶴と亀が6匹います。足は全部で20本。さて、それぞれ何匹でしょう?

Answer
亀が6匹いるとします。足の数は
6*4=24
24-20=4
4本多いので鶴は4/2=2羽います。はじめに下のコードを書きました。

puts("足の数は何本ですか?")
legs_num = gets()
puts("鶴と亀は合わせて何匹ですか?")
sum = gets()

cranes_num = (sum * 4 - legs_num) / 2
puts("鶴は#{cranes_num}匹 亀は#{sum - cranes_num}")

実行結果

turukame.rb:1: invalid multibyte char (UTF-8)
turukame.rb:1: invalid multibyte char (UTF-8)
turukame.rb:1: syntax error, unexpected $end, expecting ')'
puts("足の数は何本ですか?")

怒られた・・・。puts関数に日本語は使えないのかな?

思ったら

単に、書いたコードがutf-8windowsではshift_jisでないと動かないとのことでした。そこで、コマンドを"ruby -Ks turukame.rb"でshift_jisで実行しました。
実行結果

C:\***>ruby -Ks turukame.rb
足の数は何本ですか?
20
鶴と亀は合わせて何匹ですか?
6
turukame.rb:6:in `<main>': undefined method `-' for "6\n6\n6\n6\n":String (NoMethodError)

また怒られた。
これは、文字列を数値として扱っている事に問題がある。ので、integer()を使ってint型に変換します。これ、Cやらphpやらと一緒の関数なんでなじみ深い。

実行結果

足の数は何本ですか?
20
鶴と亀は合わせて何匹ですか?
6
鶴は2匹 亀は4匹

成功したぁああv

2回目のエラー「"6\n6\n6\n6\n":String (NoMethodError)」ですが、これは「cranes_num *4 ...」のheadに設定された6を4個つなげた状態になったからです。