パスワードを忘れた? アカウント作成
449712 journal

bravoの日記: 今日のらくださん 13

日記 by bravo

Excelの列ってAとかAAとかあるんですが、それを数値として処理できるようにするための関数でつ。

追記: k3cさんが直してくれますた。この手のアルゴリズムはまだ磨きがたりないな_| ̄|○


sub rowtonum($) {
        my ($row) = @_;
        my $base = ord("a");
        my $interval = ord("z") - $base;
        my $rownum = 0;
        my $dig = 0;
        foreach my $c (reverse(split(//, $row))) {
                $rownum += (ord(lc($c)) - $base + 1) * ($dig * $interval + 1);
                $dig++;
        }
        $rownum--;
        return $rownum;
}

へびだとこうなる。計算がめんどくさいからあんま見た目かわらんかも。

def rowtonum(row):
        base = ord('a')
        interval = ord('z') - base;
        rownum = 0
        dig = 0
        row = list(row)
        row.reverse()
        for c in row:
                rownum += (ord(c.lower()) - base + 1) * (dig * interval + 1)
                dig += 1
        rownum -= 1
        return rownum

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

弘法筆を選ばず、アレゲはキーボードを選ぶ -- アレゲ研究家

読み込み中...