Under the Bridge

a Picture of the Late Him

MTのテンプレートタグでFizzBuzz。

2008年1月12日 01:40 | Writer: yoshi | 記事本文 | コメント(0) | トラックバック(0)

Junnama Online (Mirror)MTのテンプレートタグでFizzBuzz。


どうしてプログラマに・・・プログラムが書けないのか?

1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。

今時間あるし、やってみるか。ただしMT4.1ベータで行う。

コード


<mt:for var="x" from="1" to="100">
<MTIf name="x"  op="%" value="15" eq="0">
    <p>fizzbuzz</p>
<MTElse>
    <MTIf name="x" op="%" value="3" eq="0">
        <p>fizz</p>
    <MTElse name="x"  op="%" value="5" eq="0">
        <p>buzz</p>
    <MTElse>
        <p><MTGetVar name="x"></p>
    </MTIf>
</MTIf>
</mt:for>

メカニズム

MTForで100回のループを作成。

その中ではまず3と5の最小公倍数である15で割り切れるかどうかを判断する。これに引っかかった条件はFizzBuzzである。それ以外はすべて「3と5で同時に割り切れる」をに満たしていない。ここが重要で、冗長なIfネストを打ち消すためのひと工夫である。

前回の条件を満たさなかった場合には、3で割り切れる(Fizzと出力)、あるいは5で割り切れる(Buzzと出力)、というIf文を横並びにすればよい。それに全部引っかからなかったのは3の倍数でも5の倍数でもないのでそのまま出力する。

なお、Forループ用いているので、上記サンプルコードはMT4.1以降でないと動作しない。

なお、正しいという保障はない。今よっぱらってるし。

トラックバック(0)

このブログ記事を参照しているブログ一覧: MTのテンプレートタグでFizzBuzz。

このブログ記事に対するトラックバックURL:

コメントする






Categories
Entries
Feed
スポンサードリンク

parts

フィードメーター - Under the Bridge

あわせて読みたい

なかのひと

2008年4月5日開催、MT4LP5

2008 yoshi(apstar)