はじめに
Railsの勉強を始めようと思い、Rubyを復習することに。大学1年生の頃に買った『たのしいRuby』を頭からやってみることにした。
本題
今回は第12章の練習問題を解いていく。それでは早速解いてみる。
(1) 摂氏温度を華氏温度に変換するメッソドcels_to_fahrを定義せよ。
def cels_to_fahr(n)
(n * 9).fdiv(5) + 32
end
puts cels_to_fahr(37)
#実行結果: 98.6
一応、出力して確認した。
(2) (1)の逆、華氏温度を摂氏温度に変換するメソッドfahr_to_celsを定義せよ。また、摂氏1度~100度まで1刻みにし華氏温度との対応を出力せよ。
メソッドfahr_to_cels
def fahr_to_cels(n)
5*(n-32).fdiv(9)
end
p fahr_to_cels(98)
#実行結果: 37.0
摂氏1度~100度まで1刻みにし華氏温度との対応
def cels_to_fahr(n)
(n * 9).fdiv(5) + 32
end
range=1..100
range.each do |i|
print "#{i}℃ :"
puts "#{cels_to_fahr(i)}°F"
end
#実行結果:割愛
(2)のfahr_to_celsメソッドは(1)で作ったメソッドの逆の式にすればよいだけでした。1~100°Cの華氏温度の対応は,rangeで範囲を決め対応して出力するようにしました。
(3) 1~6までのランダムな整数を返すメソッドdiceを定義せよ。
def dice
return Random.rand(6)+1
end
puts dice
#実行結果:4(1~6ランダムに変わる)
ランダム関数を使うだけでそこまで難しくない。0~5までランダムに出してそれに1を足すことで、1~6を出すようにした。
(4) 10個のサイコロを振って出た目の合計を返すメソッドdice10を定義せよ。
def dice10
ans=0
range=1..10
range.each do |x|
x = Random.rand(6)+1
ans += x
end
return ans
end
puts dice10
#実行結果:38(10~60の範囲でランダムに変わる)
ansに作られたサイコロの目の数を順に足していくプログラムにした。
(5) 整数numが素数であるかどうか調べるメソッドprime?(num)を定義せよ。
def prime?(num)
if num==0 or num ==1
puts "素数ではありません"
exit
else
end
lis=Array.new
range=1..num
range.each do |i|
if num % i ==0
lis.push(i)
if lis.length > 2
puts "素数ではありません"
exit
end
end
end
puts "素数です"
end
prime?(403)
#実行結果:素数ではありません
0,1には例外的に素数でないと処理させ、1~numまでの数字で割り切れた場合はansに1を足し、この値が3以上になったら素数では無いのでこれ以上処理を続けても意味は無いので処理を止めるようにしました。
最後に
今回はQiitaに初投稿の記事でした。今後、『たのしいRuby』の練習問題を解いてみたPart.2が出せるようにしたいと思います。