るびらな!

RubyをLearnする人の勉強記録。(超)弩(級の)素人なので、誰かダメさがわかる人に罵ってもらったりして、少しずつ知見を広げたいと思っています。

ITP1_1_C Rectangle

ここも押していただけると嬉しいです #=> にほんブログ村 IT技術ブログへ にほんブログ村 IT技術ブログ Rubyへ にほんブログ村 IT技術ブログ Ruby on Railsへ

AOJ第2日目!

問題

本物はこちら ->
長方形 | プログラミング入門 | Aizu Online Judge

長方形の面積と周の長さ

たて a cm よこ b cm の長方形の面積と周の長さを求めるプログラムを作成して下さい。

Input

a と b が1つの空白で区切られて与えられます。

Output

面積と周の長さを1つの空白で区切って1行に出力して下さい。

とのことで、今度は入力される数値は2つ、空白区切りで与えられるので、

それを正しく数値として入力できるか、ということを試されている感じですね。

自分のコード

a = gets.split(" ")
s = a[0].to_i*a[1].to_i
x = 2*a[0].to_i+2*a[1].to_i
puts s.to_s + " " + x.to_s

入力されたデータを空白で区切って配列にし、aに代入。

その後、sを面積、xを周の長さとして、aに代入した値を.to_iで整数にし

計算して代入しておく。

その後、putsでsとxをそれぞれ文字列にしたものを空白を挟んでつなぎ、出力。

という感じです。

他の人のコード

なんか、ここまで来るとすごく短い人とかすごく長い人がいて、非常に面白いですね。

すごく長い人
class RectangleCaliculator
  def calcArea(width, height)
    return width * height
  end
 
  def calcCircumference(width, height)
    return (width + height) * 2
  end
end
 
# 入力の横、縦の長さ取得
inputArray = gets.split(nil)
height = inputArray[0].to_i
width = inputArray[1].to_i
 
# 計算クラスを作成し、面積、周の長さを計算
rect = RectangleCaliculator.new
area = rect.calcArea(width, height)
circumference = rect.calcCircumference(width, height)
 
# 出力
puts area.to_s + " " + circumference.to_s

あっ、出ました!

クラス作っちゃう系!

でも、可読性は高くていいですね。

クラスの中身を見なくても、何をしているのか見た瞬間分かります。

すごく短い人
i,j = gets.split.map(&:to_i)
puts "#{i*j} #{i*2+j*2}"

あ、なるほど! これでいいのか!

gets.split.map(&:to_i)で、入力された文字列を区切って整数にして配列にして、

二つのデータを別々にiとjに代入してるんですね!

勉強になります…