Guest User

Untitled

a guest
Jul 19th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.30 KB | None | 0 0
  1. require 'rubygems'
  2. require 'rspec'
  3.  
  4. class Fixnum
  5. 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 }
  6. def to_roman
  7. ROMANS.detect do |roman, arabic|
  8. diff = self - arabic
  9. return "#{roman}#{diff.to_roman}" if diff >= 0
  10. end
  11. end
  12. end
  13.  
  14. describe "Roman numerals" do
  15. it "transforms 1 to I" do
  16. 1.to_roman.should == "I"
  17. end
  18.  
  19. it "transforms 2 to II" do
  20. 2.to_roman.should == "II"
  21. end
  22.  
  23. it "transforms 3 to III" do
  24. 3.to_roman.should == "III"
  25. end
  26.  
  27. it "transforms 4 to IV" do
  28. 4.to_roman.should == "IV"
  29. end
  30.  
  31. it "transforms 5 to V" do
  32. 5.to_roman.should == "V"
  33. end
  34.  
  35. it "transforms 6 to VI" do
  36. 6.to_roman.should == "VI"
  37. end
  38.  
  39. it "transforms 7 to VII" do
  40. 7.to_roman.should == "VII"
  41. end
  42.  
  43. it "transforms 8 to VIII" do
  44. 8.to_roman.should == "VIII"
  45. end
  46.  
  47. it "transforms 9 to IX" do
  48. 9.to_roman.should == "IX"
  49. end
  50.  
  51. it "transforms 10 to X" do
  52. 10.to_roman.should == "X"
  53. end
  54.  
  55. it "transforms 11 to XI" do
  56. 11.to_roman.should == "XI"
  57. end
  58.  
  59. it "transforms 12 to XII" do
  60. 12.to_roman.should == "XII"
  61. end
  62.  
  63. it "transforms 14 to XIV" do
  64. 14.to_roman.should == "XIV"
  65. end
  66.  
  67. it "transforms 15 to XV" do
  68. 15.to_roman.should == "XV"
  69. end
  70.  
  71. it "transforms 19 to XIX" do
  72. 19.to_roman.should == "XIX"
  73. end
  74.  
  75. it "transforms 39 to XXXIX" do
  76. 39.to_roman.should == "XXXIX"
  77. end
  78.  
  79. it "transforms 40 to XL" do
  80. 40.to_roman.should == "XL"
  81. end
  82.  
  83. it "transforms 41 to XLI" do
  84. 41.to_roman.should == "XLI"
  85. end
  86.  
  87. it "transforms 50 to L" do
  88. 50.to_roman.should == "L"
  89. end
  90.  
  91. it "transforms 89 to LXXXIX" do
  92. 89.to_roman.should == "LXXXIX"
  93. end
  94.  
  95. it "transforms 90 to XC" do
  96. 90.to_roman.should == "XC"
  97. end
  98.  
  99. it "transforms 99 to XCIX" do
  100. 99.to_roman.should == "XCIX"
  101. end
  102.  
  103. it "transforms 100 to C" do
  104. 100.to_roman.should == "C"
  105. end
  106.  
  107. it "transforms 399 to CCCXCIX" do
  108. 399.to_roman.should == "CCCXCIX"
  109. end
  110.  
  111. it "transforms 400 to CD" do
  112. 400.to_roman.should == "CD"
  113. end
  114.  
  115. it "transforms 500 to D" do
  116. 500.to_roman.should == "D"
  117. end
  118.  
  119. it "transforms 899 to DCCCXCIX" do
  120. 899.to_roman.should == "DCCCXCIX"
  121. end
  122.  
  123. it "transforms 900 to CM" do
  124. 900.to_roman.should == "CM"
  125. end
  126.  
  127. it "transforms 1000 to M" do
  128. 1000.to_roman.should == "M"
  129. end
  130. end
Add Comment
Please, Sign In to add comment