2012年03月03日

ナイト(騎士)巡回問題

   Clip to Evernote   このエントリーをはてなブックマークに追加      
ナイト巡回問題とは、チェスのナイトを、チェス盤の上を動かし、すべてのマスを通り、
最初の場所に戻ってくる経路を求めるというものです。

Gushwell's C# Programming Pageに掲載しました。
ナイト(騎士)巡回問題
C#+ Silverlightで解いています。

KnightTour

  

Posted by gushwell at 22:30Comments(0)TrackBack(0)

2012年02月15日

素因数分解小町

   Clip to Evernote   このエントリーをはてなブックマークに追加      
WebサイトGushwell's C# Programming page に、「素因数分解した結果が小町になる数を求める」を掲載しました。

これは、ある整数 N を素因数分解したときに、因数が1-9をひとつずつ使っている Nを求める、
というものです。いくつかの制約を加えて、C#で解いています。

世の中に小町数マニアのような人がいるのかどうかわかりませんが、小町数に関するこの手の
数学パズル問題はいろいろあります。
このGushwell"s C# Programing Page のプログラム小品集でもこれまでに、この問題も含めて
7つ取り上げています。
こんな面白い小町数問題があるよ、という方がいれば、是非お教えください。

  
Posted by gushwell at 21:14Comments(0)TrackBack(1)

2011年11月13日

パズル Magic Star をC#で解く

   Clip to Evernote   このエントリーをはてなブックマークに追加      
WebSite に、
パズル Magic Star を解く
の記事を新たに追加しました。

MagicStar とは、下の図の12 個ある○に 1 から 12 までの数字をひとつずつ入れていき、
直線上の4個の数字の合計が、すべて 26 になるように、数字を配置するというパズルです。

MagicStar01


これを C# で解いています。
Silverlight で作成しているので、実際に動かして答えを見ることができます。
  
Posted by gushwell at 22:26Comments(0)TrackBack(0)

2011年09月13日

コッホ曲線をSilverlightで作成

   Clip to Evernote   このエントリーをはてなブックマークに追加      
コッホ曲線を描くプログラムをSilverlight で作成しました。
コッホ曲線とは、フラクタル図形の一種で、線分を3等分し、分割した真ん中の線分を底辺とする
正三角形を描く(ただし底辺は消す)ことを無限に繰り返すことによって得られる図形です。


24


実際に動くプログラムと、そのソースコードは、Gushwell's C# Programming Page - コッホ曲線 をご覧ください。


ある直線(線分)から、次の点(正三角形の頂点)を求めるロジックが意外と面倒でした。
角度の変換とか、2点間の長さを求めるとか、Sin, Cos関数を使うとかは 普段のプログラムではやっていないので...

  
Posted by gushwell at 22:49Comments(0)TrackBack(0)

2011年08月22日

パズル:コイン150

   Clip to Evernote   このエントリーをはてなブックマークに追加      
久しぶりに、Gushwell's C# Programming Pageのプログラム小品集のページに、「コイン150」 というプログラムを追加しました。
Silverlightアプリとして作成しています。

問題は以下の通り。
縦6×横6の升目の中に、100円玉6個、50円玉6個を入れてください。
そのとき、縦 6列、横6列、対角線2列の合計14列の、どこも合計が150円になるようにしてく ださい。

解は一つではなく、たくさんあります。その中のいくつかを求めるだけならば、
プログラムを使わなくても、手動で解けるので、興味ある方は自力で解いてみてください。

「コイン150」という名前は、僕が勝手につけたものです。
  
Posted by gushwell at 21:08Comments(0)TrackBack(0)

2011年07月18日

部分和問題を動的計画法で解く

   Clip to Evernote   このエントリーをはてなブックマークに追加      
部分和問題とは、
「与えられた n 個の整数(集合A)と 整数 X があった時に、集合Aから任意の数の整数を選び、
その数の和(部分和)が、X に等しくなるような、部分集合を求める」 というものです。

たとえば、 [3,7,8,12,13,18] の部分和が 27 になる部分集合は、[7,8,12] となります。

このような問題を解くには、バックトラックでも解くことは可能ですが、要素の数が多くなると
組合せの数が増えすぎて、対応できなくなることもあり得ます。
このような時に利用するのが、動的計画法です。

僕のWebサイト「Gushwell's C# Programming Page」に、この部分和問題を解くプログラムコードを掲載しました。

興味のある方はどうぞ。

  
Posted by gushwell at 20:30Comments(0)TrackBack(0)

2011年05月29日

交通流のモデル (ASEPモデル) のプログラム

   Clip to Evernote   このエントリーをはてなブックマークに追加      
Webサイト「Gushwell's C# Programming Page」の「C#プログラム小品集」に、「交通流のモデル (ASEPモデル)」のプログラムを掲載しました。

