<feed version="0.3" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns="http://purl.org/atom/ns#" xml:lang="en-US"><title>mocchi</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/mocchi/default.aspx" /><tagline type="text/html" /><id>http://thespoke.net/blogs/mocchi/default.aspx</id><author><url>http://thespoke.net/blogs/mocchi/default.aspx</url></author><generator url="http://communityserver.org" version="1.1.0.50602">Community Server</generator><modified>2004-10-12T08:27:00Z</modified><entry><title>さんすうのもんだいをごりごりとく：改？</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/mocchi/archive/2005/07/20/248823.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:248823</id><created>2005-07-20T11:22:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;epistemeさんが黒影さんの問題を総当りで解くC++のプログラムを書かれたエントリがあります。&lt;BR&gt;&lt;A target="_blank" href="/BlogReader/SingleEntry.aspx?ID=38815" target=_blank&gt;http://jp.thespoke.net/BlogReader/SingleEntry.aspx?ID=38815&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;これはstlにあるnext_permutationという関数を利用して1-9の全ての並び方を順に列挙して&lt;BR&gt;問題を総当りで解き、答えをmapのキーにいれることで昇順ソートする、というもののようです。&lt;BR&gt;&lt;BR&gt;next_permutation・・・C++には、こんな便利な関数があるんですね。知りませんでした。他にも色々ありそうですね。&lt;BR&gt;総当りの結果、キーが整数値となるなかで最大となるものに104は入っていない、ということが証明されましたので、一つ前の僕のエントリの答えは正しい答えの１つである、といえそうです。&lt;BR&gt;&lt;BR&gt;ところで、この問題、異なる並び方で同じ答えになってしまうパターンも存在すると思います。しかし、epistemeさんのプログラムでは、キーの重複を許さない map を使っており、重複キーがでたときに以前の結果を上書きしてしまうため、最後に求めた1個だけが出力されてしまうことになるかと思います。そこで、epistemeさんのプログラムを代わりにキーの重複が許されるmultimapを使って書き換えてみました。&lt;BR&gt;変更した部分は色をつけておきました。&lt;BR&gt;&lt;BR&gt;#include &amp;lt;iostream&amp;gt;&lt;BR&gt;#include &amp;lt;map&amp;gt;&lt;BR&gt;#include &amp;lt;string&amp;gt;&lt;BR&gt;#include &amp;lt;algorithm&amp;gt;&lt;/P&gt;
&lt;P&gt;int main() { &lt;BR&gt;&amp;nbsp; double d[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };&lt;BR&gt;&amp;nbsp; char&amp;nbsp;&amp;nbsp; s[] = "123456789";&lt;BR&gt;&amp;nbsp; std::&lt;FONT color=#0000ff&gt;multimap&lt;/FONT&gt;&amp;lt;double, std::string&amp;gt; record;&lt;BR&gt;&amp;nbsp; do {&lt;BR&gt;&lt;FONT color=#ff8c00&gt;&lt;FONT color=#0000ff&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; record.insert(std::pair&amp;lt;double, std::string&amp;gt;(((d[0]*10.0+d[1])/d[2]&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; + d[3]/d[4] + d[5]/d[6] + d[7]/d[8]) ,s));&lt;/FONT&gt;&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; std::next_permutation(d, d+9);&lt;BR&gt;&amp;nbsp; } while ( std::next_permutation(s, s+9) );&lt;BR&gt;&amp;nbsp; for ( std::&lt;FONT color=#0000ff&gt;multimap&lt;/FONT&gt;&amp;lt;double,std::string&amp;gt;::iterator &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iter = record.begin();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iter != record.end(); ++iter ) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; std::cout &amp;lt;&amp;lt; iter-&amp;gt;second &amp;lt;&amp;lt; ':' &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;lt;&amp;lt; iter-&amp;gt;first &amp;lt;&amp;lt; std::endl;&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;multimapでは[]を使うことができないようですので、代わりにinsertを使いました。たったそれだけの変更で済むようです。キー値が103となるものを貼ってみます。&lt;BR&gt;&lt;BR&gt;981435276:103&lt;BR&gt;981437652:103&lt;BR&gt;981524376:103&lt;BR&gt;981527643:103&lt;BR&gt;981764352:103&lt;BR&gt;981765243:103&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;98/1 + 4/3 + 5/2 + 7/6&lt;BR&gt;98/1 + 4/3 + 7/6 + 5/2&lt;BR&gt;.&lt;BR&gt;.&lt;BR&gt;.&lt;BR&gt;103については、並びかたを変えただけで全て同じ組み合わせのようですね^^;&lt;BR&gt;(キー値が102について見てみると、違う組み合わせのものもあるようです)&lt;BR&gt;&lt;/P&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=248823" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/mocchi/commentrss.aspx?PostID=248823</wfw:commentRss></entry><entry><title>数学セミナー　総当り？</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/mocchi/archive/2005/07/20/248790.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:248790</id><created>2005-07-20T11:08:00Z</created><content type="text/html" mode="escaped">黒影さんが出題されている問題にちょっとチャレンジしてみました。&lt;A target="_blank" href="/MyBlog/BlackShadow/MyBlog_Comments.aspx?ID=38707" target=_blank&gt;http://jp.thespoke.net/MyBlog/BlackShadow/MyBlog_Comments.aspx?ID=38707&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;&lt;FONT style="BACKGROUND-COLOR: #ffffff" color=#000000&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;--- + --- + ---&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; ( )&lt;BR&gt;&lt;BR&gt;それぞれの括弧のなかに 1-9 の数字を一回ずつ使って作った式の答えが最も大きな整数となる組み合わせを求める、という問題。&lt;BR&gt;とりあえず最初の項を 98/1 として、適当に値を入れてたら・・・整数の解が求まってしまいました。&lt;BR&gt;&lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #ccffff" color=#ccffff&gt;&lt;FONT style="BACKGROUND-COLOR: #ffffff" color=#000000&gt;↓もしかしたらこれが正解かもしれませんので、念のため隠しときますね。&lt;BR&gt;98/1 + 7/6 + 4/3 + 5/2 = 103&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #ffffff" color=#000000&gt;これが最大かどうかは解からないのですが・・・&lt;BR&gt;&lt;BR&gt;とりあえず、問題式に1-9の数を一回ずつ使って作った式の答えが最大となる組み合わせの求め方を考えてみました。&lt;BR&gt;これを求めてしまえば、これより大きな整数値が答えとして出てくることは無いでしょう。&lt;BR&gt;&lt;BR&gt;できるだけ大きな値を分子に、できるだけ小さな値を分母に持ってくることでより大きな答えを求めることができそうです。このとき、分母となるより小さな値をできるだけ大きな値となる分子に割り当てるとよさそうです。&lt;BR&gt;まず、最初の項の分子を考えます。&lt;BR&gt;1-9 のから2個の数を選んで2桁の整数にする組み合わせのうち、もっとも大きなものは98、一方、残ったうちの最小値は1なので 最初の項は 98/1&lt;BR&gt;次に、残った中で最大の値は 7 で、さらに残った中で最小値は 2 なので、第二項は 7/2、　・・・ という風に、繰り返してみると・・・&lt;BR&gt;&lt;BR&gt;98/1 + 7/2 + 6/3 + 5/4 = 104.75&lt;BR&gt;&lt;BR&gt;となりました。つまり、104 よりも大きな整数値が答えとはなりえない、ということになります。&lt;BR&gt;↓上のを隠すとこれも隠さなくてはいけなさそうなので念のため・・・^^;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #ffffff" color=#000000&gt;それを考えると、上で隠した答えは最大の整数っぽいような気がしますが、104が答えとしてありえないことが証明でき無い限り確証がもてませんね^^;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt;&lt;FONT style="BACKGROUND-COLOR: #ffffff" color=#000000&gt;ちなみに、最初の項を97/1 として残りは同じように最大値となる組み合わせを考えたときは104.25、最初の項を96/1としたときは103.58333... となるようですので、104の存在の可能性を総当りで求める場合は98/1の場合だけでなく、97/1の場合も計算する必要がありそうです。&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;FONT style="BACKGROUND-COLOR: #ffffff" color=#000000&gt;追記：部分的に隠してましたが、隠す必要性がなくなったと判断しましたので、マスクを外しました。&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=248790" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/mocchi/commentrss.aspx?PostID=248790</wfw:commentRss></entry><entry><title>マインスイーパのアルゴリズム(再帰無しバージョン)</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/mocchi/archive/2005/07/04/247522.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:247522</id><created>2005-07-04T06:12:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;takeaki_o さん、Sirokuroさんが取り組んでるマインスイーパのアルゴリズムに僕も挑戦してみました。&lt;BR&gt;&lt;A target="_blank" href="/BlogReader/SingleEntry.aspx?ID=37227" target=_blank&gt;takeaki_oさんのエントリ&lt;/A&gt;&lt;BR&gt;&lt;A target="_blank" href="/MyBlog/SiroKuro/MyBlog_Comments.aspx?ID=37414" target=_blank&gt;Sirokuroさんのエントリ&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;Sirokuroさんのアルゴリズムは再帰を使っていますので、僕は再帰を使わない方針でチャレンジしてみました。&lt;BR&gt;&lt;BR&gt;05/07/04 11:04 修正　toOpen2.Add(... の行の括弧の対応がおかしかったorz&lt;BR&gt;&lt;BR&gt;&lt;FONT color=#008000&gt;// マインスイーパのセルを開くアルゴリズム (再帰なしのバージョン)&lt;/FONT&gt;&lt;BR&gt;&lt;FONT color=#0000ff&gt;class&lt;/FONT&gt; Mine{&lt;BR&gt;&amp;nbsp;&lt;FONT color=#008000&gt;// -1 : 爆弾, 0以上 : 周辺の爆弾の数&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&lt;FONT color=#0000ff&gt;int&lt;/FONT&gt;&lt;FONT color=#4e4d45&gt;[,]&lt;/FONT&gt; cells = &lt;FONT color=#0000ff&gt;new int&lt;/FONT&gt;[5,5];&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;FONT color=#008000&gt;// 既に開いてたら true, まだなら false&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&lt;FONT color=#0000ff&gt;bool&lt;/FONT&gt;&lt;FONT color=#4e4d45&gt;[,]&lt;/FONT&gt; isOpened = &lt;FONT color=#0000ff&gt;new bool&lt;/FONT&gt;[5,5];&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;&amp;nbsp;// cells の指定された座標の値が0でかつまだ開いてなかったら true、それ以外は false&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&lt;FONT color=#0000ff&gt;bool&lt;/FONT&gt; CheckIfZeroAndNotOpenedYet(&lt;FONT color=#0000ff&gt;int&lt;/FONT&gt; x, &lt;FONT color=#0000ff&gt;int&lt;/FONT&gt; y){&lt;BR&gt;&amp;nbsp;&lt;FONT color=#008000&gt;&amp;nbsp;// 盤面外ならfalse&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;FONT color=#0000ff&gt;if&lt;/FONT&gt; (x &amp;lt; 0 || x &amp;gt;= 5 || y &amp;lt; 0 || y &amp;gt;= 5) &lt;FONT color=#0000ff&gt;return false&lt;/FONT&gt;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;FONT color=#0000ff&gt;if &lt;/FONT&gt;(cells[x,y] == 0 &amp;amp;&amp;amp; isOpened[x,y] == &lt;FONT color=#0000ff&gt;false&lt;/FONT&gt;) &lt;FONT color=#0000ff&gt;return true&lt;/FONT&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;FONT color=#0000ff&gt;else false&lt;/FONT&gt;;&lt;BR&gt;&lt;FONT color=#008000&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;↑の2行をもっと短く書くとしたら・・・&lt;BR&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;return ((cells[x,y] == 0) &amp;amp;&amp;amp; !isOpened[x,y]);&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;FONT color=#008000&gt;// (x,y) の座標のマスを開く。0なら周囲のマスも開く&lt;/FONT&gt;&lt;BR&gt;&lt;FONT color=#0000ff&gt;&amp;nbsp;void&lt;/FONT&gt; OpenCells(&lt;FONT color=#0000ff&gt;int&lt;/FONT&gt; x, &lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;y){&lt;BR&gt;&lt;FONT color=#008000&gt;&amp;nbsp;&amp;nbsp;// まず自分の座標を調べる&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;FONT color=#0000ff&gt;if &lt;/FONT&gt;(!CheckIfZeroAndNotOpenedYet(x,y)) &lt;FONT color=#0000ff&gt;return&lt;/FONT&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;isOpened[x,y] = &lt;FONT color=#0000ff&gt;true&lt;/FONT&gt;;&lt;BR&gt;&lt;BR&gt;&lt;FONT color=#008000&gt;&amp;nbsp;&amp;nbsp;// このターンのループで開く座標&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;ArrayList toOpen = &lt;FONT color=#0000ff&gt;new&lt;/FONT&gt; ArrayList();&lt;BR&gt;&amp;nbsp;&amp;nbsp;toOpen.Add(&lt;FONT color=#0000ff&gt;new&lt;/FONT&gt; Point(x,y));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;FONT color=#0000ff&gt;while&lt;/FONT&gt;(toOpen.Count &amp;gt; 0){&lt;BR&gt;&lt;FONT color=#008000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 次のループでチェックする座標を入れていく&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ArrayList toOpen2 = &lt;FONT color=#0000ff&gt;new&lt;/FONT&gt; ArrayList();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#0000ff&gt;foreach&lt;/FONT&gt;(Point p &lt;FONT color=#0000ff&gt;in&lt;/FONT&gt; toOpen){&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#0000ff&gt;if &lt;/FONT&gt;(p.X &amp;lt; 0 || p.Y &amp;gt;= 5 || p.Y &amp;lt; 0 || p.Y &amp;gt;= 5) &lt;FONT color=#0000ff&gt;continue&lt;/FONT&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#0000ff&gt;if &lt;/FONT&gt;(CheckIfZeroAndNotOpenedYet(p.X-1,p.Y-1)){&lt;FONT color=#008000&gt;&amp;nbsp;// 左上&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;toOpen2.Add(new Point(p.X-1,p.Y-1));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#0000ff&gt;if &lt;/FONT&gt;(CheckIfZeroAndNotOpenedYet(p.X,p.Y-1)){&amp;nbsp;&lt;FONT color=#008000&gt;&amp;nbsp;// 上&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;toOpen2.Add(new Point(p.X,p.Y-1));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#0000ff&gt;if &lt;/FONT&gt;(CheckIfZeroAndNotOpenedYet(p.X+1,p.Y-1)){&amp;nbsp;&lt;FONT color=#008000&gt;// 右上&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;toOpen2.Add(new Point(p.X+1,p.Y-1));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#0000ff&gt;if &lt;/FONT&gt;(CheckIfZeroAndNotOpenedYet(p.X-1,p.Y)){&lt;FONT color=#008000&gt;&amp;nbsp;&amp;nbsp;// 左&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;toOpen2.Add(new Point(p.X-1,p.Y));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#0000ff&gt;if &lt;/FONT&gt;(CheckIfZeroAndNotOpenedYet(p.X+1,p.Y)){&lt;FONT color=#008000&gt;&amp;nbsp;&amp;nbsp;// 右&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;toOpen2.Add(new Point(p.X+1,p.Y));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#0000ff&gt;if &lt;/FONT&gt;(CheckIfZeroAndNotOpenedYet(p.X-1,p.Y+1)){&lt;FONT color=#008000&gt;&amp;nbsp;// 左下&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;toOpen2.Add(new Point(p.X-1,p.Y+1));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#0000ff&gt;if &lt;/FONT&gt;(CheckIfZeroAndNotOpenedYet(p.X,p.Y+1)){&amp;nbsp;&lt;FONT color=#008000&gt;&amp;nbsp;// 下&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;toOpen2.Add(new Point(p.X,p.Y+1));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#0000ff&gt;if &lt;/FONT&gt;(CheckIfZeroAndNotOpenedYet(p.X+1,p.Y+1)){&lt;FONT color=#008000&gt;&amp;nbsp;// 右下&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;toOpen2.Add(new Point(p.X+1,p.Y+1));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&lt;FONT color=#008000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 新たに開いたところの isOpened を true にする&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#0000ff&gt;foreach&lt;/FONT&gt;(Point p &lt;FONT color=#0000ff&gt;in&lt;/FONT&gt; toOpen2){&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;isOpened[p.X,p.Y] = &lt;FONT color=#0000ff&gt;true&lt;/FONT&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;toOpen = toOpen2;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;&lt;FONT color=#008000&gt;&amp;nbsp;// その他もろもろの処理&lt;BR&gt;&lt;/FONT&gt;}&lt;BR&gt;&lt;BR&gt;変数 toOpen, toOpen2 が、takeaki_oさんの説明している変数 checked に近い役割を果たしているように見えますがいかがでしょうか。あとはOpenCellsの最初のほうに爆弾に触ったときの処理を加えたり、CheckIfZeroAndNotOpenedYetに0じゃなかったときの処理を加えたり、必要に応じて戻り値を設定すれば完成すると思います。&lt;BR&gt;(0じゃないときの処理のことも考えると、isOpened[x,y]=trueもCheckIfZeroAndNotOpenedYetに入れちゃったほうがいいかもしれません)&lt;BR&gt;&lt;BR&gt;ちなみに、再帰を使うと深さ優先(左上を開けるだけ開いて、次に上を開けるだけ開いて・・・)になって、再帰を使わないと幅優先(近いセルから順番に開いていく)になるかと思います。&lt;BR&gt;&lt;/P&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=247522" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/mocchi/commentrss.aspx?PostID=247522</wfw:commentRss></entry><entry><title>パシフィコ横浜</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/mocchi/archive/2005/06/11/245822.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:245822</id><created>2005-06-11T13:22:00Z</created><content type="text/html" mode="escaped">8日から10日まで、パシフィコ横浜で開催されていた学会イベントにちょこっと参加してました。どういうわけかImagine　Cup　World　Festivalが同じ場所ですね^^;&lt;BR&gt;&lt;BR&gt;会場までのアクセスに関してちょっと僕がハマったことを書いておきます。ImagineCupWorldFestivalに参加する方の参考になれば幸いです。&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;会場へは&lt;BR&gt;&lt;BR&gt;　　　新幹線　横浜地下鉄　　みなとみらい線　　　　　徒歩&lt;BR&gt;浜松　→　新横浜　→　横浜駅　→　みなとみらい駅　→　パシフィコ横浜&lt;BR&gt;&lt;BR&gt;という方法を使いました。&lt;BR&gt;&lt;BR&gt;浜松から新横浜は特に問題はなかったのですが、新横浜からがちょっと問題でした。&lt;BR&gt;新横浜からの移動方法は何通りかあって、パシフィコ横浜のサイトにも書いてあります。&lt;BR&gt;&lt;BR&gt;会場に一番近い駅はみなとみらい駅なので、何度乗り換えしても確実にその駅につければほとんど歩かずに済む(学会発表用の小道具的荷物が結構かさばってたので・・・)と考えてたのですが、横浜の地下鉄駅からみなとみらい線への乗り換えのために10分くらい歩かされて、しかもみなとみらい駅の出口も微妙に間違えてしまい、結局かなり歩くことになってしまいました。新横浜から横浜へ行く方法は地下鉄以外にJR線でいくルートもあるのですが、路線がなんか複雑で乗り換えとかに失敗したらいやだな、と思ったことと、横浜地下鉄は最近別の用事で乗ったことがあった、ということもあってそっちを選んでしまいました。&lt;BR&gt;&lt;BR&gt;サイトに書いてあるアクセス手段をよくよく見てみると、地下鉄を使うルートも横浜で乗り換えするルートも書いてはあるのですが、僕が行きに使った地下鉄使って横浜で乗り換え、というルートは書いてないですね。書いてない理由がよーくわかりましたorz&lt;BR&gt;&lt;BR&gt;それに懲りて、帰りは別のルートを使いました。&lt;BR&gt;(○○線、&amp;times;&amp;times;線は何線だったか忘れましたorz)&lt;BR&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; JR○○線&amp;nbsp;&amp;nbsp; JR&amp;times;&amp;times;線&amp;nbsp;&amp;nbsp;&amp;nbsp; 新幹線&lt;BR&gt;パシフィコ横浜　→&amp;nbsp; 桜木町駅　→　横浜駅　→　新横浜　→　浜松&lt;BR&gt;&lt;BR&gt;桜木町駅は2番目に近い駅で、サイトの説明では徒歩12分となってますが、実際に歩くと20分くらいかかります。&lt;BR&gt;駅と会場の通り道に一部動く歩道がありますが、その上を歩いたとしても15分くらいかかると思います。&lt;BR&gt;&lt;BR&gt;まあとにかく、帰りはこのルートで行く方針で電車に乗ったのですが、幸いにも乗った電車が桜木町から新横浜まで乗り換えなしで連れて行ってくれる奴で助かりました。&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;というわけで、できるだけ歩きたくない人は地下鉄は使わずにみなとみらい駅を目指すといいと思います。&lt;BR&gt;歩くのは平気だけど乗り換えはできるだけ避けたい、という方は地下鉄を使って、桜木町駅で降りるといいと思います(JR線の桜木町駅よりもちょっとだけ歩く距離が長くなりますが・・・)。&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=245822" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/mocchi/commentrss.aspx?PostID=245822</wfw:commentRss></entry><entry><title>浮動小数</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/mocchi/archive/2005/06/06/245439.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:245439</id><created>2005-06-06T14:39:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;ちょっと研究の関係で浮動少数のフォーマットについて調べてた。&lt;BR&gt;IEEE-754という形式がよく使われているらしい。&lt;BR&gt;研究のことはそれで解決したが、それを調べるためにサイトを巡回してたら、&lt;BR&gt;ちょっと気になることが書いてあった。&lt;BR&gt;&lt;BR&gt;JVM は浮動少数は内部で32ビットで扱っていて、倍精度(64bit)は2つの浮動少数の重ね合わせとして表現している。&lt;BR&gt;&lt;BR&gt;これを見て、もしかしたらjavaではfloatの方がdoubleより速いかも、と思った。で、早速、下のコードを使って実験してみた。&lt;BR&gt;&lt;BR&gt;class float_double{&lt;BR&gt;&amp;nbsp;public static void main(String[] args){&lt;BR&gt;&amp;nbsp;&amp;nbsp;long time1, time2;&lt;BR&gt;&amp;nbsp;&amp;nbsp;int i, j;&lt;BR&gt;&amp;nbsp;&amp;nbsp;float f1 = 0.0F, f2 = 0.4F;&lt;BR&gt;//&amp;nbsp;&amp;nbsp;double d1 = 0.0, d2 = 0.4;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;time1 = System.currentTimeMillis();&lt;BR&gt;&amp;nbsp;&amp;nbsp;for (i = 0; i &amp;lt; 123456789; i++){&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;f1 = f2 + f1;&lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;d1 = d2 + d1;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.out.println(f1);&lt;BR&gt;//&amp;nbsp;&amp;nbsp;System.out.println(d1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;time2 = System.currentTimeMillis();&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.out.println(time2 - time1);&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;// doubleを調べるときは、コメントアウトしてある行のコメントアウトを外して、対応するfloatのところをコメントアウトしてください。&lt;BR&gt;&lt;BR&gt;それぞれ2回ずつやった結果は・・・&lt;BR&gt;(doubleバージョン1回目)&lt;BR&gt;&amp;gt; 4.938271548956446E7&lt;BR&gt;&amp;gt; 1500&lt;BR&gt;(doubleバージョン2回目)&lt;BR&gt;&amp;gt; 4.938271548956446E7&lt;BR&gt;&amp;gt; 1484&lt;BR&gt;&lt;BR&gt;(floatバージョン1回目)&lt;BR&gt;&amp;gt; 8388608.0&lt;BR&gt;&amp;gt; 1500&lt;BR&gt;(floatバージョン2回目)&lt;BR&gt;&amp;gt; 8388608.0&lt;BR&gt;&amp;gt; 1485&lt;BR&gt;&lt;BR&gt;何回やってもこれと似たような値がでた。実行時の最適化とかが効いているかもしれないが、時間の差はほとんど無い様子。&lt;BR&gt;&lt;BR&gt;それよりも、floatの方の足し算した後の数字がdoubleと全然違う。よく見ると、 8388608.0 &lt;BR&gt;オーバーフローでもしたんだろうか？この数字をみて、ドラクエ4の某裏技を思い出してしまったw&lt;BR&gt;&lt;/P&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=245439" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/mocchi/commentrss.aspx?PostID=245439</wfw:commentRss></entry><entry><title>Visual Gaming SDK 水族館バージョン</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/mocchi/archive/2005/05/28/244710.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:244710</id><created>2005-05-28T14:47:00Z</created><content type="text/html" mode="escaped">VG round3 の結果が待ち遠しい今日この頃ですが・・・それはおいといて、&lt;BR&gt;&lt;BR&gt;本家theSpokeに、VG SDKを改造して水族館バージョンを作ってしまった方がいるようです。&lt;BR&gt;&lt;BR&gt;&lt;A target="_blank" href="http://www.thespoke.net/BlogReader/SingleEntry.aspx?ID=95791" target=_blank&gt;http://www.thespoke.net/BlogReader/SingleEntry.aspx?ID=95791&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;AIやWCが魚やウニに変わってます。&lt;BR&gt;がんばって作った自分のDLLでリプレイを作ってみたりすると、それはそれで楽しそうです。&lt;BR&gt;&lt;BR&gt;DLLを持ってない方でも、既にいくつかリプレイが用意されているようなので楽しめます。&lt;BR&gt;必見です！&lt;BR&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=244710" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/mocchi/commentrss.aspx?PostID=244710</wfw:commentRss></entry><entry><title>C++ でdelegate っぽいものを作ってみた</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/mocchi/archive/2005/03/07/237824.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:237824</id><created>2005-03-07T11:28:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;ノンマネージなC++でもdelegateが使えると便利なような気がするので，&lt;BR&gt;いろいろ考えて作ってみました．ただし，今回作ったdelegateもどきは，&lt;BR&gt;関数の引数の数が1つという制限があるため，2つ以上の引数を渡したいときは&lt;BR&gt;構造体などを利用する必要があります．使い方はこんな感じです．&lt;BR&gt;&lt;BR&gt;#include "delegate.h"&lt;BR&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/P&gt;
&lt;P&gt;struct HogeHoge{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int i, j;&lt;BR&gt;};&lt;/P&gt;
&lt;P&gt;void func1(HogeHoge hh){&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("func1 : %d, %d\n", hh.i, hh.j);&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;void func2(HogeHoge hh){&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("func2 : %d\n", hh.i * hh.j);&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;class Hoge{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int v;&lt;BR&gt;public:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Hoge(int v){&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this-&amp;gt;v = v;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; void func3(HogeHoge hh){&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("Hoge::func3 : %d\n", hh.i * hh.j * v);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;};&lt;/P&gt;
&lt;P&gt;inline HogeHoge CreateHogeHoge(int i, int j){&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HogeHoge hh={i,j};&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return hh;&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;int main(void){&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Delegate&amp;lt;HogeHoge&amp;gt; del;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Hoge hoge(9);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; del += Delegate&amp;lt;HogeHoge&amp;gt;::DelegateFunc(func1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; del += Delegate&amp;lt;HogeHoge&amp;gt;::DelegateFunc(func2);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; del += Delegate&amp;lt;HogeHoge&amp;gt;::DelegateFunc&amp;lt;Hoge&amp;gt;(&amp;amp;hoge, &amp;amp;Hoge::func3);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; del(CreateHogeHoge(1,2));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; del(CreateHogeHoge(3,4));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; del -= Delegate&amp;lt;HogeHoge&amp;gt;::DelegateFunc(func2);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; del(CreateHogeHoge(2,3));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; del -= Delegate&amp;lt;HogeHoge&amp;gt;::DelegateFunc&amp;lt;Hoge&amp;gt;(&amp;amp;hoge, &amp;amp;Hoge::func3);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; del(CreateHogeHoge(3,5));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; getchar();&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;Delegateオブジェクトの関数の引数の型は，Delegate&amp;lt;&amp;gt;の&amp;lt;&amp;gt;の部分で指定します．&lt;BR&gt;上の例ではHogeHoge構造体を引数にとる関数を持つことができるDelegate という&lt;BR&gt;ことになります．&lt;BR&gt;&lt;BR&gt;DelegateFunc は，Delegateオブジェクトを作成するための関数です．&lt;BR&gt;たとえば，&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; del += Delegate&amp;lt;HogeHoge&amp;gt;::DelegateFunc(func2);&lt;BR&gt;は，&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Delegate d(func2)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; del += d;&lt;BR&gt;と同じ意味です．&lt;BR&gt;&lt;BR&gt;&lt;A target="_blank" href="http://www.thespoke.net/MySpace/GetFile.aspx?ID=824" target=_blank&gt;ソースはこちらです．興味のあるかたはどうぞご覧ください．&lt;BR&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=237824" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/mocchi/commentrss.aspx?PostID=237824</wfw:commentRss></entry><entry><title>危ない家族計画をC++で解いてみた</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/mocchi/archive/2005/02/21/236615.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:236615</id><created>2005-02-21T17:17:00Z</created><content type="text/html" mode="escaped">C++＆ＳＴＬの練習を兼ねて、&lt;A target="_blank" href="/MyBlog/SiroKuro/MyBlog_Comments.aspx?ID=25949" target=_blank&gt;Sirokuroさんが出している問題&lt;/A&gt;に挑戦してみました。&lt;BR&gt;&lt;BR&gt;岸に誰がいるかを multimapを使って、ある瞬間のそれぞれの岸の状態や人間をstringであらわしてみました。&lt;BR&gt;岸の状態は↓のような感じ&lt;BR&gt;0T : 犬 息子 息子 父 母 娘 娘 ﾒｲﾄﾞ 船|川|&lt;BR&gt;&lt;BR&gt;これは0ターン目に左側の岸に犬が1匹と息子2人、娘2人、母、父、メイドがいて、&lt;BR&gt;船は川の左側にある状態を表してます。この船の位置が結構ポイントでした&lt;BR&gt;&lt;BR&gt;(一応期限が過ぎちゃったみたいですが、もうソース載っけちゃってもいいんでしょうか？)&lt;BR&gt;&lt;BR&gt;追記&lt;BR&gt;&lt;A target="_blank" href="/BlogReader/SingleEntry.aspx?ID=26663" target=_blank&gt;Sirokuroさん&lt;/A&gt;、&lt;A target="_blank" href="/MyBlog/SYUN/MyBlog_Comments.aspx?ID=26617" target=_blank&gt;SYUNさん&lt;/A&gt;ともにソースを公開したようですので、僕も公開します。&lt;BR&gt;&lt;FONT color=#808080&gt;こちらが&lt;/FONT&gt;&lt;A target="_blank" href="http://www.thespoke.net/MySpace/GetFile.aspx?ID=721" target=_blank&gt;&lt;FONT color=#808080&gt;ソース&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#808080&gt;です&lt;/FONT&gt;&lt;BR&gt;&lt;FONT color=#ff0000&gt;&lt;FONT size=4&gt;[重要!!]&lt;/FONT&gt;↑ごめんなさい。失敗作の方をアップしてしまいました。orz&lt;BR&gt;&lt;/FONT&gt;正解まで無事たどりついたのは&lt;A target="_blank" href="http://www.thespoke.net/MySpace/GetFile.aspx?ID=722"&gt;こちらのソース&lt;/A&gt;です。&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;実行すると、ズラーっと途中経過を表す文字列を出力します。問題が解けると、&lt;BR&gt;うまくいったパターンのログを出力して、getchar()で処理が中断されます。&lt;BR&gt;ログは↓のような感じです。&lt;BR&gt;*********** achieve!! **********&lt;BR&gt;0T : 犬 息子 息子 父 母 娘 娘 ﾒｲﾄﾞ 船|川|&lt;BR&gt;&amp;nbsp;&amp;lt;ﾒｲﾄﾞ,犬&amp;gt;→&lt;BR&gt;1T : 息子 息子 父 母 娘 娘 |川|船 犬 ﾒｲﾄﾞ&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;lt;ﾒｲﾄﾞ&amp;gt;&lt;BR&gt;2T : 息子 息子 父 母 娘 娘 ﾒｲﾄﾞ 船|川| 犬&lt;BR&gt;&amp;nbsp;&amp;lt;ﾒｲﾄﾞ,息子&amp;gt;→&lt;BR&gt;3T : 息子 父 母 娘 娘 |川|船 犬 息子 ﾒｲﾄﾞ&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;lt;ﾒｲﾄﾞ,犬&amp;gt;&lt;BR&gt;4T : 犬 息子 父 母 娘 娘 ﾒｲﾄﾞ 船|川| 息子&lt;BR&gt;&amp;nbsp;&amp;lt;父,息子&amp;gt;→&lt;BR&gt;5T : 犬 母 娘 娘 ﾒｲﾄﾞ |川|船 息子 息子 父&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;lt;父&amp;gt;&lt;BR&gt;6T : 犬 父 母 娘 娘 ﾒｲﾄﾞ 船|川| 息子 息子&lt;BR&gt;&amp;nbsp;&amp;lt;父,母&amp;gt;→&lt;BR&gt;7T : 犬 娘 娘 ﾒｲﾄﾞ |川|船 息子 息子 父 母&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;lt;母&amp;gt;&lt;BR&gt;8T : 犬 母 娘 娘 ﾒｲﾄﾞ 船|川| 息子 息子 父&lt;BR&gt;&amp;nbsp;&amp;lt;ﾒｲﾄﾞ,犬&amp;gt;→&lt;BR&gt;9T : 母 娘 娘 |川|船 犬 息子 息子 父 ﾒｲﾄﾞ&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;lt;父&amp;gt;&lt;BR&gt;10T : 父 母 娘 娘 船|川| 犬 息子 息子 ﾒｲﾄﾞ&lt;BR&gt;&amp;nbsp;&amp;lt;父,母&amp;gt;→&lt;BR&gt;11T : 娘 娘 |川|船 犬 息子 息子 父 母 ﾒｲﾄﾞ&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;lt;母&amp;gt;&lt;BR&gt;12T : 母 娘 娘 船|川| 犬 息子 息子 父 ﾒｲﾄﾞ&lt;BR&gt;&amp;nbsp;&amp;lt;母,娘&amp;gt;→&lt;BR&gt;13T : 娘 |川|船 犬 息子 息子 父 母 娘 ﾒｲﾄﾞ&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;lt;ﾒｲﾄﾞ,犬&amp;gt;&lt;BR&gt;14T : 犬 娘 ﾒｲﾄﾞ 船|川| 息子 息子 父 母 娘&lt;BR&gt;&amp;nbsp;&amp;lt;ﾒｲﾄﾞ,娘&amp;gt;→&lt;BR&gt;15T : 犬 |川|船 息子 息子 父 母 娘 娘 ﾒｲﾄﾞ&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;lt;ﾒｲﾄﾞ&amp;gt;&lt;BR&gt;16T : 犬 ﾒｲﾄﾞ 船|川| 息子 息子 父 母 娘 娘&lt;BR&gt;&amp;nbsp;&amp;lt;ﾒｲﾄﾞ,犬&amp;gt;→&lt;BR&gt;17T : |川|船 犬 息子 息子 父 母 娘 娘 ﾒｲﾄﾞ&lt;BR&gt;&lt;BR&gt;0Tにメイドと犬が左岸から右岸に移動して、1Tにメイドだけが右岸から左岸に&lt;BR&gt;移動して、・・・といった感じで読みます。&lt;BR&gt;getchar()で中断しているだけなので、Enterを押すと、処理を続行して、他の&lt;BR&gt;パターンを調べ始めます。解は2つあるようなので、このようなログが2回出力さ&lt;BR&gt;れます。&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;↓載せようと思って忘れてました。こちらはまだ間に合います！&lt;BR&gt;&lt;FONT size=1&gt;━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━&lt;BR&gt;『 &lt;/FONT&gt;&lt;A target="_blank" href="/MyBlog/SiroKuro/MyBlog_Comments.aspx?ID=23893" target=_blank&gt;&lt;FONT size=1&gt;第２回 VisualGaming&amp;nbsp;スモールコンペティション&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=1&gt; 』 開催中!!　　企画者: &lt;/FONT&gt;&lt;A target="_blank" href="/Profile/Profile_ViewProfile.aspx?userid=2061398" target=_blank&gt;&lt;FONT size=1&gt;Sirokuro&lt;/FONT&gt;&lt;/A&gt;&lt;BR&gt;&lt;FONT size=1&gt;２月末締め切り　豪華賞品有り　どなたでも参加できますので奮ってご参加あれ&lt;BR&gt;━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━&lt;BR&gt;&lt;/FONT&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=236615" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/mocchi/commentrss.aspx?PostID=236615</wfw:commentRss></entry><entry><title>悲しいとき~</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/mocchi/archive/2005/01/22/233866.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:233866</id><created>2005-01-22T09:25:00Z</created><content type="text/html" mode="escaped">自分で自分のサイトのキリバンを踏んでしまったとき~・・・&lt;BR&gt;&lt;IMG src="http://www.thespoke.net/MySpace/GetFile.aspx?ID=476" border=0&gt;&lt;BR&gt;&lt;BR&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=233866" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/mocchi/commentrss.aspx?PostID=233866</wfw:commentRss></entry><entry><title>年賀状を書き、ポストに投函した。しかし・・・</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/mocchi/archive/2005/01/13/230765.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:230765</id><created>2005-01-13T18:23:00Z</created><content type="text/html" mode="escaped">書き損じた年賀状がどこを探しても見つからない・・・&lt;BR&gt;&lt;BR&gt;もしかして・・・&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;orz&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;追記：&lt;BR&gt;友達から、年賀状が届いた。そこには、僕からの年賀状が2通届いたよと書いてあった。。。&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;FONT size=5&gt;orz&lt;BR&gt;&lt;/FONT&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=230765" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/mocchi/commentrss.aspx?PostID=230765</wfw:commentRss></entry><entry><title>VisualGaming のリプレイ</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/mocchi/archive/2004/11/22/227090.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:227090</id><created>2004-11-22T08:52:00Z</created><content type="text/html" mode="escaped">何人かの方が作戦の漏洩を恐れずにリプレイを公開なさってるので、&lt;BR&gt;僕も思い切って公開してみます。&lt;BR&gt;2205点です。&lt;BR&gt;&lt;BR&gt;&lt;FONT size=1&gt;&lt;A target="_blank" href="http://hp.vector.co.jp/authors/VA036390/NanoTeam_Mocchi_2205.ntr" pathAttribute="1"&gt;リプレイはこちら&lt;/A&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=227090" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/mocchi/commentrss.aspx?PostID=227090</wfw:commentRss></entry><entry><title>今日の質問　[Imagine Cup アルゴリズム部門]直径10cmの円のお皿を、直径150cmの円のテーブルの上に並べた場合～</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/mocchi/archive/2004/11/16/226522.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:226522</id><created>2004-11-16T16:18:00Z</created><content type="text/html" mode="escaped">今日の質問を解いて見ます。&lt;BR&gt;とりあえず、最も高密度に○を埋めるためには、蜂の巣状(大戦略のHEXみたいな感じ)に配置すればよいと&lt;BR&gt;思います。&lt;BR&gt;直径150cmの円内に埋めるので、中央から端までまっすぐに数えたときの円の枚数が7枚になるように&lt;BR&gt;並べると下のような感じになります。で、この枚数が(1+Σ_n=1^7(6n))=169枚となります(これを答えとして&lt;BR&gt;書いてしまいましたが、まだ埋まるスベースが端に残ってるみたいなので、さらに計算する必要がありそうです。)&lt;BR&gt;&lt;BR&gt;&lt;FONT face="ＭＳ ゴシック"&gt;&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; ○○○○○○○○○&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;&amp;nbsp;&amp;nbsp; ○○○○○○○○○○○○&lt;BR&gt;&amp;nbsp; ○○○○○○○○○○○○○&lt;BR&gt;&amp;nbsp;○○○○○○○○○○○○○○&lt;BR&gt;○○○○○○○●○○○○○○○&lt;BR&gt;&amp;nbsp;○○○○○○○○○○○○○○&lt;BR&gt;&amp;nbsp; ○○○○○○○○○○○○○&lt;BR&gt;&amp;nbsp;&amp;nbsp; ○○○○○○○○○○○○&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;&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; ○○○○○○○○&lt;BR&gt;&lt;BR&gt;&lt;FONT face="ＭＳ Ｐゴシック"&gt;ということでまだ解けてません。少なくとも1辺につき1個は入りそうなので、総数は175個以上と&lt;BR&gt;なりそうです。解けたら更新します。&lt;BR&gt;&lt;BR&gt;
&lt;HR&gt;
続き(間違ってたらばしばし指摘してください。)&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="ＭＳ ゴシック"&gt;&amp;nbsp;◎&lt;BR&gt;○○&lt;BR&gt;&amp;nbsp;●&lt;BR&gt;&lt;FONT face="ＭＳ Ｐゴシック"&gt;まず、●と◎の中点間の距離を求めます。&lt;BR&gt;&amp;ang;&lt;FONT face="ＭＳ ゴシック"&gt;◎○●=120度で、○から水平方向に線を引くと&lt;BR&gt;　　◎&lt;BR&gt;　／｜&lt;BR&gt;○－・&lt;BR&gt;こんな感じの直角三角形が2つできます。&lt;BR&gt;&lt;FONT face="ＭＳ Ｐゴシック"&gt;&amp;ang;&lt;/FONT&gt;◎○・=60度 なので、&lt;BR&gt;・-○:◎-○:◎-・=1:2:sqrt(3)となり、&lt;BR&gt;○-◎=10 なので◎-・=5sqrt(3)となります。&lt;BR&gt;よって、●の中点-◎の中点の距離は10sqrt(3)です。&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&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;■◎■&lt;BR&gt;&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; ○○○○○○○○○&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;&amp;nbsp;&amp;nbsp; ○○○○○○○○○○○○&lt;BR&gt;&amp;nbsp; ○○○○○○○○○○○○○&lt;BR&gt;&amp;nbsp;○○○○○○○○○○○○○○&lt;BR&gt;○○○○○○○●○○○○○○○&lt;BR&gt;&lt;BR&gt;この図の◎がテーブルの中におさまるかを考えます。&lt;BR&gt;この図の●中点-◎中点の距離は40sqrt(3)=69.2…です。&lt;BR&gt;よって、直線●-◎と、◎の接点のうち、●から遠い点と●の中点との距離は&lt;BR&gt;40sqrt(3)+5=74.2…となり、半径75cmのテーブルの中におさまります。&lt;BR&gt;さらに、■がテーブルの中におさまるかどうかを考えます。&lt;BR&gt;■◎●で作られる三角形が直角三角形になるので、&lt;BR&gt;■-◎=10, ◎-●=40sqrt(3) から、&lt;BR&gt;(■-●)^2=10^2+(40sqrt(3))^2=4900 ということで、&lt;BR&gt;■-●=70 となります。&lt;BR&gt;よって、直線■-●と、■の2つの接点のうち、●から遠い点と●の中点との距離は&lt;BR&gt;75 となり、テーブルの淵と■がちょうど接することになります。&lt;BR&gt;つまり、これ以上外側にはおけません。&lt;BR&gt;このことから、6角形の1辺につき、さらに3枚分ずつおくことができるということになるので、&lt;BR&gt;169+3*6=187枚おける、となります。&lt;BR&gt;
&lt;HR&gt;
さらに続き&lt;BR&gt;&lt;BR&gt;絵を描いてみました．&lt;BR&gt;http://www.geocities.jp/mocchi_2003/circle150.pdf&lt;BR&gt;ページの下の方にちょこっと描いてあります。少しずれてしまっているのが惜しいのですが・・・&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=226522" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/mocchi/commentrss.aspx?PostID=226522</wfw:commentRss></entry><entry><title>今日の質問の解き方</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/mocchi/archive/2004/11/11/226206.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:226206</id><created>2004-11-11T09:13:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;今日の質問：8&amp;times;8マスのチェス版でランダムに2つのマスを選んだときに、その2つのマスが隣り合わせである確率は？&lt;BR&gt;を僕が解いた方法です．ネタバレになる可能性がありますので，まだ解いてない方はご注意ください．&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;(ネタバレガード用空白です．)&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;隣り合わせは，横方向と縦方向だけと考える場合と，斜め方向も含むと考える場合の両方について解を出してみたいと思います．(本番でこのままで問題を出された場合は斜め方向も含むのが正解のような気がします)&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;8x8のマスのうち2つを選ぶ組み合わせ・・・64C2=64*63/2=32*63=2016&lt;BR&gt;これが分母になります．&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;8x8のマスのうち隣り合わせの2つのマスを選ぶ組み合わせ&lt;BR&gt;・横に隣り合わせ・・・7*8=56&lt;BR&gt;・縦に隣り合わせ・・・7*8=56&lt;BR&gt;・＼に隣り合わせ・・・7*7=49&lt;BR&gt;・／に隣り合わせ・・・7*7=49&lt;BR&gt;斜めを含んだ和は210，含まない和は112です．&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;斜めを含んだ解は&lt;BR&gt;210/2016=(2*105)/(2^5*21*3)=(2*21*5)/(2^5*21*3)=5/(2^4*3)=5/48&lt;BR&gt;含まない解は&lt;BR&gt;112/2016=(2^4*7)/(2^5*21*3)=1/(2*3*3)=1/18&lt;BR&gt;&lt;BR&gt;となります．&lt;BR&gt;&lt;/P&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=226206" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/mocchi/commentrss.aspx?PostID=226206</wfw:commentRss></entry><entry><title>ヤギか車か</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/mocchi/archive/2004/10/12/223614.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:223614</id><created>2004-10-12T15:43:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;hagisanさんのブログで解説されているヤギか車かの問題をさきほど拝見したのですが，&lt;BR&gt;自分が考えた答えと違っていたので，自分を納得させるためにCでシミュレーションしてみました．&lt;BR&gt;私は移動するときは 1/2，移動しないときは 1/3&amp;nbsp;になると考えました．&lt;BR&gt;&lt;BR&gt;下のソースを走らせて見てください．(一応C++です．enumのところを少し変えるだけでCでも走ると思います．)&lt;BR&gt;&lt;BR&gt;TRIAL_COUNT　回の試行を行い，正解の場合はvote_seikaiに，&lt;BR&gt;不正解の場合は vote_hazure にそれぞれ投票します．&lt;BR&gt;その数の割合から確率が求まると思います．&lt;BR&gt;#define MOVE の行をコメントアウトすると，ドアを変えないバージョンに変わります．&lt;BR&gt;&lt;BR&gt;結果は・・・&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;正解: 66658, 不正解: 33342　となりました．&lt;BR&gt;確かに正解率ほぼ 2/3になりました．&lt;BR&gt;&lt;BR&gt;ちなみに，#define MOVE　の行をコメントアウトすると，&lt;BR&gt;正解: 33685, 不正解: 66315　となりました．&lt;BR&gt;&lt;BR&gt;#include &amp;lt;math.h&amp;gt;&lt;BR&gt;#include &amp;lt;stdio.h&amp;gt;&lt;BR&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;BR&gt;#include &amp;lt;windows.h&amp;gt;&lt;/P&gt;
&lt;P&gt;#define MOVE&lt;/P&gt;
&lt;P&gt;int vote_seikai, vote_hazure;&lt;/P&gt;
&lt;P&gt;#define TRIAL_COUNT&amp;nbsp;100000&amp;nbsp;//試行回数&lt;/P&gt;
&lt;P&gt;enum Door{LEFT = -1, DOOR_1 = 0, DOOR_2 = 1, DOOR_3 = 2, RIGHT = 3};&lt;/P&gt;
&lt;P&gt;int main(void){&lt;BR&gt;&amp;nbsp;Door seikai, select_challenger1, select_challenger2, select_sikai;&lt;BR&gt;&amp;nbsp;int i;&lt;BR&gt;&amp;nbsp;vote_seikai = 0;&lt;BR&gt;&amp;nbsp;vote_hazure = 0;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;srand(timeGetTime());&lt;BR&gt;&amp;nbsp;for (i = 0; i &amp;lt; TRIAL_COUNT; i++){&lt;BR&gt;&amp;nbsp;&amp;nbsp;for(;;){&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// あらかじめ正解を選ぶ&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;seikai = (Door)floor(rand() * 3.0 / (double)RAND_MAX);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (seikai == RIGHT) continue; //ごく稀に出るのでこれがでたときはやり直し&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;// 挑戦者がドアを選ぶ&lt;BR&gt;&amp;nbsp;&amp;nbsp;for(;;){&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;select_challenger1 = (Door)floor(rand() * 3.0 / (double)RAND_MAX);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (select_challenger1 == RIGHT) continue; //ごく稀に出るのでこれがでたときはやり直し&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;// 司会者がはずれを選ぶ&lt;BR&gt;&amp;nbsp;&amp;nbsp;if (select_challenger1 == seikai){&amp;nbsp;//正解のときは残りのどちらともはずれ&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;int tmp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//司会者は気まぐれで反応する&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(;;){&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmp = (int)floor(rand() * 2.0 / (double)RAND_MAX);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (tmp == 2) continue;&amp;nbsp;//ごく稀に出るのでこれがでたときはやり直し&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (tmp == 0) tmp = -1;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;select_sikai = (Door)(select_challenger1 + tmp);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (select_sikai == LEFT) select_sikai = DOOR_3;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if(select_sikai == RIGHT) select_sikai = DOOR_1;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}else{&amp;nbsp;//はずれのときは必ずどれかに決まる&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if ((seikai == DOOR_1 &amp;amp;&amp;amp; select_challenger1 == DOOR_2) ||&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(seikai == DOOR_2 &amp;amp;&amp;amp; select_challenger1 == DOOR_1)){&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;select_sikai = DOOR_3;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}else if(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(seikai == DOOR_1 &amp;amp;&amp;amp; select_challenger1 == DOOR_3) ||&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(seikai == DOOR_3 &amp;amp;&amp;amp; select_challenger1 == DOOR_1)){&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;select_sikai = DOOR_2;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}else if(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(seikai == DOOR_2 &amp;amp;&amp;amp; select_challenger1 == DOOR_3) ||&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(seikai == DOOR_3 &amp;amp;&amp;amp; select_challenger1 == DOOR_2)){&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;select_sikai = DOOR_1;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}else{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf("挑戦者1: %d, 司会者: %d, 正解: %d\n",&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;select_challenger1, select_sikai, seikai);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf("えらー1\n");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;getchar();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;#ifdef MOVE&lt;BR&gt;&amp;nbsp;&amp;nbsp;if (i == 0) printf("移動します\n");&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;// 挑戦者は移動する／しない&lt;BR&gt;&amp;nbsp;&amp;nbsp;// するルーチン&lt;BR&gt;&amp;nbsp;&amp;nbsp;if ((select_sikai == DOOR_1 &amp;amp;&amp;amp; select_challenger1 == DOOR_2) ||&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;(select_sikai == DOOR_2 &amp;amp;&amp;amp; select_challenger1 == DOOR_1)){&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;select_challenger2 = DOOR_3;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}else if (&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;(select_sikai == DOOR_1 &amp;amp;&amp;amp; select_challenger1 == DOOR_3) ||&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;(select_sikai == DOOR_3 &amp;amp;&amp;amp; select_challenger1 == DOOR_1)){&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;select_challenger2 = DOOR_2;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}else if (&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;(select_sikai == DOOR_2 &amp;amp;&amp;amp; select_challenger1 == DOOR_3) ||&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;(select_sikai == DOOR_3 &amp;amp;&amp;amp; select_challenger1 == DOOR_2)){&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;select_challenger2 = DOOR_1;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}else{&lt;BR&gt;&amp;nbsp;&amp;nbsp;printf("挑戦者1: %d, 司会者: %d, 挑戦者2: %d, 正解: %d\n",&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;select_challenger1, select_sikai, select_challenger2, seikai);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf("えらー2\n");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;getchar();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;#else&lt;BR&gt;&amp;nbsp;&amp;nbsp;if (i == 0) printf("移動しません\n");&lt;BR&gt;&amp;nbsp;&amp;nbsp;// しないルーチン&lt;BR&gt;&amp;nbsp;&amp;nbsp;select_challenger2 = select_challenger1;&lt;BR&gt;#endif&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;// 正解の判定，投票&lt;BR&gt;&amp;nbsp;&amp;nbsp;if (select_challenger2 == seikai){&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;vote_seikai++;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}else{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;vote_hazure++;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;// 状況表示&lt;BR&gt;&amp;nbsp;&amp;nbsp;if ((i % (TRIAL_COUNT / 100)) == 0){&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf("No.%d : 正解: %d, 不正解: %d\n", i, vote_seikai, vote_hazure);&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;/*&lt;BR&gt;&amp;nbsp;&amp;nbsp;//デバッグ&lt;BR&gt;&amp;nbsp;&amp;nbsp;printf("挑戦者1: %d, 司会者: %d, 挑戦者2: %d, 正解: %d\n",&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;select_challenger1, select_sikai, select_challenger2, seikai);&lt;BR&gt;&amp;nbsp;&amp;nbsp;getchar();&lt;BR&gt;&amp;nbsp;&amp;nbsp;*/&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;printf("正解: %d, 不正解: %d\n", vote_seikai, vote_hazure);&lt;BR&gt;&amp;nbsp;return 0;&lt;BR&gt;}&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=223614" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/mocchi/commentrss.aspx?PostID=223614</wfw:commentRss></entry><entry><title>日記のようなもの</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/mocchi/archive/2004/10/12/223594.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:223594</id><created>2004-10-12T12:27:00Z</created><content type="text/html" mode="escaped">キャンパス内の至るところにキンモクセイが植えられているため，&lt;BR&gt;毎年この頃になると，うちのキャンパス内はその香りで埋め尽くされる．&lt;BR&gt;誰であったかは忘れてしまったが，知り合いの誰かにキンモクセイの香りが&lt;BR&gt;苦手だった人がいたような気がする．室内にいてもにおってくるほどだから，&lt;BR&gt;きっとその人は活きた心地がしないだろう．&lt;BR&gt;&lt;BR&gt;少し小腹が空いたので，いつものように大学のすぐ近くにあるスーパーにおやつを&lt;BR&gt;買いに行った．某アイスクリームがキャンペーン中で10個食べるともれなく何かを貰える&lt;BR&gt;らしいので，それを目当てにしていたのだが，入り口近くで焼いていた焼き鳥にも惹かれて&lt;BR&gt;しまった．どうしようか少し迷った結果，両方買うことにした．&lt;BR&gt;店内でアイスを買ってさっきの焼き鳥屋台を見てみると，焼き鳥とみたらし団子と五平餅を&lt;BR&gt;売っていた．量を見て，五平餅も捨てがたいと思ったが，他のものは大体100円なのに対して&lt;BR&gt;なぜかそれだけ200円で，他のものより少し高い．しばらく悩んでいたら，店のおっちゃんが&lt;BR&gt;「25周年特別セールで五平餅100円！」といっていた．&lt;BR&gt;&lt;BR&gt;&lt;FONT size=3&gt;即決．&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;しかしだったら，初めから100円と書いておけばよかったのに．&lt;BR&gt;いや待てよ？確かその200円と書いてあった値札の上に，しっかりと25周年，て書いてあったような気が．&lt;BR&gt;それで200円と書き間違えるはずがない．値札もマジックでさくっと書いたようなものではなくて，&lt;BR&gt;店内の値札みたいにちゃんとポップになってたし・・・&lt;BR&gt;&lt;BR&gt;ハッ（ﾟДﾟ:）もしや，心の中を読まれた？&lt;BR&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=223594" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/mocchi/commentrss.aspx?PostID=223594</wfw:commentRss></entry></feed>