1

分数の足し算、掛け算、引き算、割り算、簡約を行うプログラムを書きました。2/4 を単純化しようとすると、1/1 になります。これが私のプログラムの単純化部分です:

def simplify(numer1,denom1)
  gcd = numer1.gcd(denom1)
  final_numer = numer1 / gcd
  final_denom = numer1 / gcd

  return {"Numerator" => final_numer, "Denominator" => final_denom}
end

puts  simplify(2,4) # => 1/1
4

1 に答える 1

2

ここにタイプミスの問題があると思います:

def simplify(numer1,denom1)
  gcd = numer1.gcd(denom1)
  final_numer = numer1 / gcd
  final_denom = numer1 / gcd
               #^^^^^^ shouldn't it be `denom1 / gcd` ?
  return {"Numerator" => final_numer, "Denominator" => final_denom}
end

実際、Rational オブジェクトはそれを簡単に行うことができます。

def simplify(numer1, denom1)
  return Rational(numer1, denom1)
end

ドキュメント: http://www.ruby-doc.org/core-2.0.0/Rational.html

于 2013-10-21T21:01:13.127 に答える