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-8でwindowsでは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個つなげた状態になったからです。