2011年11月5日土曜日

Excel列名変換問題


このエントリーをはてなブックマークに追加


Excel列名変換問題で第2回社内プログラミングコンテストを開催してみた(前編)


とりあえず書いてみたら、print reverse $str とかやってしまった。(リストの順番を逆順にするので、この場合なんら変化なし)
問2が難しいのは、問1の成功体験が足かせになるところか。問1が基数変換で解けるものだから、そのまま問2にいくとはまる。例えばZ(=26)の次のAA(27)で、2桁目のAが1で、一桁目のAが0になる。


問1の場合、僕は2位の人と同じように、ordを使用してましたが、
1位の人みたいにループごとに現在の累積値に26をかけて桁をひとつ上げていくのがスマートでした。


ただ2点、Perlらしくないなーと思うのが、



  • ハッシュを手書きで登録している

    • ハッシュはハッシュスライスで、 @table{'A'..'Z'} = (1..26); とすべき。



  • C言語風のループ


好みかもしれませんが、無駄に長いので、、、。
あとC言語風ループなら $i < ($#input+1) じゃなくて $i < scalar @input か$i <= $#inputかなー。



for (my $i=0; $i < @input; $i++)

for my $i (0..$#input)




ソースは書いてみたけど、mooseの練習に書き直してみようと思う。仕事でよく使うようになってきたので。





0 件のコメント:

コメントを投稿