Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'rubygems'
- require 'rspec'
- class Fixnum
- ROMANS = { M: 1000, CM: 900, D: 500, CD: 400, C: 100, XC: 90, L: 50, XL: 40, X: 10, IX: 9, V: 5, IV: 4, I: 1 }
- def to_roman
- ROMANS.detect do |roman, arabic|
- diff = self - arabic
- return "#{roman}#{diff.to_roman}" if diff >= 0
- end
- end
- end
- describe "Roman numerals" do
- it "transforms 1 to I" do
- 1.to_roman.should == "I"
- end
- it "transforms 2 to II" do
- 2.to_roman.should == "II"
- end
- it "transforms 3 to III" do
- 3.to_roman.should == "III"
- end
- it "transforms 4 to IV" do
- 4.to_roman.should == "IV"
- end
- it "transforms 5 to V" do
- 5.to_roman.should == "V"
- end
- it "transforms 6 to VI" do
- 6.to_roman.should == "VI"
- end
- it "transforms 7 to VII" do
- 7.to_roman.should == "VII"
- end
- it "transforms 8 to VIII" do
- 8.to_roman.should == "VIII"
- end
- it "transforms 9 to IX" do
- 9.to_roman.should == "IX"
- end
- it "transforms 10 to X" do
- 10.to_roman.should == "X"
- end
- it "transforms 11 to XI" do
- 11.to_roman.should == "XI"
- end
- it "transforms 12 to XII" do
- 12.to_roman.should == "XII"
- end
- it "transforms 14 to XIV" do
- 14.to_roman.should == "XIV"
- end
- it "transforms 15 to XV" do
- 15.to_roman.should == "XV"
- end
- it "transforms 19 to XIX" do
- 19.to_roman.should == "XIX"
- end
- it "transforms 39 to XXXIX" do
- 39.to_roman.should == "XXXIX"
- end
- it "transforms 40 to XL" do
- 40.to_roman.should == "XL"
- end
- it "transforms 41 to XLI" do
- 41.to_roman.should == "XLI"
- end
- it "transforms 50 to L" do
- 50.to_roman.should == "L"
- end
- it "transforms 89 to LXXXIX" do
- 89.to_roman.should == "LXXXIX"
- end
- it "transforms 90 to XC" do
- 90.to_roman.should == "XC"
- end
- it "transforms 99 to XCIX" do
- 99.to_roman.should == "XCIX"
- end
- it "transforms 100 to C" do
- 100.to_roman.should == "C"
- end
- it "transforms 399 to CCCXCIX" do
- 399.to_roman.should == "CCCXCIX"
- end
- it "transforms 400 to CD" do
- 400.to_roman.should == "CD"
- end
- it "transforms 500 to D" do
- 500.to_roman.should == "D"
- end
- it "transforms 899 to DCCCXCIX" do
- 899.to_roman.should == "DCCCXCIX"
- end
- it "transforms 900 to CM" do
- 900.to_roman.should == "CM"
- end
- it "transforms 1000 to M" do
- 1000.to_roman.should == "M"
- end
- end
Add Comment
Please, Sign In to add comment