Comment detail

整数の漢数字表記 (Nested Flatten)

This comment is reply for 2037 rubikitch: 小学校時代、図書室に数の本があって無量大...(整数の漢数字表記). Go to thread root.

るびきちさんのより短くを目標に考えてみましたが、一行かないませんでした。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/usr/local/bin/ruby

def jsen(ary)
  k1 = ["", "一", "二" ,"三", "四", "五", "六", "七", "八", "九"]
  k10 = ['', "十","百", "千"]
  str, s = "", ary.size - 1
  ary.each{|num|
    keta = s
    case num
    when 0
      keta = nil
    when 1
      num = nil unless keta == 0
    end
    str << k1[num].to_s unless num.nil?
    str << k10[keta].to_s unless keta.nil?
    s -= 1
  }
  return str
end

def jnum(n)
  return "零" if n == 0
  str, h, ary = "", Hash.new, Array.new
  k = ["", "万", "億", "兆", "京"]
  key, value = n.to_s.split(//).size - 1, n.to_s.split(//)
  return nil if key > 19 # max "京"
  value.each{|i|
    ary.push i.to_i
    if key.divmod(4)[1] == 0
      h[key.divmod(4)[0]] = ary
      ary = []
    end
    key -= 1
  }
  h.sort.reverse.each{|x, ary|
    str << jsen(ary).to_s 
    str << k[x].to_s + " " unless ary == [0, 0, 0, 0]
  }
  return str
end
#n = 1732050807568877
# 千七百三十二兆 五百八億 七百五十六万 八千八百七十七
n =  0
# => 零
n =  1
# => 一
n = 10
# => 十
n = 100
# => 百
n= 1000
# => 千
n= 10001000
# => 千万 千

print jnum(n)

Index

Feed

Other

Link

Pathtraq

loading...