複利計算

ちょうど今 RubyKaigi2008 をやっていますが、その中で出された anarchy golf より Compound interest を取り上げてみます。 ただし、ゴルフはやりません。

ゴルフネタとしてあまり見かけたことはないような気がしますが、いわゆる複利計算と呼ばれているものです。答えは切り捨てで求めていくということなので、以下のように awk で記述することができます。

#! /usr/bin/gawk -f
# compound_interest.awk
# http://tinyurl.com/5z5w88

{
    split($0, param, /:/);
    ans = param[2];
    for (i = 0; i < param[1]; i++) {
        print ans;
        ans = int(ans * (100 + param[3]) / 100);
    }
    exit 0;
}

実行してみます。

$ echo '20:100:5' | gawk -f compound_interest.awk
100
105
110
115
120
126
132
138
144
151
158
165
173
181
190
199
208
218
228
239