<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>algorithm</title><link>http://blogs.wankuma.com/episteme/category/1093.aspx</link><description>algorithm</description><managingEditor>επιστημη</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>επιστημη</dc:creator><title>blogだけでは飽き足らず</title><link>http://blogs.wankuma.com/episteme/archive/2008/08/13/152929.aspx</link><pubDate>Wed, 13 Aug 2008 22:16:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2008/08/13/152929.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/152929.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2008/08/13/152929.aspx#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/152929.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/152929.aspx</trackback:ping><description>&lt;P&gt;&lt;A id=viewpost.ascx_TitleUrl href="/episteme/archive/2008/07/06/147603.aspx"&gt;&lt;FONT color=#0000ff&gt;夏も初めのごめんなさい&lt;/FONT&gt;&lt;/A&gt; あたりから&lt;BR&gt;短期集中連載(?)してたマージ・ソートの「まとめ」をCodeZineに書きました。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://codezine.jp/a/article/aid/2886.aspx"&gt;&lt;FONT color=#0000ff&gt;マージ・ソート : 巨大データのソート法&lt;/FONT&gt;&lt;/A&gt;&amp;nbsp;ての。&lt;BR&gt;マージ・ソートのアルゴリズム解説とその実装を&lt;BR&gt;VB, C#, C++/CLI でやらかしてます。&lt;BR&gt;&lt;BR&gt;インスパイア元 → &lt;A id=viewpost.ascx_TitleUrl href="/naka/archive/2008/08/13/152858.aspx"&gt;&lt;FONT color=#0000ff&gt;すごいひとです！&lt;/FONT&gt;&lt;/A&gt; &lt;BR&gt;名著 「&lt;A href="http://astore.amazon.co.jp/episteme00-22/detail/4764901625/503-6660086-6234330"&gt;&lt;FONT color=#206ba2&gt;アルゴリズムとデータ構造&lt;/FONT&gt;&lt;/A&gt;」をよこちょに置いて書いてました。&lt;BR&gt;いやね、WPFとかWCFとかLINQとかXNAとか、みんなすごいなーと&lt;BR&gt;思うんですよ。僕は新しいことに手を染めず、そこそこ枯れてきた頃に&lt;BR&gt;美味しいとこだけ頂戴するばかりです。&lt;BR&gt;&lt;BR&gt;もう幾度となく繰り返してることですが、近頃のビギナ(に限らんかな)は&lt;BR&gt;本を読まなくなりました。大概のことはネット検索すりゃカタがつきます&lt;BR&gt;しね。けども僕は本を大事にしたい。「アルゴリズムとデータ構造」はもう&lt;BR&gt;30年以上前の解説書です。けども僕のプログラマ稼業でいちばん役に立った&lt;BR&gt;本だし今でもときおり読み返します。&lt;BR&gt;&lt;BR&gt;まぁ、そんな想いを若い人たちにちょっとでも伝えたくて、ほんのりカビ&lt;BR&gt;臭いこんなネタを書いてみたりするわけね。&lt;BR&gt;&lt;BR&gt;よろしく御贔屓のほどを。&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/152929.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>名乗りを上げました</title><link>http://blogs.wankuma.com/episteme/archive/2008/08/13/152866.aspx</link><pubDate>Wed, 13 Aug 2008 11:19:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2008/08/13/152866.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/152866.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2008/08/13/152866.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/152866.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/152866.aspx</trackback:ping><description>&lt;P&gt;来る09/20はわんくま東京勉強会#24です。&lt;BR&gt;&lt;BR&gt;ディレクターは はつね さん、&lt;BR&gt;僕はソートをネタとしたLT(Ligtening Talk)に手ぇ挙げちゃいました。&lt;BR&gt;LTってやったことないのよねー。&lt;BR&gt;短い尺で喋るのってドキドキです、&lt;BR&gt;10分以上あるなら尺の調整が利くんですけど&lt;BR&gt;わずか5分ですからね。きっちり練習しとかんと...&lt;/P&gt;
&lt;P&gt;さて、肝心のネタですが、なんにしましょ。&lt;BR&gt;あんまり語られてないポい「ヒープソート」&lt;BR&gt;を5分で語ってみましょうかしら。&lt;BR&gt;&lt;BR&gt;早速ネタ仕込み。Visual Studio立ち上げてごりごり書く。&lt;BR&gt;&lt;BR&gt;&lt;FONT face="Courier New"&gt;template&amp;lt;typename T&amp;gt;&lt;BR&gt;void Sift(T data[], int L, int R) {&lt;BR&gt;&amp;nbsp; int i = L;&lt;BR&gt;&amp;nbsp; int j = 2*i + 1;&lt;BR&gt;&amp;nbsp; T x = data[L];&lt;BR&gt;&amp;nbsp; if ( j &amp;lt; R &amp;amp;&amp;amp; data[j] &amp;lt; data[j+1] ) ++j;&lt;BR&gt;&amp;nbsp; while ( j &amp;lt;= R &amp;amp;&amp;amp; x &amp;lt; data[j] ) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data[i] = data[j];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i = j;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; j = 2*j + 1;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( j &amp;lt; R &amp;amp;&amp;amp; data[j] &amp;lt; data[j+1] ) ++j;&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; data[i] = x;&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;/*&lt;BR&gt;&amp;nbsp;* ヒープソート&lt;BR&gt;&amp;nbsp;*/&lt;BR&gt;template&amp;lt;typename T&amp;gt;&lt;BR&gt;void Sort(T data[],int n) {&lt;BR&gt;&amp;nbsp; int L = n / 2;&lt;BR&gt;&amp;nbsp; int R = n - 1;&lt;BR&gt;&amp;nbsp; while ( L &amp;gt; 0 ) Sift(data, --L, R);&lt;BR&gt;&amp;nbsp; while ( R &amp;gt; 0 ) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; T x = data[0];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data[0] = data[R];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data[R] = x;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sift(data, L, --R);&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;}&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;コードの解説したってつまんない。さーてこれをどうすべか。&lt;BR&gt;&lt;BR&gt;※ 昨日帰りがけに立ち寄った本屋でなにげに手にした一冊にあったヒトコト:&lt;BR&gt;　「&lt;STRONG&gt;スピーチなんかするな。ショーにしてしまえ&lt;/STRONG&gt;」 いぃことゆー♪&lt;BR&gt;&lt;BR&gt;[追記] STL使うと&lt;A href="http://blogs.wankuma.com/ryoichi/archive/2008/08/14/152979.aspx"&gt;シュウたん並みに脱力&lt;/A&gt;します。&lt;FONT face="Courier New"&gt;o&amp;lt;\_&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;FONT face="Courier New"&gt;#include &amp;lt;iostream&amp;gt;&lt;BR&gt;#include &amp;lt;algorithm&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;int main() {&lt;BR&gt;&amp;nbsp; int data[] = { 9, 7, 5, 3, 1, 8, 6, 4, 2, 0 };&lt;BR&gt;&amp;nbsp;&lt;STRONG&gt; std::&lt;FONT color=#ff0000&gt;make_heap&lt;/FONT&gt;(data, data+10);&lt;FONT color=#008000&gt; // ぶっちゃけ&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp; std::&lt;FONT color=#ff0000&gt;sort_heap&lt;/FONT&gt;(data, data+10);&lt;FONT color=#008000&gt; // こんだけ。&lt;/FONT&gt;&lt;BR&gt;&lt;/STRONG&gt;&amp;nbsp; for ( int i = 0; i &amp;lt; 10; ++i )&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; std::cout &amp;lt;&amp;lt; data[i] &amp;lt;&amp;lt; ' ';&lt;BR&gt;}&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/152866.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>状態遷移のテスト法(そのに)</title><link>http://blogs.wankuma.com/episteme/archive/2008/08/07/152098.aspx</link><pubDate>Thu, 07 Aug 2008 11:48:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2008/08/07/152098.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/152098.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2008/08/07/152098.aspx#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/152098.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/152098.aspx</trackback:ping><description>&lt;P&gt;&lt;A id=viewpost.ascx_TitleUrl HREF="/episteme/archive/2008/08/06/151941.aspx"&gt;&lt;FONT color=#0000ff&gt;状態遷移のテスト法&lt;/FONT&gt;&lt;/A&gt; のつづき。&lt;/P&gt;
&lt;P&gt;遷移行列の積を求めるコードを書いてみた。&lt;BR&gt;&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;using System;&lt;BR&gt;using System.Collections.Generic;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;enum 状態 { 断, 弱, 中, 強 };&lt;BR&gt;enum 事象 { 無, 電, 風 };&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;class Program {&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; const int 状態数 = 4;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; const int 事象数 = 2;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static List&amp;lt;List&amp;lt;事象&amp;gt;&amp;gt;[,] createMatrix() {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return new List&amp;lt;List&amp;lt;事象&amp;gt;&amp;gt;[状態数, 状態数];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#008000&gt; /*&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * ここがキモ! 遷移行列の積&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static List&amp;lt;List&amp;lt;事象&amp;gt;&amp;gt;[,] &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; multiplyMatrix(List&amp;lt;List&amp;lt;事象&amp;gt;&amp;gt;[,] m, 事象[,] e) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;List&amp;lt;事象&amp;gt;&amp;gt;[,] result;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = createMatrix();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; 状態数; ++i) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int j = 0; j &amp;lt; 状態数; ++j)&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int k = 0; k &amp;lt; 状態数; ++k)&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (m[i, k] != null &amp;amp;&amp;amp; e[k, j] != 事象.無)&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (result[i, j] == null) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result[i, j] = new List&amp;lt;List&amp;lt;事象&amp;gt;&amp;gt;();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (List&amp;lt;事象&amp;gt; events in m[i, k]) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;事象&amp;gt; l = new List&amp;lt;事象&amp;gt;(events);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; l.Add(e[k, j]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result[i, j].Add(l);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return result;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;// HTML - &amp;lt;table&amp;gt;形式で出力&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static void printMatrix(List&amp;lt;List&amp;lt;事象&amp;gt;&amp;gt;[,] mtx) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("&amp;lt;table border='1'&amp;gt;&amp;lt;tbody&amp;gt;");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; 状態数; ++i) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.Write("&amp;lt;tr&amp;gt;");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int j = 0; j &amp;lt; 状態数; ++j)&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.Write("&amp;lt;td&amp;gt;");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (mtx[i, j] != null)&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool first = true;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (List&amp;lt;事象&amp;gt; events in mtx[i, j]) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!first) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.Write("&amp;lt;br /&amp;gt;");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; first = false;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (事象 ev in events)&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.Write(ev.ToString());&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.Write("&amp;lt;/td&amp;gt;");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("&amp;lt;/tr&amp;gt;");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("&amp;lt;/tbody&amp;gt;&amp;lt;/table&amp;gt;");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static void Main()&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;// 単位行列を作る&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;List&amp;lt;事象&amp;gt;&amp;gt;[,] E = createMatrix();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; 状態数; ++i)&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int j = 0; j &amp;lt; 状態数; ++j)&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (i == j)&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; E[i, j] = new List&amp;lt;List&amp;lt;事象&amp;gt;&amp;gt;();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; E[i, j].Add(new List&amp;lt;事象&amp;gt;());&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;// 遷移行列を作る&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 事象[,] T = new 事象[状態数, 状態数];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; 状態数; ++i)&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int j = 0; j &amp;lt; 状態数; ++j) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; T[i, j] = 事象.無;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; T[0, 0] = 事象.風;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; T[0, 1] = 事象.電;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; T[1, 0] = 事象.電;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; T[1, 2] = 事象.風;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; T[2, 0] = 事象.電;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; T[2, 3] = 事象.風;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; T[3, 0] = 事象.電;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; T[3, 1] = 事象.風;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;List&amp;lt;事象&amp;gt;&amp;gt;[,] result = E;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;// T^n (n=1..4)&amp;nbsp;を求めてみゆぅ&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; 4; ++i)&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = multiplyMatrix(result, T);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printMatrix(result);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;これ使って T^4まで求めたぞ↓&lt;/P&gt;
&lt;TABLE border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;風&lt;/TD&gt;
&lt;TD&gt;電&lt;/TD&gt;
&lt;TD&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;電&lt;/TD&gt;
&lt;TD&gt;&lt;/TD&gt;
&lt;TD&gt;風&lt;/TD&gt;
&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;電&lt;/TD&gt;
&lt;TD&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;/TD&gt;
&lt;TD&gt;風&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;電&lt;/TD&gt;
&lt;TD&gt;風&lt;/TD&gt;
&lt;TD&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;T&lt;BR&gt;&lt;BR&gt;
&lt;TABLE border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;風風&lt;BR&gt;電電&lt;/TD&gt;
&lt;TD&gt;風電&lt;/TD&gt;
&lt;TD&gt;電風&lt;/TD&gt;
&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;電風&lt;BR&gt;風電&lt;/TD&gt;
&lt;TD&gt;電電&lt;/TD&gt;
&lt;TD&gt;&lt;/TD&gt;
&lt;TD&gt;風風&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;電風&lt;BR&gt;風電&lt;/TD&gt;
&lt;TD&gt;電電&lt;BR&gt;風風&lt;/TD&gt;
&lt;TD&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;電風&lt;BR&gt;風電&lt;/TD&gt;
&lt;TD&gt;電電&lt;/TD&gt;
&lt;TD&gt;風風&lt;/TD&gt;
&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;T^2&lt;BR&gt;&lt;BR&gt;
&lt;TABLE border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;風風風&lt;BR&gt;電電風&lt;BR&gt;風電電&lt;BR&gt;電風電&lt;/TD&gt;
&lt;TD&gt;風風電&lt;BR&gt;電電電&lt;/TD&gt;
&lt;TD&gt;風電風&lt;/TD&gt;
&lt;TD&gt;電風風&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;電風風&lt;BR&gt;風電風&lt;BR&gt;電電電&lt;BR&gt;風風電&lt;/TD&gt;
&lt;TD&gt;電風電&lt;BR&gt;風電電&lt;BR&gt;風風風&lt;/TD&gt;
&lt;TD&gt;電電風&lt;/TD&gt;
&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;電風風&lt;BR&gt;風電風&lt;BR&gt;電電電&lt;BR&gt;風風電&lt;/TD&gt;
&lt;TD&gt;電風電&lt;BR&gt;風電電&lt;/TD&gt;
&lt;TD&gt;電電風&lt;BR&gt;風風風&lt;/TD&gt;
&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;電風風&lt;BR&gt;風電風&lt;BR&gt;電電電&lt;BR&gt;風風電&lt;/TD&gt;
&lt;TD&gt;電風電&lt;BR&gt;風電電&lt;/TD&gt;
&lt;TD&gt;電電風&lt;/TD&gt;
&lt;TD&gt;風風風&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;T^3&lt;BR&gt;&lt;BR&gt;
&lt;TABLE border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;風風風風&lt;BR&gt;電電風風&lt;BR&gt;風電電風&lt;BR&gt;電風電風&lt;BR&gt;風風電電&lt;BR&gt;電電電電&lt;BR&gt;風電風電&lt;BR&gt;電風風電&lt;/TD&gt;
&lt;TD&gt;風風風電&lt;BR&gt;電電風電&lt;BR&gt;風電電電&lt;BR&gt;電風電電&lt;BR&gt;電風風風&lt;/TD&gt;
&lt;TD&gt;風風電風&lt;BR&gt;電電電風&lt;/TD&gt;
&lt;TD&gt;風電風風&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;電風風風&lt;BR&gt;風電風風&lt;BR&gt;電電電風&lt;BR&gt;風風電風&lt;BR&gt;電風電電&lt;BR&gt;風電電電&lt;BR&gt;風風風電&lt;BR&gt;電電風電&lt;/TD&gt;
&lt;TD&gt;電風風電&lt;BR&gt;風電風電&lt;BR&gt;電電電電&lt;BR&gt;風風電電&lt;/TD&gt;
&lt;TD&gt;電風電風&lt;BR&gt;風電電風&lt;BR&gt;風風風風&lt;/TD&gt;
&lt;TD&gt;電電風風&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;電風風風&lt;BR&gt;風電風風&lt;BR&gt;電電電風&lt;BR&gt;風風電風&lt;BR&gt;電風電電&lt;BR&gt;風電電電&lt;BR&gt;電電風電&lt;BR&gt;風風風電&lt;/TD&gt;
&lt;TD&gt;電風風電&lt;BR&gt;風電風電&lt;BR&gt;電電電電&lt;BR&gt;風風電電&lt;/TD&gt;
&lt;TD&gt;電風電風&lt;BR&gt;風電電風&lt;/TD&gt;
&lt;TD&gt;電電風風&lt;BR&gt;風風風風&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;電風風風&lt;BR&gt;風電風風&lt;BR&gt;電電電風&lt;BR&gt;風風電風&lt;BR&gt;電風電電&lt;BR&gt;風電電電&lt;BR&gt;電電風電&lt;BR&gt;風風風電&lt;/TD&gt;
&lt;TD&gt;電風風電&lt;BR&gt;風電風電&lt;BR&gt;電電電電&lt;BR&gt;風風電電&lt;BR&gt;風風風風&lt;/TD&gt;
&lt;TD&gt;電風電風&lt;BR&gt;風電電風&lt;/TD&gt;
&lt;TD&gt;電電風風&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;T^4&lt;BR&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/152098.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>状態遷移のテスト法</title><link>http://blogs.wankuma.com/episteme/archive/2008/08/06/151941.aspx</link><pubDate>Wed, 06 Aug 2008 12:11:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2008/08/06/151941.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/151941.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2008/08/06/151941.aspx#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/151941.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/151941.aspx</trackback:ping><description>&lt;P&gt;僕の部屋には扇風機があります。&lt;BR&gt;(簡略化して)ボタンは&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;電&lt;/FONT&gt;&lt;/STRONG&gt;源と&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;風&lt;/FONT&gt;&lt;/STRONG&gt;量のふたつだけ。 &lt;BR&gt;扇風機の状態は 電源&lt;STRONG&gt;&lt;FONT color=#008000&gt;断&lt;/FONT&gt;&lt;/STRONG&gt;/&lt;STRONG&gt;&lt;FONT color=#008000&gt;弱&lt;/FONT&gt;&lt;/STRONG&gt;/&lt;STRONG&gt;&lt;FONT color=#008000&gt;中&lt;/FONT&gt;&lt;/STRONG&gt;/&lt;STRONG&gt;&lt;FONT color=#008000&gt;強&lt;/FONT&gt; &lt;/STRONG&gt;の４つ。&lt;/P&gt;
&lt;P&gt;- 電源&lt;FONT color=#008000&gt;断&lt;/FONT&gt;で&lt;FONT color=#ff0000&gt;電&lt;/FONT&gt;源ボタン押すと&lt;FONT color=#008000&gt;弱&lt;/FONT&gt;に。&lt;BR&gt;- &lt;FONT color=#008000&gt;弱&lt;/FONT&gt;/&lt;FONT color=#008000&gt;中&lt;/FONT&gt;/&lt;FONT color=#008000&gt;強&lt;/FONT&gt;で&lt;FONT color=#ff0000&gt;電&lt;/FONT&gt;源ボタン押すと電源&lt;FONT color=#008000&gt;断&lt;/FONT&gt;に。&lt;BR&gt;- 電源入った状態で&lt;FONT color=#ff0000&gt;風&lt;/FONT&gt;量ボタン押すと&lt;FONT color=#008000&gt;弱&lt;/FONT&gt;→&lt;FONT color=#008000&gt;中&lt;/FONT&gt;→&lt;FONT color=#008000&gt;強&lt;/FONT&gt;→&lt;FONT color=#008000&gt;弱&lt;/FONT&gt;...の順に切換。&lt;/P&gt;
&lt;P&gt;そーすっと状態遷移表はこんなのができます。&lt;/P&gt;
&lt;TABLE border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH&gt;　&lt;/TH&gt;
&lt;TH&gt;断&lt;/TH&gt;
&lt;TH&gt;弱&lt;/TH&gt;
&lt;TH&gt;中&lt;/TH&gt;
&lt;TH&gt;強&lt;/TH&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;電&lt;/TH&gt;
&lt;TD&gt;→弱&lt;/TD&gt;
&lt;TD&gt;→断&lt;/TD&gt;
&lt;TD&gt;→断&lt;/TD&gt;
&lt;TD&gt;→断&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;風&lt;/TH&gt;
&lt;TD&gt;→断&lt;/TD&gt;
&lt;TD&gt;→中&lt;/TD&gt;
&lt;TD&gt;→強&lt;/TD&gt;
&lt;TD&gt;→弱&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;こいつを基に遷移行列を作ります。&lt;BR&gt;遷移行列てのはある状態からある状態に遷移させるのに必要な事象の行列。&lt;/P&gt;
&lt;TABLE border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH&gt;　&lt;/TH&gt;
&lt;TH&gt;断&lt;/TH&gt;
&lt;TH&gt;弱&lt;/TH&gt;
&lt;TH&gt;中&lt;/TH&gt;
&lt;TH&gt;強&lt;/TH&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;断&lt;/TH&gt;
&lt;TD&gt;風&lt;/TD&gt;
&lt;TD&gt;電&lt;/TD&gt;
&lt;TD&gt;　&lt;/TD&gt;
&lt;TD&gt;　&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;弱&lt;/TH&gt;
&lt;TD&gt;電&lt;/TD&gt;
&lt;TD&gt;　&lt;/TD&gt;
&lt;TD&gt;&lt;FONT color=#0000ff&gt;風&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;　&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;中&lt;/TH&gt;
&lt;TD&gt;電&lt;/TD&gt;
&lt;TD&gt;　&lt;/TD&gt;
&lt;TD&gt;　&lt;/TD&gt;
&lt;TD&gt;風&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;強&lt;/TH&gt;
&lt;TD&gt;電&lt;/TD&gt;
&lt;TD&gt;風&lt;/TD&gt;
&lt;TD&gt;　&lt;/TD&gt;
&lt;TD&gt;　&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;わかるよね。縦に並ぶのが今の状態、横に並ぶのが次の状態。&lt;BR&gt;この表によると、&lt;FONT color=#0000ff&gt;弱から中にするには風ボタンを押せばいい&lt;/FONT&gt;。&lt;BR&gt;&lt;BR&gt;さて、この遷移行列をTとし、T^2 (=T&amp;#215;T) を求めると:&lt;/P&gt;
&lt;TABLE border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH&gt;　&lt;/TH&gt;
&lt;TH&gt;断&lt;/TH&gt;
&lt;TH&gt;弱&lt;/TH&gt;
&lt;TH&gt;中&lt;/TH&gt;
&lt;TH&gt;強&lt;/TH&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;断&lt;/TH&gt;
&lt;TD&gt;風風+電電&lt;/TD&gt;
&lt;TD&gt;風電&lt;/TD&gt;
&lt;TD&gt;電風&lt;/TD&gt;
&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;弱&lt;/TH&gt;
&lt;TD&gt;電風+風電&lt;/TD&gt;
&lt;TD&gt;電電&lt;/TD&gt;
&lt;TD&gt;　　&lt;/TD&gt;
&lt;TD&gt;風風&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;中&lt;/TH&gt;
&lt;TD&gt;&lt;FONT color=#0000ff&gt;電風+風電&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;電電+風風&lt;/TD&gt;
&lt;TD&gt;　　&lt;/TD&gt;
&lt;TD&gt;　　&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TH&gt;強&lt;/TH&gt;
&lt;TD&gt;電風+風電&lt;/TD&gt;
&lt;TD&gt;電電&lt;/TD&gt;
&lt;TD&gt;風風&lt;/TD&gt;
&lt;TD&gt;　&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;BR&gt;こんなのができます。&lt;BR&gt;これは二回の操作で状態を遷移させるときの事象の列&lt;BR&gt;すなわち操作の列が表になってます。&lt;BR&gt;たとえば中状態から二回の操作で断にするには&lt;BR&gt;&lt;FONT color=#0000ff&gt;電・風または風・電&lt;/FONT&gt;の順にボタンを押せばいい。&lt;BR&gt;&lt;BR&gt;遷移行列の掛け算を繰り返して T^n (= T&amp;#215;T&amp;#215;T&amp;#215;....&amp;#215;T)&lt;BR&gt;を求めると、n回の操作で状態を遷移させるときの操作の列&lt;BR&gt;が得られます。&lt;BR&gt;&lt;BR&gt;ってことは、だ。全自動"扇風機のボタン押しますぃーん"を用意して、&lt;BR&gt;T^nの遷移行列に記されたとおりにボタンをn回押させ、&lt;BR&gt;期待する状態に落ち着くかを検証すれば扇風機のテストができるわけっすね。&lt;BR&gt;&lt;BR&gt;ややこしいUI操作や通信プロトコルなんかもこの戦略でテスト&lt;BR&gt;できそうなんだよねー&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/151941.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>のんちゃんのVBお勉強に協力する試み (3) </title><link>http://blogs.wankuma.com/episteme/archive/2008/07/22/149781.aspx</link><pubDate>Tue, 22 Jul 2008 21:13:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2008/07/22/149781.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/149781.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2008/07/22/149781.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/149781.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/149781.aspx</trackback:ping><description>&lt;P&gt;で、こいつが課題提出用ひながた。&lt;BR&gt;&lt;A id=RecentPosts__ctl18_Hyperlink2 HREF="/torikobito/archive/2008/07/19/149700.aspx"&gt;&lt;FONT color=#0000ff&gt;ソートされたらいいな、をカタチにする。&lt;/FONT&gt;&lt;/A&gt;をパクらせていただきました。&lt;BR&gt;&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;Module non_SortExam&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#008000&gt; ' Sortの中で呼びたい関数/サブルーチンが&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' あるならここらへんに書いとく&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#ff0000&gt; ' 課題:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' ここのナカミを埋めなさい&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; '&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sub Sort(ByVal data() As Integer)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' とりあえず組み込みメソッドでお茶を濁しておく&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Array.Sort(data)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;' data() 内を0以上100未満の乱数で埋める&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sub FillRandom(ByVal data() As Integer)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim I As Integer&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim R As New Random&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For I = 0 To data.Length - 1&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data(I) = R.Next(100)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;' data() が昇順にソートされているなら True を返す&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Function IsSorted(ByVal data() As Integer) As Boolean&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim I As Integer&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If data.Length = 0 OrElse data.Length = 1 Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return True&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For I = 0 To data.Length - 2&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If data(I) &amp;gt; data(I + 1) Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return False&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return True&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Function&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sub Main()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim data() As Integer&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim I As Integer&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim R As New Random&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For I = 0 To 9&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ReDim data(R.Next(100))&lt;FONT color=#008000&gt; ' テケトーな大きさの配列を&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FillRandom(data)&lt;FONT color=#008000&gt; ' テケトーに埋める&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.Write("{0}回目 {1}個をソート...", I, data.Length)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sort(data)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If IsSorted(data) Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("ソートされています")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("ダメぢゃん!")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("よくできました!")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;End Module&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/149781.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>あるもーん♪</title><link>http://blogs.wankuma.com/episteme/archive/2008/07/18/149647.aspx</link><pubDate>Fri, 18 Jul 2008 23:05:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2008/07/18/149647.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/149647.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2008/07/18/149647.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/149647.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/149647.aspx</trackback:ping><description>&lt;P&gt;ネタ元 → &lt;A id=viewpost.ascx_TitleUrl HREF="/rti/archive/2008/07/18/149606.aspx" addEventLogcatcher="true"&gt;&lt;FONT color=#0066aa&gt;順列生成メソッド&lt;/FONT&gt;&lt;/A&gt; &lt;BR&gt;&lt;BR&gt;STL/CLRの出番だぜ。&lt;BR&gt;&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;--- myutil.h ---&lt;BR&gt;namespace MyUtil {&lt;BR&gt;&amp;nbsp; public ref class Algrithm {&lt;BR&gt;&amp;nbsp; public:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static bool &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;NextPermutation&lt;/FONT&gt;&lt;/STRONG&gt;(String^% str);&lt;BR&gt;&amp;nbsp; };&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;--- myutil.cpp ---&lt;BR&gt;#include &amp;lt;cliext/algorithm&amp;gt;&lt;BR&gt;#include &amp;lt;cliext/vector&amp;gt;&lt;BR&gt;#include "myutil.h"&lt;BR&gt;&lt;BR&gt;namespace MyUtil {&lt;BR&gt;&amp;nbsp; bool Algrithm::&lt;FONT color=#0000ff&gt;NextPermutation&lt;/FONT&gt;(String^% str) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cliext::vector&amp;lt;Char&amp;gt; v(str-&amp;gt;ToCharArray());&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool result = cliext::&lt;FONT color=#ff0000&gt;next_permutation&lt;/FONT&gt;(v.begin(),v.end()); &lt;FONT color=#008000&gt;// あるもーん&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str = gcnew String(v.to_array());&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return result;&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;--- user.cs ---&lt;BR&gt;using System;&lt;BR&gt;using MyUtil;&lt;BR&gt;&lt;BR&gt;class Program {&lt;BR&gt;&amp;nbsp; static void Main(string[] args) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string str = "ABCD";&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;do {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(str);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} while ( &lt;FONT color=#0000ff&gt;Algrithm.NextPermutation&lt;/FONT&gt;(ref str) );&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;}&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/149647.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>娘の成長を見守る父</title><link>http://blogs.wankuma.com/episteme/archive/2008/07/18/149622.aspx</link><pubDate>Fri, 18 Jul 2008 19:37:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2008/07/18/149622.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/149622.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2008/07/18/149622.aspx#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/149622.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/149622.aspx</trackback:ping><description>&lt;P&gt;ネタ元→ &lt;A id=viewpost.ascx_TitleUrl href="/non/archive/2008/07/18/149614.aspx"&gt;&lt;FONT color=#0066aa&gt;うぐぐ・・・タイトルがうかびません・・・&lt;/FONT&gt;&lt;/A&gt; &lt;BR&gt;ちょっとずつ、書き方が掴めてきてるみたいね、よしよし♪&lt;/P&gt;
&lt;P&gt;えとね、その戦略ならこうすりゃいい。&lt;BR&gt;まずこんな関数を作る:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;　Function LesserIndex(data() As Integer, x As Integer, y As Integer) As Integer&lt;BR&gt;&lt;FONT color=#008000&gt;　' data(x) &amp;lt; data(y) なら x, さもなくば y を返す&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;んでもって &lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;Dim minIndex As Integer&lt;BR&gt;minIndex&amp;nbsp;= 0 &lt;FONT color=#008000&gt;' 0から始めて&lt;BR&gt;&lt;/FONT&gt;minIndex&amp;nbsp;= LesserIndex(data, minIndex, 1) &lt;FONT color=#008000&gt;' より小さい方のインデックスがminIndexにセットされる&lt;/FONT&gt;&lt;BR&gt;minIndex&amp;nbsp;= LesserIndex(data, minIndex, 2) &lt;FONT color=#008000&gt;' より小さい方のインデックスがminIndexにセットされる&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;BR&gt;これで&lt;FONT face="Courier New" size=2&gt;data(minIndex)&lt;/FONT&gt;がいっちゃん小さいことになるから、&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;data(0)&lt;/FONT&gt;と&lt;FONT face="Courier New" size=2&gt;data(minIndex)&lt;/FONT&gt;を交換する。&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;data(0)&lt;/FONT&gt;がいちばん小さくなったので、0番目まではソートできた。&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;&lt;FONT face=Arial&gt;&lt;BR&gt;&lt;FONT size=3&gt;そしてもう一度。&lt;BR&gt;ソートの済んだ&lt;/FONT&gt;&lt;/FONT&gt;data(0)&lt;/FONT&gt;を除外して同じことすれば&lt;BR&gt;次に小さい&lt;FONT face="Courier New" size=2&gt;data()&lt;/FONT&gt;がどれかわかる。それと&lt;FONT face="Courier New" size=2&gt;data(1)&lt;/FONT&gt;を交換。&lt;BR&gt;これで1番目まではソートできた。&lt;BR&gt;&lt;BR&gt;&lt;FONT face=Arial&gt;そしてもう一度。&lt;BR&gt;ソートの済んだ&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;data(0)~data(1)&lt;/FONT&gt;を除外して同じことすれば&lt;BR&gt;次に小さい&lt;FONT face="Courier New" size=2&gt;data()&lt;/FONT&gt;がどれかわかる。それと&lt;FONT face="Courier New" size=2&gt;data(2)&lt;/FONT&gt;を交換。&lt;BR&gt;これで2番目まではソートできた。&lt;BR&gt;&lt;BR&gt;...これを繰り返せば昇順にソートされます。&lt;BR&gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;選択ソート&lt;/FONT&gt;&lt;/STRONG&gt;のアルゴリズムね。&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/149622.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>のんちゃんのVBお勉強に協力する試み (2) </title><link>http://blogs.wankuma.com/episteme/archive/2008/07/16/149196.aspx</link><pubDate>Wed, 16 Jul 2008 22:23:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2008/07/16/149196.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/149196.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2008/07/16/149196.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/149196.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/149196.aspx</trackback:ping><description>&lt;P&gt;&lt;A id=viewpost.ascx_TitleUrl href="/episteme/archive/2008/07/05/147495.aspx"&gt;&lt;FONT color=#0000ff&gt;のんちゃんのVBお勉強に協力する試み (1)&lt;/FONT&gt;&lt;/A&gt; のつづき。&lt;/P&gt;
&lt;P&gt;さてさて、ヒントめいたのを書きつけておきましょか。&lt;/P&gt;
&lt;P&gt;まず、「昇順(小さい順)に&lt;STRONG&gt;ソートされた状態&lt;/STRONG&gt;」とはなにか。&lt;BR&gt;&lt;FONT face="Courier New"&gt;data(n) (n=0..N-1)&lt;/FONT&gt; において0以上N未満であるいかなる&lt;FONT face="Courier New"&gt;i,j&lt;/FONT&gt; に&lt;BR&gt;対しても、&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;i &amp;lt; j&lt;/FONT&gt; ならば &lt;FONT face="Courier New"&gt;data(i) &amp;lt;= data(j)&lt;/FONT&gt;&lt;/STRONG&gt; が成り立つ&lt;BR&gt;ってこと。&lt;BR&gt;もっといえば隣り合うふたつのデータについて&lt;BR&gt;&lt;FONT face="Courier New"&gt;data(i) &amp;lt;= data(i+1)&lt;/FONT&gt; が成り立つってことです。&lt;BR&gt;&lt;BR&gt;ってことは、&lt;FONT face="Courier New"&gt;data(i)&lt;/FONT&gt;と&lt;FONT face="Courier New"&gt;data(i+1)&lt;/FONT&gt;を比較し、&lt;BR&gt;&lt;STRONG&gt;&lt;FONT face="Courier New"&gt;data(i) &amp;gt; data(i+1)&lt;/FONT&gt; となってる箇所があれば&lt;BR&gt;その二つを交換&lt;/STRONG&gt;すればいい。&lt;BR&gt;この比較と交換をくまなく行って逆順すなわち&lt;BR&gt;&lt;FONT face="Courier New"&gt;data(i) &amp;gt; data(i+1)&lt;/FONT&gt; がひとつも見つからなくなればソート完了。&lt;BR&gt;&lt;BR&gt;「&lt;STRONG&gt;比較と交換をくまなく行う&lt;/STRONG&gt;」これがバブルソートのキモです。&lt;BR&gt;それじゃ&lt;STRONG&gt;くまなく&lt;/STRONG&gt;行うにはどうすりゃいいか、&lt;BR&gt;左端(&lt;FONT face="Courier New"&gt;i=0&lt;/FONT&gt;)から&lt;STRONG&gt;ひとつずつ順に&lt;/STRONG&gt;やってきゃいいわな。&lt;BR&gt;たとえば&lt;FONT face="Courier New"&gt; 1 3 2 1&lt;/FONT&gt; から始めて左端から一回通してみよう。&lt;BR&gt;( . の左右が比較してるとこ)&lt;BR&gt;&lt;FONT face="Courier New"&gt;&lt;BR&gt;1.3 2 1&lt;BR&gt;1 3.2 1 → 1 2 3 1 (ここで交換)&lt;BR&gt;1 2 3.1 → 1 2 1 3 (ここで交換)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;こうやって一回通すと&lt;STRONG&gt;一番大きな要素が右端&lt;/STRONG&gt;に寄ってくれる。&lt;BR&gt;けどもまだ完全にはソートされてない。なのでもう一回。&lt;BR&gt;右端が最大になってるんだから&lt;STRONG&gt;最後の比較/交換の必要はない&lt;/STRONG&gt;。&lt;BR&gt;&lt;FONT face="Courier New"&gt;&lt;BR&gt;1.2 1 3&lt;BR&gt;1 2.1 3 → 1 1 2 3&lt;BR&gt;1 1 2 3 完了!&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;つまり、一回でも交換を行うとそれによって大小が狂うかも&lt;BR&gt;しれんのでさらにもう一回左から比較/交換を行う。&lt;BR&gt;一度も交換が行われなかったらそれが&lt;STRONG&gt;ソート完了の証し&lt;/STRONG&gt;となるんやね。&lt;BR&gt;&lt;BR&gt;&lt;A id=ArchiveMonth.ascx_Days_Entries__ctl10_TitleUrl href="/episteme/archive/2008/07/07/147827.aspx"&gt;&lt;FONT color=#0000ff&gt;負けるもんか&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial&gt;が「ﾄﾃｰﾓ大きなヒントになってんだよ」てのは&lt;BR&gt;&lt;STRONG&gt;くまなく行う&lt;/STRONG&gt;を実現してるとこね。&lt;/FONT&gt;&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/149196.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>マージソート残務処理</title><link>http://blogs.wankuma.com/episteme/archive/2008/07/11/148543.aspx</link><pubDate>Fri, 11 Jul 2008 15:23:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2008/07/11/148543.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/148543.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2008/07/11/148543.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/148543.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/148543.aspx</trackback:ping><description>&lt;P&gt;ネタ元 → &lt;A id=viewpost.ascx_TitleUrl HREF="/episteme/archive/2008/07/10/148370.aspx"&gt;&lt;FONT color=#0000ff&gt;その差歴然(おまけ)&lt;/FONT&gt;&lt;/A&gt; &lt;BR&gt;&lt;BR&gt;&lt;FONT face="Courier New"&gt;inplace_merge&lt;/FONT&gt; があんまり知られてなかったみたい。&lt;BR&gt;なので簡単なサンプル、&lt;FONT face="Courier New"&gt;inplace_merge&lt;/FONT&gt; 使ってマージ・ソートを書いてみた。&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;#include &amp;lt;algorithm&amp;gt;&lt;BR&gt;#include &amp;lt;iterator&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&lt;FONT color=#008000&gt;// 単純選択ソート&lt;/FONT&gt;&lt;BR&gt;template&amp;lt;typename Iterator&amp;gt;&lt;BR&gt;void selection_sort(Iterator first, Iterator last) {&lt;BR&gt;&amp;nbsp; &lt;FONT color=#008000&gt;// たったこんだけでソートできる。STLらぶ♪&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp; for (; first != last; ++first )&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; std::iter_swap(first, std::min_element(first,last));&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&lt;FONT color=#008000&gt;// マージ・ソート&lt;/FONT&gt;&lt;BR&gt;template&amp;lt;typename Iterator&amp;gt;&lt;BR&gt;void &lt;FONT color=#0000ff&gt;&lt;STRONG&gt;merge_sort&lt;/STRONG&gt;&lt;/FONT&gt;(Iterator first, Iterator last) {&lt;BR&gt;&amp;nbsp; const typename std::iterator_traits&amp;lt;Iterator&amp;gt;::difference_type&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; threshold = 40; &lt;FONT color=#008000&gt;// ウチのマシンだとこのくらいがいっちゃん速い&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp; std::iterator_traits&amp;lt;Iterator&amp;gt;::difference_type &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;size = std::distance(first,last);&lt;BR&gt;&amp;nbsp; &lt;FONT color=#008000&gt;// 要素数が少ないときゃ単純選択ソートに切り替える&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp; if ( size &amp;lt; threshold ) { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; selection_sort(first,last);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;BR&gt;&amp;nbsp; } &lt;BR&gt;&amp;nbsp; Iterator middle = first; std::advance(middle, size/2); &lt;FONT color=#008000&gt;// 中央&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp; &lt;FONT color=#0000ff&gt;merge_sort&lt;/FONT&gt;(first, middle); &lt;FONT color=#008000&gt;// 前半[先頭,中央) をソート&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp; &lt;FONT color=#0000ff&gt;merge_sort&lt;/FONT&gt;(middle,last);&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;// 後半[中央,末尾) をソート&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp; std::&lt;FONT color=#ff0000&gt;inplace_merge&lt;/FONT&gt;(first,middle,last); &lt;FONT color=#008000&gt;// 前半と後半をマージ&lt;/FONT&gt;&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;&lt;FONT color=#008000&gt;// こっからおためし&lt;/FONT&gt;&lt;BR&gt;#include &amp;lt;iostream&amp;gt;&lt;BR&gt;#include &amp;lt;iomanip&amp;gt;&lt;BR&gt;#include &amp;lt;vector&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;int main() {&lt;BR&gt;&amp;nbsp; const int N = 50000;&lt;BR&gt;&amp;nbsp; std::vector&amp;lt;int&amp;gt; source(N);&lt;BR&gt;&amp;nbsp; for ( int i = 0; i &amp;lt; N; i++ ) source[i] = i;&lt;BR&gt;&amp;nbsp; std::random_shuffle(source.begin(), source.end());&lt;BR&gt;&amp;nbsp; &lt;FONT color=#0000ff&gt;merge_sort&lt;/FONT&gt;(source.begin(), source.end());&lt;BR&gt;}&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/148543.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>επιστημη</dc:creator><title>マージソートいちおー終結</title><link>http://blogs.wankuma.com/episteme/archive/2008/07/11/148526.aspx</link><pubDate>Fri, 11 Jul 2008 13:46:00 GMT</pubDate><guid>http://blogs.wankuma.com/episteme/archive/2008/07/11/148526.aspx</guid><wfw:comment>http://blogs.wankuma.com/episteme/comments/148526.aspx</wfw:comment><comments>http://blogs.wankuma.com/episteme/archive/2008/07/11/148526.aspx#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://blogs.wankuma.com/episteme/comments/commentRss/148526.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/episteme/services/trackbacks/148526.aspx</trackback:ping><description>&lt;P&gt;テキストファイルに書かれた改行区切りの文字列群を昇順にソートします。&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;IFRAME style="BORDER-RIGHT: #dde5e9 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: #dde5e9 1px solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 3px; BORDER-LEFT: #dde5e9 1px solid; WIDTH: 240px; PADDING-TOP: 0px; BORDER-BOTTOM: #dde5e9 1px solid; HEIGHT: 66px; BACKGROUND-COLOR: #ffffff" marginWidth=0 marginHeight=0 src="http://cid-07c558f8e11e708f.skydrive.live.com/embedrowdetail.aspx/WillBeRemovedSoon/MergeSort.zip" frameBorder=0 scrolling=no&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;P&gt;C#, VB.NET, C++/CLI のプロジェクトを詰め込みました。&lt;BR&gt;&lt;BR&gt;[追記] ちょびっといぢりました。1MBを限度にメモリに読み込み、&lt;BR&gt;ソートして書き出すことで連を減らしています。より高速になったかと。&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/episteme/aggbug/148526.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>