Hatena::Grouprubyist

てーげーRuby

2008-06-30

練習問題 文字列(後半)

| 17:13

(2) "七千百二十三"といった、漢数字による数の表現を、「7123」のような

数値に変換するメソッドkan2numを定義してください。

lock
irb(main):001:0> load "kan2num.rb"
=> true
irb(main):002:0> kan2num("七千百二十三")
=> 7123

(3) "12"といった数値による文字列を、"**********"というように、その数だけ

*」が並ぶ文字列に変換するメソッドnum2astriskを、Numericクラス(またはその

サブクラス)のオブジェクトやメソッドを使わずに定義してください。

  1 def num2astrisk(num)
  2   print_astrisk = ""
  3   keta = 1
  4   num.scan(/./).reverse.each do |e|
  5     if e == "0"
  6     elsif e == "1"
  7       astrisk = "*"
  8     elsif e == "2"
  9       astrisk = "**"
 10     elsif e == "3"
 11       astrisk = "***"
 12     elsif e == "4"
 13       astrisk = "****"
 14     elsif e == "5"
 15       astrisk = "*****"
 16     elsif e == "6"
 17       astrisk = "******"
 18     elsif e == "7"
 19       astrisk = "*******"
 20     elsif e == "8"
 21       astrisk = "********"
 22     elsif e == "9"
 23       astrisk = "*********"
 24     end
 25     print_astrisk += astrisk * keta if astrisk
 26     keta = keta*10
 27   end
 28
 29   puts print_astrisk
 30 end
irb(main):001:0> load "num2astrisk.rb"
=> true
irb(main):002:0> num2astrisk("12")
************
=> nil
irb(main):003:0> num2astrisk("100")
****************************************************************************************************
=> nil