整数の漢数字表記
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で戻る
|


にしお
#3394()
Rating0/0=0.00
このお題は匿名での投稿です。 与えられる整数の範囲は一京未満(10000000000000000未満)としたいと思います。 ご投稿ありがとうございます。
2年前のLL Day&Nightの「キミならどう書く」で、 これ専用のCPANモジュールが作られていたような記憶があるので 勝手にPerlからの挑戦状とみなしておきます(笑)
[ reply ]