image

  • フォト Amazonギフト券
    ※この時計の時刻は、閲覧しているパソコンのものであり、必ずしも正確な時間とは限りません

検索

最近のトラックバック

無料ブログはココログ

« ピックアップ: プログラマブルCSS「Moonfall」, マイクロソフトが翻訳サービスを開始, etc... | トップページ | ピックアップ: CodeZine:JRubyチュートリアル公開, 東京大学の教養学部のプログラミングの授業でRuby, etc... »

2007-09-11

FizzBuzz 問題を xfy/xvcd で

Buzz
http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm
 どうしてプログラマに・・・プログラムが書けないのか?
にある FizzBuzz 問題を xfy/xvcd で書いてみた。

FizzBuzz 問題とは

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

xfy で buzz.xml を開けばよい。画面一番上の数値は編集可能だ。リアルタイムに結果が更新される。

$ cat buzz.xml
<?xml version="1.0" encoding="UTF-8" ?>
<?com.xfy vocabulary-connection href="buzz.xvcd" ?>
<sample:item xmlns:sample="http://xmlns.xfy.com/sample/buzz">100</sample:item>

$ cat buzz.xvcd
<?xml version="1.0" encoding="UTF-8"?>
<xvcd:xvcd
  version="1.0"
  xmlns:xvcd="http://xmlns.xfy.com/xvcd"
  xmlns:sample="http://xmlns.xfy.com/sample/buzz"
  xmlns="http://www.w3.org/1999/xhtml">

<!--
  See - http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm
        どうしてプログラマに・・・プログラムが書けないのか?

      - http://d.hatena.ne.jp/mhrs/20070515/p1
        MORIYAMA Hiroshi's Diary - XSLTでFizz-Buzz
-->
<!--
      2007-09-11 katoy
      此処のコードだと 140 で stackoverflow になる...
      stackoverflow にならない方法は?
-->

<xvcd:vocabulary name="pyr" match="sample:item" call-template="root"/>

<xvcd:template name="root">
  <html>
    <head><title>BUZZ</title></head>
    <body>
      Input Number?:<xvcd:text-of select="./text()" filler="0"/>
      <pre>
      <xvcd:call-template name="buzz">
        <xvcd:with-param name="n" select="./text()"/>
      </xvcd:call-template>
      </pre>
    </body>
  </html>
</xvcd:template>

<!-- 再帰処理のルーチン  -->
<xvcd:template name="buzz">
  <xvcd:param name="n" />

  <xvcd:choose>
    <xvcd:when test="$n &gt; 1">
      <xvcd:call-template name="buzz">
        <xvcd:with-param name="n" select="$n - 1"/>
      </xvcd:call-template>
    </xvcd:when>
  </xvcd:choose>

  <xvcd:choose>
    <xvcd:when test="$n mod 15 = 0">
      <xvcd:value-of select="'FizzBuzz'"/>
    </xvcd:when>
    <xvcd:when test="$n mod 3 = 0">
      <xvcd:value-of select="'Fizz'"/>
    </xvcd:when>
    <xvcd:when test="$n mod 5 = 0">
      <xvcd:value-of select="'Buzz'"/>
    </xvcd:when>
    <xvcd:otherwise>
      <xvcd:value-of select="$n"/>
    </xvcd:otherwise>
  </xvcd:choose>
  <br/>
</xvcd:template>

</xvcd:xvcd>

« ピックアップ: プログラマブルCSS「Moonfall」, マイクロソフトが翻訳サービスを開始, etc... | トップページ | ピックアップ: CodeZine:JRubyチュートリアル公開, 東京大学の教養学部のプログラミングの授業でRuby, etc... »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/184434/16416832

この記事へのトラックバック一覧です: FizzBuzz 問題を xfy/xvcd で:

« ピックアップ: プログラマブルCSS「Moonfall」, マイクロソフトが翻訳サービスを開始, etc... | トップページ | ピックアップ: CodeZine:JRubyチュートリアル公開, 東京大学の教養学部のプログラミングの授業でRuby, etc... »

mokuji

2013年12月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

google

  • twitter
  • __
  • _
    Googleボットチェッカー

合わせて読む

  • 合わせて読む
    フィードメーター - katoy: cocolog あわせて読みたい

リンク