2009年07月05日

[パズル]多角形の完全グラフ

  
今回の問題は、前回の「[パズル](n*2+1)多角形の一筆書き」の続きです。

今度は、多角形の頂点の数が偶数のときでも、完全グラフが描けるようにするプログラムです。
でも、偶数のときは一筆書きはできないので、できるだけ、ペンの移動が少なくなうようにというもが問題なのですが、ペンの移動量については無視し、とりあえず、完全グラフが描かれるようにしました。
ただし、奇数のときには、一筆書きになるようになっています。

頂点の数が奇数か偶数かで処理を分岐させないで、これをやれるようにしています(SearchPathメソッド)。
でもちょっとややこしい再帰処理になってしまいました。
PerfectGraphクラスのほうは、LINQ使ってそれぞれのメソッドを簡潔に書けたと思います。

前回同様、WPFで、DoubleAnimationを使ってアニメーションさせています。この部分は、前回のコードと変わっていません。(多分)

PerfectGraph1PerfectGraph2

XAMLとC#のコードを張り付ければ、動くと思うので、興味ある方は動かしてみてください。

なお、今年初めから『ナノピコ教室・プログラミング問題集』(駒木悠二+有澤誠 編 共立出版株式会社)に掲載されている問題を解き、ここに掲載してきましたが、興味ある問題は、ほぼやり終えたので、いったん終了したいと思います。
頭の体操になったし、LINQの勉強にもなったし、再帰処理の勉強になったし、最後は、WPFにも挑戦できたしで、なかなか楽しかったですね。
『続・ナノピコ教室』も手元にあるので、こちらもいつか挑戦したいと思います。




※当記事に掲載したコードは、『ナノピコ教室・プログラミング問題集』(駒木悠二+有澤誠 編 共立出版株式会社)に掲載されている問題を一部変更し、GushwellがC#で解いたものです。


 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/51851204
この記事へのトラックバック
webブラウザ上で実行可能なように構築してみました。
webブラウザで実行【pandoraboxs】at 2009年07月06日 16:05