2011-11-15

Number<->ExcelColString


面白そうなものを見つけたので。
http://d.hatena.ne.jp/JunichiIto/20111102/1320253815

@Python
f1_1=lambda string:sum(26**i*(ord(j)-64) for i,j in enumerate(string[::-1]))
f1_2=lambda string:reduce(lambda x,y:26*x+y,map(lambda z:ord(z)-64,string))
f2=lambda num:chr(num+64) if num<=26 else "".join([f2(i+j) for i,j in enumerate(divmod(num-1,26))])

lambda式でも代入しておけば再帰できるのを初めて知った。
f2::num->stringは見事に@の罠にはまったが、中々良い逃げ道を見つけた。