challenge 整数の漢数字表記

キーボードから正の整数を入力すると、それを漢数字で表示するプログラムを作ってください☆ 例えば「1732050807568877」なら「千七百三十二兆 五百八億 七百五十六万 八千八百七十七」といった感じです☆ 「一七三二兆 〇五〇八億 〇七五六万 八八七七」ではダメですよ^^;

このお題は匿名での投稿です。 与えられる整数の範囲は一京未満(10000000000000000未満)としたいと思います。 ご投稿ありがとうございます。

2年前のLL Day&Nightの「キミならどう書く」で、 これ専用のCPANモジュールが作られていたような記憶があるので 勝手にPerlからの挑戦状とみなしておきます(笑)

Posted feedbacks - なでしこ

なでしこで素直に。単位を定義すればもっと上の桁まで扱えるはず
 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
「漢数字に変換したい整数を入力してください」で尋ねる
それを漢数字変換して言う
おわり

●漢数字変換(nを)
  outとは文字列
  tmpとは文字列
  漢数字とは配列=区切る("一,二,三,四,五,六,七,八,九",",")
  単位Aとは配列=区切る(",十,百,千",",")
  単位Bとは配列=区切る(",万,億,兆",",")
  
  (nを4で数値分割して配列逆順)を反復
    (対象を文字列分解して配列逆順)を反復
      もし(対象=0)ならば、続ける
      もし(対象=1&&回数<>1)ならば
        tmp=単位A[回数-1]&tmp
      違えば
        tmp=漢数字[対象-1]&単位A[回数-1]&tmp
    out=tmp&単位B[回数-1]&out
    tmp=""
  outで戻る

●数値分割(mをnで)
  tとは配列
  (バイト数(m)<>0)の間
    tの0にRIGHT(m,4)を配列挿入
    mから4バイト右端削除
  tで戻る

10000とかなるとおかしかったので修正orz 文字列で与えると大きな桁が扱えます

 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
"1732050807568877"を漢数字変換
表示

●漢数字変換(nを)
  outとは文字列
  tmpとは文字列
  flagとは整数=0
  漢数字とは配列=区切る("一,二,三,四,五,六,七,八,九",",")
  単位Aとは配列=区切る(",十,百,千",",")
  単位Bとは配列=区切る(",万,億,兆,京,垓,杼,穣,溝,澗,"&
  "正,載,極,恒河沙,阿僧祇,那由他,不可思議,無量大数",",")
  
  (nを4で数値分割して配列逆順)を反復
    (対象を文字列分解して配列逆順)を反復
      もし(対象=0)ならば、続ける
      もし(対象=1&&回数<>1)ならば
          tmp=単位A[回数-1]&tmp
      違えば
          tmp=漢数字[対象-1]&単位A[回数-1]&tmp
      flag=1
    もし(flag=1)ならば
        out=tmp&単位B[回数-1]&out
        flag=0
    tmp=""
  outで戻る

●数値分割(mをnで)
  tとは配列
  (バイト数(m)<>0)の間
    tの0にRIGHT(m,4)を配列挿入
    mから4バイト右端削除
  tで戻る

Index

Feed

Other

Link

Pathtraq

loading...