いまだに現金払い?
さて、今回もawkでパズルを解いてみることにする。
10円玉、50円玉、100円玉、500円玉の組み合わせに両替できる機械がある。 最大で15枚になるように両替します。 1000円札を入れたときに出てくる硬貨の組み合わせは何通りあるかを求めよ。 なお、硬貨の順番は区別しないものとします。
素直に解いたものがコチラ
#!/usr/bin/awk -f BEGIN{ coin500 = 500; coin100 = 100; coin50 = 50; coin10 = 10; for(i = 0; i <= 2; i++){ # 500円は最大2枚 for(j = 0; j <= 10; j++){ # 100円は最大10枚 for(k = 0; k <= 15; k++){ # 50円は最大20枚 for(l = 0; l <= 15; l++){ # 10円は最大100枚 if(i + j + k + l <= 15 &&\ coin500 * i + coin100 * j + coin50 * k + coin10 * l == 1000){ count++; } } } } } print count; }
実際に答えを求めてみると
# awk -f q05.awk 20
これは比較的簡単かも。