Guest User

Untitled

a guest
Jun 20th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.72 KB | None | 0 0
  1. #!/usr/bin/env ruby
  2.  
  3. NTW = {
  4. 1 => "one",
  5. 2 => "two",
  6. 3 => "three",
  7. 4 => "four",
  8. 5 => "five",
  9. 6 => "six",
  10. 7 => "seven",
  11. 8 => "eight",
  12. 9 => "nine",
  13. 10 => "ten",
  14. 100 => "hundred",
  15. 1000 => "thousand",
  16. 1000000 => "million",
  17. 1000000000 => "billion",
  18. 1000000000000 => "trillion"
  19. }
  20.  
  21. class IntegerToBetterEnglish
  22. class << self
  23. def convert(number)
  24. return "zero" if number == 0
  25. word_representation_accumulator = []
  26. number_digits_reversed = number.to_s.reverse
  27. digit_count = 0
  28. number_digits_reversed.chars.each_with_index do |digit, index|
  29. digit_as_number = Integer(digit)
  30. skip_zero(digit_as_number) do
  31. multiplier = 10**digit_count
  32. word_representation = "#{NTW[digit_as_number]}"
  33. word_representation += " #{NTW[multiplier]}" if multiplier > 1 && NTW[multiplier]
  34. word_representation_accumulator << word_representation
  35. end
  36. digit_count += 1
  37. end
  38. word_representation_accumulator.reverse.join(" ")
  39. end
  40.  
  41. def skip_zero(digit)
  42. if digit != 0
  43. yield
  44. end
  45. end
  46. end
  47. end
  48.  
  49. if __FILE__ == $0
  50. puts IntegerToBetterEnglish.convert(0)
  51. puts IntegerToBetterEnglish.convert(1)
  52. puts IntegerToBetterEnglish.convert(3)
  53. puts IntegerToBetterEnglish.convert(5)
  54. puts IntegerToBetterEnglish.convert(11)
  55. puts IntegerToBetterEnglish.convert(15)
  56. puts IntegerToBetterEnglish.convert(25)
  57. puts IntegerToBetterEnglish.convert(71)
  58. puts IntegerToBetterEnglish.convert(40)
  59. puts IntegerToBetterEnglish.convert(100)
  60. puts IntegerToBetterEnglish.convert(101)
  61. puts IntegerToBetterEnglish.convert(112)
  62. puts IntegerToBetterEnglish.convert(123)
  63. puts IntegerToBetterEnglish.convert(457)
  64. puts IntegerToBetterEnglish.convert(999)
  65. puts IntegerToBetterEnglish.convert(1000)
  66. puts IntegerToBetterEnglish.convert(1001)
  67. puts IntegerToBetterEnglish.convert(1010)
  68. puts IntegerToBetterEnglish.convert(1011)
  69. puts IntegerToBetterEnglish.convert(2117)
  70. puts IntegerToBetterEnglish.convert(3001)
  71. puts IntegerToBetterEnglish.convert(13101)
  72. puts IntegerToBetterEnglish.convert(14001)
  73. puts IntegerToBetterEnglish.convert(16000)
  74. puts IntegerToBetterEnglish.convert(25119)
  75. puts IntegerToBetterEnglish.convert(65009)
  76. puts IntegerToBetterEnglish.convert(315119)
  77. puts IntegerToBetterEnglish.convert(1000001)
  78. puts IntegerToBetterEnglish.convert(1315119)
  79. puts IntegerToBetterEnglish.convert(11315119)
  80. puts IntegerToBetterEnglish.convert(74315119)
  81. puts IntegerToBetterEnglish.convert(174315119)
  82. puts IntegerToBetterEnglish.convert(1174315119)
  83. puts IntegerToBetterEnglish.convert(15174315119)
  84. puts IntegerToBetterEnglish.convert(35174315119)
  85. puts IntegerToBetterEnglish.convert(935174315119)
  86. puts IntegerToBetterEnglish.convert(2935174315119)
  87. end
Add Comment
Please, Sign In to add comment