2010年04月19日

C# プログラム小品集

  
Webサイト「Gushwell's C# Programming Page」と当ブログをもっと有機的に結び付けたいなーという思いで「C#プログラム小品集」のコーナーに掲載したプログラムの一部をこのブログで紹介する試みを昨年末あたりから始めています。

でも、Webサイトにプログラムを掲載するたびに、このブログで紹介するのは、ちょっといやらしいかなと思って、紹介したのは、一部のみにとどめています。 Webサイトに、掲載するプログラムの数は今後も増やしてゆく予定ですが、プログラムの数も随分と増えましたし、せっかく公開したものですので、ここらでも、そのプログラムの一覧を掲載したいと思います。

これらのプログラムは、.NET Frameworkの使い方サンプルではなく、どちらかというとアルゴリズム学習に役に立つようなコードの掲載をしています。

ただ、僕は、普通のビジネスアプリのプログラマーであって、ゲームプログラマーでもなければ、情報科学の研究者でもないので、その方面の方からみると、もっと良いやり方があるだろ、と突っ込まれるプログラムもあると思いますが、その点はご容赦を。

2011年4月30日現在
■初等数学関連■ 
階乗の計算 再帰を使ったコード
素数の計算 エラトステネスのふるいで素数を求める
メビウス関数 素因数分解しないで求めています 
フィボナッチ数列 yield return 構文を使った例
最大公約数 ユークリッドの互除法 (Silverlight)
最小公倍数 最大公約数を利用し求める (Silverlight)
素因数分解 Brute force methodによる素因数分解 (Silverlight)
完全数を求める メルセンヌ素数から完全数を導く(Silverlight)
友愛数を求める 真の約数を求めて友愛数を導く (Silverlight)
婚約数を求める   友愛数に似てます。ListBoxに結果をバインド(Silverlight)
ゴールドバッハの予想 偶数は2つの素数の和で表される? (silverlight)
三角数 三角数に関連する3つの短いコード(silverlight)
円周率を10000桁まで求める マチンの公式を使い1万桁まで求める(Silverlight)
カプレカ数 String.SubStringで文字列を分割(Silverlight)
N寄生数(Parastic Number) 筆算と同様の方法で巨大な数(N寄生数)を求める(silverlight)

■組み合わせ■
順列を求める 与えられたすべての要素を使った順列を求めています
順列を求める(2) n個の異なる要素の中から m個を選ぶ順列 (Silverlight)
組合せ n個の異なる要素の中から m個を選ぶ組合せ (Silverlight)
攪乱順列 (完全順列) i番目の要素が i でない順列を求める (Silverlight)

■図形■
完全グラフ 凸多角形の完全グラフの一筆書き (Silverlight)
凸多角形の外周を引く 複数の点から凸多角形の外周を引く(Silverlight)
ヒルベルト曲線 フラクタル図形の基本をC#で  (Silverlight)
ドラゴン曲線 フラクタル図形の第2弾。(Silverlight)

■シミュレーション■
2次元ランダムウォーク 2次元ランダムウォークの動きを可視化 (Silverlight)
1次元ランダムウォーク ±5%で遷移する1次元ランダムウォーク(Silverlight)

■セルオートマトン■
ルール30 ルール30と呼ばれる1次元セルオートマトン (Silverlight)
シェルピンスキーのギャスケット ルール90と呼ばれる1次元セルオートマトン (Silverlight)
ラングトンのアリ ランダムな動きが一転直線へ変わる不思議 (Silverlight)

■パズル関連■
8クィーンパズル N-Queenに対応しています。
碁石拾い 日本古来の碁石を使ったパズルを再帰で解く (Silverlight)
ナイト(騎士)の最適配置 チェス盤に騎士を配置し効き筋で埋めます (Silverlight)
ステインハウスの三角形  整数のビットパターンで組合せを求める (Silverlight)
Triangle15パズル 順列が問題を解くカギ (Silverlight)
覆銭問題 Eventを発行し途中経過を知らせる (Silverlight)
割り切れる4桁の逆転数 逆転した数で割り切れる4桁の数を得る
巡回数 n倍すると巡回する自然数を求める (Silverlight)
小町算  1-9の数字と+−で100にする:LINQで組合せを求める 
2乗した値が1-9で構成 2乗した値と求めた値が1-9で構成される3桁の数を得る
小町数となる単位分数 約分して1/nとなる数の分母と分子が小町数 (Silverlight)
3つの式が等しくなる小町数 ○○-○=○○/○=○+○*○が小町数 (Silverlight)
センチュリーパズル K + N / D = 100 のK,N,Dが小町数 (Silverlight)
小町リング 円の中の数の合計が等しくる小町数 (Silverlight)

■ボードゲーム(の一部)■
梅花碁の勝ち判定 梅花碁の勝ちパターンを見つける (Silverlight)
8クィーンゲーム 8Queenパズルのゲーム版. 単純な思考ルーチン (Silverlight)

■その他■
FizzBuzz問題 FizzBuzzの一般化を試みています。
簡易catコマンド IEnumerable<T>の実装サンプル
簡易tailコマンド リングバッファーの実装サンプル
2次元配列の回転 基本機能の組み合わせで多機能化を実現 (Silverlight)
最大面積の領域を求める マウスのドラッグに対応する(Silverlight)


■今後の予定

あくまでも予定ですが、以下のようなプログラムも掲載したいなーと思っています。

ニュートン法、遺伝的アルゴリズム、ビンPacking、部分和問題、コッホ曲線、ライフゲーム、騎士巡回、ハノイの塔、マジックスターパズルなどなど。

それと、パズルプログラムは、昔書いたプログラムが他にもまだいくつかありますので、Silverlight+C#に移植し掲載してゆきたいです。

ちなみに、これまでのアクセスTop5は、
  1. [パズル]小町算
  2. ヒルベルト曲線
  3. 階乗の計算
  4. 多角形の完全グラフ
  5. 2次元ランダムウォーク
で、4つがこちらのブログで紹介したものばかりで、やはり、紹介したものとそうでないものの差が出ているような気がします。


 

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

http://trackback.blogsys.jp/livedoor/gushwell/52008191