トップ «前の日記(2010-12-09) 最新 次の日記(2010-12-11)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2010-12-10

_ 漢数字からアラビア数字(続)

ebanさんから教わってゴルフ場を見たけど、あまり役にはたたなくて残念。

ゴルフなのだからある意味当然なのだが、1.8の動作と文字コード(utf-8)に依存し過ぎている。

kskさんのは、やたらと短くて(なんと92バイト)読みやすそうだから見てみたが1文字文字列.hashがその文字の値になるという1.8の振る舞いを利用しているからちょっとだめだ。

(ゴルフ以外だとsumimさんがオーソドックスなやつを出してくれている。)

でも、ゴルフを見ていて、文字列→文字列と馬鹿正直にやるよりも、文字列→整数→文字列とするほうが楽そうだというのはわかった。

で、こんな感じになった。

KINDEX = "十一二三四五六七八九"
ARABIC = [ 10, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
 
def kj_to_arabic(s)
  n = 0
  s.each_char do |c|
    if n < 10 && n > 0
      n *= 10 
    else
      n += ARABIC[KINDEX.index(c)]
    end
  end
  n.to_s
end

2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|

ジェズイットを見習え