2013年11月04日

2013年09月01日

遺伝的アルゴリズムで巡回セールスマン問題を解く

   このエントリーをはてなブックマークに追加 Clip to Evernote
僕のもう一つのサイト「Gushwell's C# Programming Page」に、

遺伝的アルゴリズムで巡回セールスマン問題を解く

を掲載しました。
この手のアルゴリズムの専門家ではないので、間違っている所があるかもしれません。
気がついた点があれば、指摘していただけると嬉しいです。

  
Posted by gushwell at 17:28Comments(0)TrackBack(0)

2013年01月21日

C#でビンパッキング問題を解く

   このエントリーをはてなブックマークに追加 Clip to Evernote
Webサイト「Gushwell's C# Programming Page」にビンパッキング問題を解くC#の
プログラムを掲載しました。

ビンパッキング問題は、重さの違う荷物が複数あり、それを箱に詰め込んでいくときに、どのように
詰めていけば、最少の箱で済むかを求める問題です。
Silverlightで書いていますので、実際に動かすことができます。興味のある方はどうぞご覧になって
ください。


この記事に対して、neuecc さんからフィードバックがありました。
Count() + First() を使うのは、2回走査が走るので、LINQ的にはよろしくないというものです。
確かにその通りですね。このコードだとどんな場合でも最後まで走査することになりますが,
FirstOrDefault ならば、最大で1つまでですからね。
そのうち直しておきます。

まあ、アルゴリズムの説明としては、Count() + First()のほうがわかりやすいことはわかりやすい
のですが...

ところで、「プログラム小品集」にプログラムを追加するのは、なんと5か月ぶりということで、
ずいぶん間が空いてしまいました。
ネタはあと6,7個考えているので、今後は月1回のペースで更新できればと思っています。

それと、「プログラム小品集」に掲載してているプログラム数ももずいぶんと増えたので、
いくつかに分割しようと考えています。
少なくとも、パズル関連は、
「C#でパズルを解こう」
として独立させようと考えています。

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

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)