roman_numerals_decoding_3.sf 528 B

123456789101112131415161718192021222324
  1. #!/usr/bin/ruby
  2. func roman2arabic(digit) {
  3. digit.uc.trans([
  4. 'M': '1000+',
  5. 'CM': '900+',
  6. 'D': '500+',
  7. 'CD': '400+',
  8. 'C': '100+',
  9. 'XC': '90+',
  10. 'L': '50+',
  11. 'XL': '40+',
  12. 'X': '10+',
  13. 'IX': '9+',
  14. 'V': '5+',
  15. 'IV': '4+',
  16. 'I': '1+',
  17. ]).split('+').map{.to_i}.sum;
  18. }
  19. %w(MCMXC MMVIII MDCLXVI).each { |roman_num|
  20. say "#{roman_num}\t-> #{roman2arabic(roman_num)}";
  21. }