一本道を多くの人が一列で歩く場合のシミュレーションをするというものです。
Silverlightで作成しています。
開始ボタンを押せば、プログラムが開始します。



ソースコードも掲載しています。   
Posted by gushwell at 20:45Comments(0)TrackBack(0)

2011年03月31日

N寄生数

   Clip to Evernote   このエントリーをはてなブックマークに追加      
Webサイト Gushwell's C# Programming Pageに『N寄生数』の記事を掲載しました。
C#のソースコードも載せています。

N寄生数とは、

ある整数をA 、Aの一桁目の数値を N としたときに、 A を N 倍すると、右へ一桁分ローテートシフトし、
Nが最上位桁に移る数 のなかで最小の数を言います。 ただし、2<=N<=9 とします。

例えば、N=4 の時は、102564 となります。
102564 * 4 = 410256
となり、右にローテートシフトします

興味のある方は、N=6の時の値を求めてみてください。


  
Posted by gushwell at 21:26Comments(0)TrackBack(0)

2011年02月27日

カプレカ数

   Clip to Evernote   このエントリーをはてなブックマークに追加      
Gushwell's C# Programming Pageの「C#プログラム小品集」に、「カプレカ数」を求めるプログラムを掲載しました。

カプレカ数とは、

2乗した値を前の部分と後ろの部分に分けて、その和を取ったとき、元の値に等しくなる数

のことです。

  
Posted by gushwell at 21:25Comments(6)TrackBack(1)

2010年11月03日

リングバッファー

   Clip to Evernote   このエントリーをはてなブックマークに追加      
簡易tailコマンド」をGushwell's C# Programming Pageの「C#プログラム小品集」に掲載しました。

リングバッファークラスを作成し、それを使うことで、tailコマンドを実装しています。
このtailコマンドで使うことだけを考えて書いたRingBufferクラスなので、
突っ込みどころがいろいろとあるかと思いますが、興味のある方は、RingBufferの一つの実装例としてどうぞ。   
Posted by gushwell at 22:04Comments(0)TrackBack(0)

2010年07月25日

ナイト(騎士)の最適配置問題

   Clip to Evernote   このエントリーをはてなブックマークに追加      
チェスのナイト(騎士)を以下の規則に従って配置するパズルです。

1.すべての空きがどれかのナイトの効き筋になっていること。
  複数のナイトから効いていてもかまわない。
2. ナイト同士は互いに効き筋にはない。
3. なるべく少ない数のナイトで配置する。


「プログラミング小品集」に掲載する中では、久しぶりに長めのプログラムでした。
そして実行時間も...
この手のパズルは解を求めるのに時間がかかるのは仕方がないとは思うけど、もう少し速くしたかったなー。


求まった解を見てみると、対称性をもったきれいな配置だなーって思います。

ところで、デバッグ中に、chromeで動かしてみたら、ブラウザがエラーを表示してしまいました。
どうも、長時間 Silverlightからの応答がないのが理由のようでした。
そのため、Backgroundworkerを使い、応答なしを回避しました。IEだと大丈夫なのにね。

ソースコードはこちらに掲載しています。   
Posted by gushwell at 22:39Comments(0)TrackBack(0)

2010年06月21日

ラングトンのアリ

   Clip to Evernote   このエントリーをはてなブックマークに追加      

「ラングトンのアリ」のプログラムは、多くのサイトで動くものが公開されていますが、
Silverlightで公開している方は、いないようなので、昔作ったものを Silverlightに移植してみました。

Silverlightで別スレッドから、BeginInvokeを呼び出し、UIスレッドで描画するサンプルとしてどうぞ。

ソースコードはこちらに掲載しています。

ランダムに動いているアリが、突然規則的に直線の道を作り出すのって不思議ですね。



  
Posted by gushwell at 23:12Comments(0)TrackBack(0)

2010年02月21日

番兵というテクニック

   Clip to Evernote   このエントリーをはてなブックマークに追加      
昨日、プログラム小品集に「最大面積の領域を求める」プログラムを載せましたが、 そこで、プログラミングテクニックの一つである番兵を使っています。
というか、以前このブログでも書いた、共通クラスであるBoardクラスで、 実際のボードの周りに番兵用のデータを置いています。
これのおかげで、


と書かなくてはいけないところで、


と書くことができます。
ちょっと違いが分かりにくいですが、Rangeメソッドの第2引数が違っています。
番兵が無いと、配列の範囲を超えないようにインデックスをインクリメント していく必要があります。
しかし、番兵があるおかげで、インデックスの範囲オーバーを気にせずに、 「黒石が続くあいだだけ繰り返す」という処理を書くことができます。

最近「番兵」という言葉を聞くこ/見ることがほとんどないので、ここにアップします。  
Posted by gushwell at 23:53Comments(0)TrackBack(1)