#
def fraction
begin
- numerator = numerator_part
- denominator = denominator_part
- end until is_lowest_term?(numerator, denominator)
+ numerator = numerator_part.to_i
+ denominator = denominator_part.to_i
+ end until is_not_same_term?(numerator, denominator)
+ until is_lowest_term?(numerator, denominator)
+ gcd = numerator.gcd(denominator)
+ numerator /= gcd
+ denominator /= gcd
+ end
"#{numerator}/#{denominator}"
end
def is_lowest_term?(numerator, denominator)
- numerator != denominator &&
- numerator % denominator != 0 &&
- denominator % numerator != 0
+ numerator.gcd(denominator) == 1
+ end
+
+ def is_not_same_term?(numerator, denominator)
+ numerator != denominator
end
def numerator_part
:denominator_max => nil,
:minus => nil
)
- subject.should_receive(:numerator_part).and_return('a')
- subject.should_receive(:denominator_part).and_return('b')
+ subject.should_receive(:numerator_part).and_return('5')
+ subject.should_receive(:denominator_part).and_return('4')
end
- it { subject.__send__(:fraction).should == "a/b" }
+ it { subject.__send__(:fraction).should == "5/4" }
end
end
end