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

| コメント(0) | トラックバック(1)

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

ということで、例えばこんな感じとか。

perl -e 'for(1..100){print$_ if$_%3&&$_%5;print"Fizz"unless$_%3;print"Buzz"unless$_%5;print"\n"}'

で、これをMT4のテンプレートタグだけで出力してみようということで。意味があるのかどうかわからんが。

* 見やすさのためにインデントや改行入れてます。


<mt:setvar name="count_3" value="1">
<mt:setvar name="count_5" value="1">
<MTEntries lastn="100">
<mt:setvar name="out" value="0">
<mt:if name="count_3" eq="3">
    <mt:setvar name="count_3" value="1">
    Fizz
    <mt:setvar name="out" value="1">
<mt:else>
    <mt:if name="count_3" eq="2">
        <mt:setvar name="count_3" value="3">
    <mt:else>
        <mt:if name="count_3" eq="1">
            <mt:setvar name="count_3" value="2">
        </mt:if>
    </mt:else>
    </mt:if>
</mt:else>
</mt:if>
<mt:if name="count_5" eq="5">
    <mt:setvar name="count_5" value="1">
    Buzz
    <mt:setvar name="out" value="1">
<mt:else>
    <mt:if name="count_5" eq="4">
        <mt:setvar name="count_5" value="5">
    <mt:else>
        <mt:if name="count_5" eq="3">
            <mt:setvar name="count_5" value="4">
        <mt:else>
            <mt:if name="count_5" eq="2">
                <mt:setvar name="count_5" value="3">
            <mt:else>
                <mt:if name="count_5" eq="1">
                    <mt:setvar name="count_5" value="2">
                </mt:if>
            </mt:else>
            </mt:if>
        </mt:else>
        </mt:if>
    </mt:else>
    </mt:if>
</mt:else>
</mt:if>
<mt:if name="out" eq="0">
    <mt:getvar name="__counter__">
</mt:if>
</MTEntries>

さて問題(?)。MT4.1/MTOSだともっとスマートにプログラミングチックな書き方ができると思います。

* 流行んないかな?

追記: 4.1/MTOSで書いてみた。シンプルに書けます。

トラックバック(1)

トラックバックURL: http://junnama.alfasado.net/cgi/mt/mt-tb.cgi/129

junnamaさんが面白いことやってたので脊髄反射で反応。MT4.01が前提で。... 続きを読む

コメントする

Facebook

Twitter

このブログ記事について

このページは、Junnama Nodaが2008年1月11日 23:49に書いたブログ記事です。

ひとつ前のブログ記事は「サブカテゴリーのエントリー投稿時に親カテゴリーアーカイブを再構築する。」です。

次のブログ記事は「MT4.1/MTOSでFizzBuzz。」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 6.2.6