C# プログラム小品集
練習、学習、腕試しのために作ったプログラムのソースコードを掲載しています。プログラミングの学習、アルゴリズムの学習にお役に立てれば幸いです。
さらに、掲載するプログラムの数を増やしてゆく予定です。
※ Silverlightの記述があるものは、画面上で動作を確認することができます。
さらに、掲載するプログラムの数を増やしてゆく予定です。
※ Silverlightの記述があるものは、画面上で動作を確認することができます。
■初等数学関連■
■組み合わせ■
■図形■
■シミュレーション■
■セルオートマトン■
■パズル関連■
■ボードゲーム(の一部)■
■その他■
| 階乗の計算 | 再帰を使ったコード |
| 素数の計算 | エラトステネスのふるいで素数を求める |
| メビウス関数 | 素因数分解しないで求めています |
| フィボナッチ数列 | 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) |
| エマープかつ上昇数 | Emirpでかつ上昇数である自然数を求める(Silverlight) |
| 二乗して回文数となる非回文数 | 1〜100000の整数で、二乗して回文数となる非回文数を求める(Silverlight) |
■組み合わせ■
| 順列を求める | 与えられたすべての要素を使った順列を求めています |
| 順列を求める(2) | n個の異なる要素の中から m個を選ぶ順列 (Silverlight) |
| 組合せ | n個の異なる要素の中から m個を選ぶ組合せ (Silverlight) |
| 攪乱順列 (完全順列) | i番目の要素が i でない順列を求める (Silverlight) |
■図形■
| 凸多角形の完全グラフ | 凸多角形の完全グラフの一筆書き (Silverlight) |
| 凸多角形の外周を引く | 複数の点から凸多角形の外周を引く(Silverlight) |
| ヒルベルト曲線 | フラクタル図形の再帰処理で描く (Silverlight) |
| ドラゴン曲線 | フラクタル図形の再帰処理で描く-第2弾。(Silverlight) |
| コッホ曲線 | フラクタル図形の再帰処理で描く-第3弾。(Silverlight) |
| リサジュー曲線 | 互いに直交する二つの単振動を合成して得られる曲線を描く (Silverlight) |
■シミュレーション■
| 2次元ランダムウォーク | 2次元ランダムウォークの動きを可視化 (Silverlight) |
| 1次元ランダムウォーク | ±5%で遷移する1次元ランダムウォーク(Silverlight) |
| 交通流のモデル (ASEPモデル) | 100個のスレッドを起動して交通流をシミュレート (Silverlight) |
■セルオートマトン■
| ルール30 | ルール30と呼ばれる1次元セルオートマトン (Silverlight) |
| シェルピンスキーのギャスケット | ルール90と呼ばれる1次元セルオートマトン (Silverlight) |
| ラングトンのアリ | ランダムな動きが一転し、直線へ変わる不思議 (Silverlight) |
■パズル関連■
| MagicStarを解く | MagicStar(星陣)を深さ優先探索で解く(Silverlight) |
| 8クィーンパズル | N-Queenに対応しています。 |
| 碁石拾い | 日本古来の碁石を使ったパズルを再帰で解く (Silverlight) |
| ナイト(騎士)巡回問題 | バックトラックでナイト巡回問題を解く |
| ナイト(騎士)の最適配置 | チェス盤に騎士を配置し効き筋で埋めます (Silverlight) |
| ステインハウスの三角形 | 整数のビットパターンで組合せを求める (Silverlight) |
| Triangle15パズル | 順列が問題を解くカギ (Silverlight) |
| コイン150 | 100円玉と50円玉をつかったパズルを深さ優先探索で解く (Silverlight) |
| 覆銭問題 | Eventを発行し途中経過を知らせる (Silverlight) |
| 割り切れる4桁の逆転数 | 逆転した数で割り切れる4桁の数を得る |
| 巡回数 | n倍すると巡回する自然数を求める (Silverlight) |
| 小町算 | 1-9の数字と+−で100にする:LINQで組合せを求める |
| 2乗した値が1-9で構成 | 2乗した値と求めた値が1-9で構成される3桁の数を得る |
| 小町数となる単位分数 | 約分して1/nとなる数の分母と分子が小町数 (Silverlight) |
| 3つの式が等しくなる小町数 | ○○-○=○○/○=○+○*○が小町数 (Silverlight) |
| 素因数分解小町 | 素因数分解した結果の値が1-9で構成される数を求める (Silverlight) |
| 小町リング | 円の中の数の合計が等しくる小町数 (Silverlight) |
| センチュリーパズル | K + N / D = 100 のK,N,Dが小町数 (Silverlight) |
| リングナンバーの最大公約数 | 16個の数字の最大公約数を求める(Silverlight) |
| 二乗して回文となる非回文数 | 例えば264は、264*264=69696 で結果が回文となる (Silverlight) |
■ボードゲーム(の一部)■
| 梅花碁の勝ち判定 | 梅花碁の勝ちパターンを見つける (Silverlight) |
| 8クィーンゲーム | 8Queenパズルのゲーム版. 単純な思考ルーチン (Silverlight) |
■その他■
| 部分和問題を解く | 部分和問題(Subset Sum Problem)を動的計画法で解く (Silverlight) |
| 逆ポーランド記法の計算 | 逆ポーランド記法をスタックを用い計算する (Silverlight) |
| 逆ポーランド記法への変換 | 数式を逆ポーランド記法に変換し計算をする(Silverlight) |
| マージソート | マージソートのサンプルコード。ジェネリックス利用で型に非依存。 |
| FizzBuzz問題 | FizzBuzzの一般化を試みています。 |
| 簡易catコマンド | IEnumerable<T>の実装サンプル |
| 簡易tailコマンド | リングバッファーの実装サンプル |
| 2次元配列の回転 | 基本機能の組み合わせで多機能化を実現 (Silverlight) |
| 最大面積の領域を求める | マウスのドラッグに対応する(Silverlight) |
Silverlightアプリは、無償で利用できる 「Visual Web Developer Express」 + Microsoft Silverlight Tools で作成しています。