LoginSignup
6
6

More than 5 years have passed since last update.

もっと短く「一反田えー(1反田A)」から「千反田える(1000反田L)」までを生成する

Last updated at Posted at 2014-05-19

もっと短く書けるなーと思いまして。

// 一万未満のアラビア数字を漢数字に変換します
def arabicToKanji( int num ){
    def kanjiNum = ["", "一", "二", "三", "四", "五", "六", "七", "八", "九" ]
    def kanjiOrder = ["", "十", "百", "千"]
    def order = num.toString().size()
    num.toString().collect{
        order--
        def idx = it as Integer
        ( idx>=2 || order==0 )? kanjiNum[idx]+kanjiOrder[order] : (idx==0)? "" : kanjiOrder[order]
    }.sum()
}

def alphabets = ["えー", "びー", "しー", "でぃー", "いー", "えふ", "じー", "えいち", "あい", "じぇい", "けー", "える", "えむ", "えぬ", "おー", "ぴー", "きゅー", "あーる", "えす", "てぃー", "ゆー", "ぶい", "だぶりゅー", "えっくす", "わい", "ぜっと"]

(1..1000).each{
    println "${arabicToKanji(it)}反田${alphabets[(it-1)%alphabets.size()]}"
}

toString() で文字列にしたやつを collect() で一文字ずつ処理して sum() で結合する感じで。中身の三項演算子のネストは可読性悪いね。

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6