<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>神は細部に宿り給う &#187; Ruby</title>
	<atom:link href="http://tkido.com/blog/tag/ruby/feed" rel="self" type="application/rss+xml" />
	<link>http://tkido.com/blog</link>
	<description>ゲーム・Web・情報通信・プログラミング・政治・経済・社会・科学・哲学・その他諸々なんでも思いつくままに書いていきます。</description>
	<lastBuildDate>Sat, 31 Jul 2010 08:25:52 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>ダンバー数（の話から始まったグラフ理論）パズル進化的アルゴリズム版</title>
		<link>http://tkido.com/blog/2701.html</link>
		<comments>http://tkido.com/blog/2701.html#comments</comments>
		<pubDate>Sun, 08 Nov 2009 13:08:05 +0000</pubDate>
		<dc:creator>木戸孝紀</dc:creator>
				<category><![CDATA[WEB情報通信]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[パズル]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[数学]]></category>

		<guid isPermaLink="false">http://tkido.com/blog/?p=2701</guid>
		<description><![CDATA[



レヴィ=ストロース鎮魂のため数学野郎にお願い（追記アリ &#8211; 地下生活者の手遊び
数学野郎どもアリガトウ &#8211; 地下生活者の手遊び


　一昨日のパズル。もう終わっちゃってるけど、乱数でのゴリ [...]]]></description>
			<content:encoded><![CDATA[<p>
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873113946/mebiusproject-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41CGDEMgyoL._SL160_.jpg" alt="プログラミング言語 Ruby" style="border: 1px solid black;" /></a>
</p>
<ul>
<li><a href="http://d.hatena.ne.jp/tikani_nemuru_M/20091104/1257322803" target="_blank">レヴィ=ストロース鎮魂のため数学野郎にお願い（追記アリ &#8211; 地下生活者の手遊び</a></li>
<li><a href="http://d.hatena.ne.jp/tikani_nemuru_M/20091107/1257530920" target="_blank">数学野郎どもアリガトウ &#8211; 地下生活者の手遊び</a></li>
</ul>
<p>
　<a href="http://tkido.com/blog/2687.html" target="_blank">一昨日のパズル</a>。もう終わっちゃってるけど、乱数でのゴリ押しだけでは芸がなさ過ぎるでしょう常識的に考えて……ということで、ちょっと改良した。
</p>
<ul>
<li><a href="http://tkido.com/data/2009/11/dunber2.rb" target="_blank">dunber2.rb</a></li>
</ul>
<p>
　互いに行き着けないノードの数をスコア（当然低い方が良い）として、ステップごとに上位1/4だけ残してそれを4倍に複製。二本のエッジをちょん切ってつなぎ替える。
</p>
<p>
　N=4で15個の解はわりとすんなり見つけられるようになった。
</p>
<pre><code>
15個のノード。
30本のエッジ。
0のスコア。
0:[9, 12, 5, 8]
1:[3, 9, 11, 6]
2:[5, 11, 13, 12]
3:[1, 5, 10, 13]
4:[7, 5, 14, 6]
5:[2, 4, 3, 0]
6:[14, 12, 1, 4]
7:[4, 11, 9, 10]
8:[10, 14, 11, 0]
9:[13, 0, 7, 1]
10:[8, 12, 7, 3]
11:[2, 7, 1, 8]
12:[6, 10, 0, 2]
13:[9, 14, 2, 3]
14:[6, 13, 8, 4]
</code></pre>
<p>
　まだやってないけど、パラメータ設定とかける時間次第ではN=5もいけるかもしれん。
</p>
<h3>11/9追記</h3>
<p>
　ちょっと時間かかったけどN=5で24個いけた。populationは800に設定。
</p>
<pre><code>
24個のノード。
60本のエッジ。
0のスコア。
0:[6, 11, 7, 16, 13]
1:[15, 3, 13, 4, 18]
2:[6, 5, 14, 3, 23]
3:[1, 7, 20, 2, 11]
4:[19, 13, 17, 1, 5]
5:[2, 16, 4, 12, 10]
6:[2, 0, 23, 15, 19]
7:[17, 21, 0, 3, 10]
8:[12, 10, 23, 13, 20]
9:[14, 20, 17, 15, 16]
10:[8, 22, 15, 7, 5]
11:[12, 0, 22, 3, 17]
12:[8, 11, 21, 15, 5]
13:[14, 4, 1, 8, 0]
14:[13, 9, 21, 2, 22]
15:[1, 6, 9, 12, 10]
16:[20, 0, 5, 18, 9]
17:[23, 7, 4, 9, 11]
18:[23, 21, 1, 22, 16]
19:[20, 22, 4, 6, 21]
20:[19, 16, 9, 3, 8]
21:[7, 18, 14, 12, 19]
22:[19, 10, 11, 14, 18]
23:[18, 17, 8, 6, 2]
</code></pre>
<h3>おまけ</h3>
<p>
　<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B002M77O1W/mebiusproject-22/ref=nosim/" target="_blank">もうすぐCDが出る</a>らしい。<br />
<iframe width="312" height="176" src="http://ext.nicovideo.jp/thumb/sm4605498" scrolling="no" style="border:solid 1px #CCC;" frameborder="0"><a href="http://www.nicovideo.jp/watch/sm4605498">【ニコニコ動画】【つきうさぎ】ゆきさんのPVにほんこーんさんの歌をあわせてみた Ver2</a></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://tkido.com/blog/2701.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ダンバー数パズル</title>
		<link>http://tkido.com/blog/2687.html</link>
		<comments>http://tkido.com/blog/2687.html#comments</comments>
		<pubDate>Thu, 05 Nov 2009 15:46:37 +0000</pubDate>
		<dc:creator>木戸孝紀</dc:creator>
				<category><![CDATA[WEB情報通信]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[パズル]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[数学]]></category>

		<guid isPermaLink="false">http://tkido.com/blog/?p=2687</guid>
		<description><![CDATA[



レヴィ=ストロース鎮魂のため数学野郎にお願い &#8211; 地下生活者の手遊び


　ううむ、地下猫さんが『科学がきらわれる理由』をおすすめされた背景では、そんなこと考えていたのか。これはちょっと予想外だった。 [...]]]></description>
			<content:encoded><![CDATA[<p>
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4791755545/mebiusproject-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41G04228ZFL._SL160_.jpg" alt="科学がきらわれる理由" style="border: 1px solid black;" /></a>
</p>
<ul>
<li><a href="http://d.hatena.ne.jp/tikani_nemuru_M/20091104/1257322803" target="_blank">レヴィ=ストロース鎮魂のため数学野郎にお願い &#8211; 地下生活者の手遊び</a></li>
</ul>
<p>
　ううむ、地下猫さんが『科学がきらわれる理由』をおすすめされた背景では、そんなこと考えていたのか。これはちょっと予想外だった。
</p>
<p>
　確かに『科学がきらわれる理由』は素晴らしい本だが、ダンバー数自体は<strong>「まあそりゃ限度のある要素の集まりには何かしらの限界はあるだろうねえ」</strong>ぐらいの受け取り方をしておけばいいものだろう。
</p>
<p>
　少なくとも現時点で、具体的にその数に何かがある・その数から何かが言えると考えるのは、<a href="http://ja.wikipedia.org/wiki/%E7%99%BE%E5%8C%B9%E7%9B%AE%E3%81%AE%E7%8C%BF%E7%8F%BE%E8%B1%A1" target="_blank">百匹目の猿現象</a>みたいな純然たるオカルトとは異なるものの、<a href="http://ja.wikipedia.org/wiki/%E5%85%AD%E6%AC%A1%E3%81%AE%E9%9A%94%E3%81%9F%E3%82%8A" target="_blank">六次の隔たり</a>レベルの通俗科学でしかないと思うなあ。
</p>
<p>
　まあそれはそれとして、
</p>
<blockquote>
<p>
平面上にいくつかの点がある。点と点が線で結ばれている。１本任意の１点から出ている線の数はＮ。任意の２点を取り出すと、その２点は直接、あるいは、別の１点を経由してつながっている。このような状況が可能な点の個数の最大値は？
</p>
</blockquote>
<p>
　という問題そのものには久々にパズル欲が刺激された……と言いたいところだけど、こりゃパズルってレベルじゃねーぞ！
</p>
<p>
　直感で根拠はないが、M、Nが一般の場合の解を求めるのは、数学上の未解決問題ではないかと思う。具体的な数にしたってN = 150なんてとてもとても。
</p>
<p>
　かと言って、一応数学野郎・プログラム野郎の端くれのつもりなのに手も足も出ずに終わるのは悔しいので、小さい数ぐらいでなら遊べるように、ゴリ押しで解を探すスクリプトを書いた。
</p>
<ul>
<li><a href="http://tkido.com/data/2009/11/dunber.rb" target="_blank">dunber.rb</a></li>
</ul>
<p>
　見つからないと延々と探し続けるので、諦めるときはCtrl+Cで止めて下さい。（実行できる人なら止め方も知ってると思うけど。）
</p>
<p>
　N = 3の時の最大個数は10のようだ。理論上 N^2+1 を上回ることはありえないのでN = 3については解決。
</p>
<pre><code>
10個のノード。
15本のエッジ。
[0, 1, 2, 7]
[1, 0, 9, 6]
[2, 0, 5, 3]
[3, 2, 8, 6]
[4, 6, 5, 7]
[5, 2, 4, 9]
[6, 1, 3, 4]
[7, 0, 4, 8]
[8, 3, 7, 9]
[9, 1, 5, 8]
</code></pre>
<p>
　N = 4の時は13まで、
</p>
<pre><code>
13個のノード。
26本のエッジ。
[0, 6, 11, 9, 4]
[1, 6, 11, 12, 10]
[2, 8, 11, 6, 4]
[3, 5, 4, 7, 12]
[4, 0, 2, 3, 12]
[5, 3, 8, 6, 7]
[6, 0, 1, 2, 5]
[7, 3, 5, 11, 9]
[8, 2, 5, 10, 9]
[9, 0, 7, 8, 10]
[10, 1, 8, 9, 12]
[11, 0, 1, 2, 7]
[12, 1, 3, 4, 10]
</code></pre>
<p>
　N = 5の時は16まで、
</p>
<pre><code>
16個のノード。
40本のエッジ。
[0, 5, 10, 8, 9, 1]
[1, 3, 15, 11, 0, 14]
[2, 10, 12, 11, 4, 3]
[3, 10, 6, 1, 4, 2]
[4, 8, 3, 15, 9, 2]
[5, 15, 0, 7, 10, 14]
[6, 10, 3, 13, 7, 8]
[7, 15, 13, 5, 6, 12]
[8, 4, 0, 6, 14, 11]
[9, 15, 12, 4, 13, 0]
[10, 3, 6, 2, 0, 5]
[11, 2, 13, 14, 1, 8]
[12, 9, 2, 13, 14, 7]
[13, 6, 7, 9, 12, 11]
[14, 5, 12, 11, 8, 1]
[15, 9, 5, 1, 7, 4]
</code></pre>
<p>
　N = 6の時は20個まで発見。（まだあるかも。）（追記：N=4で14はあるみたい。（<a href="http://d.hatena.ne.jp/imo758/20091104" target="_blank">2009-11-04 &#8211; imo758の日記</a>）
</p>
<pre><code>
20個のノード。
59本のエッジ。
[0, 18, 1, 5, 8, 17, 13]
[1, 7, 0, 10, 4, 16, 14]
[2, 19, 16, 10, 5, 13, 6]
[3, 7, 9, 11, 19, 16, 13]
[4, 12, 18, 16, 19, 1, 11]
[5, 7, 8, 9, 18, 2, 0]
[6, 15, 10, 17, 2, 12, 9]
[7, 9, 3, 5, 1, 15, 17]
[8, 5, 12, 0, 11]
[9, 18, 7, 3, 5, 12, 6]
[10, 12, 15, 2, 6, 13, 1]
[11, 3, 19, 15, 4, 16, 8]
[12, 10, 4, 8, 6, 9, 14]
[13, 19, 10, 2, 18, 0, 3]
[14, 15, 18, 1, 12, 19, 17]
[15, 14, 17, 6, 7, 10, 11]
[16, 17, 2, 4, 1, 11, 3]
[17, 15, 16, 7, 6, 14, 0]
[18, 9, 0, 4, 5, 14, 13]
[19, 2, 4, 13, 11, 3, 14]
</code></pre>
<p>
　もちろん完全ランダムなので、見つからなくてもない証明にはならないが、見つかった解は正しい（はず）。
</p>
<h3>追記</h3>
<ul>
<li><a href="http://d.hatena.ne.jp/smoking186/20091106/1257485014" target="_blank">グラフ理論的言い換え &#8211; 186::Diary</a></li>
</ul>
<p>
　やっとまともにグラフ理論っぽい説明が来てくれた。面白い。
</p>
<p>
　N=4は15まであるのかよ。やはりN=4で早くもゴリ押しは通用しなくなるみたいだな。まあ今回はN=3の10を見つけるスクリプトがさっと書けたのと、一般には未解決だろうと一目で当たりがつけられたということで個人的には満足しておこう。
</p>
<h3>おまけ</h3>
<p>
　プログラミングつながり。これは楽しい。<br />
<iframe width="312" height="176" src="http://ext.nicovideo.jp/thumb/sm8517855" scrolling="no" style="border:solid 1px #CCC;" frameborder="0"><a href="http://www.nicovideo.jp/watch/sm8517855">【ニコニコ動画】【プログラミング】テトリスを1時間強で作ってみた【実況解説】</a></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://tkido.com/blog/2687.html/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>3分アプリ筋トレメニュー表示</title>
		<link>http://tkido.com/blog/2672.html</link>
		<comments>http://tkido.com/blog/2672.html#comments</comments>
		<pubDate>Sat, 31 Oct 2009 05:47:06 +0000</pubDate>
		<dc:creator>木戸孝紀</dc:creator>
				<category><![CDATA[WEB情報通信]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[健康]]></category>
		<category><![CDATA[日記]]></category>

		<guid isPermaLink="false">http://tkido.com/blog/?p=2672</guid>
		<description><![CDATA[

　ふと思い立って作ったら、かかった時間の割に意外と効用があったので公開。


training.rb


#!/usr/local/bin/ruby
#-*- coding: Windows-31J -*-

SOU [...]]]></description>
			<content:encoded><![CDATA[<p>
<a href="http://tkido.com/blog/wp-content/uploads/2009/09/IMG_1498.JPG"><img src="http://tkido.com/blog/wp-content/uploads/2009/09/IMG_1498-200x150.jpg" alt="（本文とは無関係）" title="（本文とは無関係）" width="200" height="150" class="alignnone size-thumbnail wp-image-2671" /></a><br />
　ふと思い立って作ったら、かかった時間の割に意外と効用があったので公開。
</p>
<ul>
<li><a href="http://tkido.com/data/2009/10/training.rb" target="_blank">training.rb</a></li>
</ul>
<pre><code>
#!/usr/local/bin/ruby
#-*- coding: Windows-31J -*-

SOURCE = 'training.txt'

puts &quot;トレーニングを開始します。\n\n&quot;

File.open(SOURCE){|file|
  file.each do |line|
    line.chomp!
    next if line.size == 0

    print line
    gets
    puts &quot;...Done\n\n&quot;
  end
}

puts &quot;おつかれさまでした！！&quot;
</code></pre>
<ul>
<li><a href="http://tkido.com/data/2009/10/training.txt" target="_blank">training.txt</a></li>
</ul>
<pre><code>
スクワット足を閉じて　10
スクワット足を普通に開いて　10
スクワット足を大きく開いて　10

アレイ交互前上げ　10
アレイ上持ちあげ　10
アレイ背筋上げ　10

アレイ内上げ　10
アレイ前持ちあげ　10
アレイ横持ちあげ　10
アレイ後ろ持ちあげ　10

手を押しあう前で　10秒
手を引き合う前で　10秒

首を前から押す　10秒
首を後から押す　10秒
首を左から押す　10秒
首を右から押す　10秒

腹筋　10
背筋　10
腕立て　10

もも上げ　10
尻蹴り　10
足を横開き左　10
足を横開き右　10
</code></pre>
<p>
　こんなメニューを作っておけば一行ずつ表示してくれる。それだけのプログラム。
</p>
<p>
　ちょっとしたことなのだけど、単に表を見ながらやるより能率上がるのよね。
</p>
<h3>おまけ</h3>
<p>
　トレーニング→スポーツ<br />
<iframe width="312" height="176" src="http://ext.nicovideo.jp/thumb/sm5130255" scrolling="no" style="border:solid 1px #CCC;" frameborder="0"><a href="http://www.nicovideo.jp/watch/sm5130255">【ニコニコ動画】【ミラー】荒ぶる高校球児たち</a></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://tkido.com/blog/2672.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Rubyでピクロスのソルバ</title>
		<link>http://tkido.com/blog/753.html</link>
		<comments>http://tkido.com/blog/753.html#comments</comments>
		<pubDate>Sun, 15 Feb 2009 13:38:29 +0000</pubDate>
		<dc:creator>木戸孝紀</dc:creator>
				<category><![CDATA[WEB情報通信]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[パズル]]></category>
		<category><![CDATA[ピクロス]]></category>
		<category><![CDATA[プログラミング]]></category>

		<guid isPermaLink="false">http://tkido.com/blog/753.html</guid>
		<description><![CDATA[



　最近Ruby1.9.1が出たので、乗り換えついでに久しぶりにプログラミングっぽい話題でもと思い、ピクロスのソルバを書いてみました。

ファイル

picross.rb
sample.txt

使い方

ruby [...]]]></description>
			<content:encoded><![CDATA[<p>
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873113946/mebiusproject-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41CGDEMgyoL._SL160_.jpg" alt="プログラミング言語 Ruby" style="border: 1px solid black;" /></a>
</p>
<p>
　最近<a href="http://www.ruby-lang.org/ja/news/2009/01/30/ruby-1-9-1-released/" target="_blank">Ruby1.9.1</a>が出たので、乗り換えついでに久しぶりにプログラミングっぽい話題でもと思い、<a href="http://ja.wikipedia.org/wiki/%E3%83%94%E3%82%AF%E3%83%AD%E3%82%B9" target="_blank">ピクロス</a>のソルバを書いてみました。
</p>
<h3>ファイル</h3>
<ul>
<li><a href="http://tkido.com/mebius/data/2009/picross.rb" target="_blank">picross.rb</a></li>
<li><a href="http://tkido.com/mebius/data/2009/sample.txt" target="_blank">sample.txt</a></li>
</ul>
<h3>使い方</h3>
<pre><code>
ruby picross.rb sample.txt
</code></pre>
<p>
　と問題ファイルを与えると、
</p>
<pre><code>
　　｜　　 2 1 1 2　　｜
　　｜　　 1 1 1 1 3 2｜
　　｜ 4 6 2 1 1 2 2 1｜
----＋&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;-＋
　 4｜　　　　　　　　｜
 2 2｜　　　　　　　　｜
 2 2｜　　　　　　　　｜
　 8｜　　　　　　　　｜
　 2｜　　　　　　　　｜
 2 2｜　　　　　　　　｜
 2 2｜　　　　　　　　｜
　 4｜　　　　　　　　｜
----＋&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;-＋
　　｜　　 2 1 1 2　　｜
　　｜　　 1 1 1 1 3 2｜
　　｜ 4 6 2 1 1 2 2 1｜
----＋&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;-＋
　 4｜××■■■■××｜
 2 2｜×■■××■■×｜
 2 2｜■■××××■■｜
　 8｜■■■■■■■■｜
　 2｜■■××××××｜
 2 2｜■■××××■■｜
 2 2｜×■■××■■×｜
　 4｜××■■■■××｜
----＋&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;-＋
</code></pre>
<p>
　のような結果を表示します。解なしなら解なしと判定します。解が一つ以上あれば最初に見つかった解を表示します。複数解になっているかどうかまでは気にしません。
</p>
<p>
　問題ファイルの形式は、
</p>
<ul>
<li>最初の一行が盤面の高さと幅</li>
<li>次の行からは、一行ごとに
<ul>
<li>横のヒントを左から順に並べたものを、上から下に</li>
<li>縦のヒントを上から順に並べたものを、左から右に</li>
</ul>
</li>
<li>区切り文字に使えるのは半角のスペースかカンマ</li>
</ul>
<p>
　です。詳しくはサンプル問題のファイルを見て下さい。
</p>
<pre><code>
ruby picross.rb sample.txt -v
</code></pre>
<p>
　とオプションをつけると途中経過も表示します。この場合よほど単純な問題でなければ長くなりすぎるので、
</p>
<pre><code>
ruby picross.rb sample.txt -v &gt; result.txt
</code></pre>
<p>
　などとして、後で結果を書き出したファイルを見るようにした方がいいでしょう。大きな問題でも時間とRubyの許す限り解けるはずですが、ヒントの数字が3桁に達するような場合は、表示されるのは下2桁の値だけになります。
</p>
<p>
　ちなみに単純な計算を山ほど行うので、1.9.1では1.8系より目に見えて早くなりました。うちの環境では30×30の広さでも数秒、さらにスカスカの難しそうな問題でもせいぜい30秒程度です。
</p>
<p>
　あまり巨大なのは問題が見つからなかったので試していませんが、人間が解くことを想定しているような問題なら大体リーズナブルな時間で解けるのではないかと思います。
</p>
<p>
　また、一番面倒くさかったのは解かせてみる問題を打ち込むことでした。入力した問題があったらメールフォームからでも送っていただけるとありがたいです。もちろん著作権のあるものは公開できませんが。
</p>
<h3>追記　2/20</h3>
<p>
　横に細長い問題の扱いでバグがあったので修正しました。
</p>
<h3>追記　2/24</h3>
<p>
　途中経過の表示時に「★」マークを出力するようにしました。結果ファイルで「★」を次々に検索するようにすれば簡易アニメーションのように見ることができるようになるはず。
</p>
<h3>おまけ</h3>
<p>
　誰が得すんだこのTAS。<br />
<iframe width="312" height="176" src="http://ext.nicovideo.jp/thumb/sm1322001" scrolling="no" style="border:solid 1px #CCC;" frameborder="0"><a href="http://www.nicovideo.jp/watch/sm1322001">【ニコニコ動画】【TAS】マリオのスーパーピクロス　LEVEL１</a></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://tkido.com/blog/753.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yugui『初めてのRuby』</title>
		<link>http://tkido.com/blog/611.html</link>
		<comments>http://tkido.com/blog/611.html#comments</comments>
		<pubDate>Thu, 17 Jul 2008 14:21:53 +0000</pubDate>
		<dc:creator>木戸孝紀</dc:creator>
				<category><![CDATA[WEB情報通信]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Yugui]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[書評]]></category>

		<guid isPermaLink="false">http://tkido.com/blog/611.html</guid>
		<description><![CDATA[



書籍『初めてのRuby』を書いた


　別に初めてではないのだが買ってしまった。著者のYuguiさんにも興味があった（これとかこれとかかなり共感するところがある）からなのだが。


　美しい、としか表現しようがな [...]]]></description>
			<content:encoded><![CDATA[<p>
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873113679/mebiusproject-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41gCZhFayuL._SL160_.jpg" alt="初めてのRuby" style="border: 1px solid black;" /></a>
</p>
<ul>
<li><a href="http://idm.s9.xrea.com/ratio/2008/06/16/000779.html" target="blank">書籍『初めてのRuby』を書いた</a></li>
</ul>
<p>
　別に初めてではないのだが買ってしまった。著者の<a href="http://idm.s9.xrea.com/about.html" target="blank">Yuguiさん</a>にも興味があった（<a href="http://idm.s9.xrea.com/ratio/2008/07/16/000791.html" target="blank">これ</a>とか<a href="http://idm.s9.xrea.com/ratio/2007/07/07/000638.html" target="blank">これ</a>とかかなり共感するところがある）からなのだが。
</p>
<p>
　美しい、としか表現しようがない。足すべきものも引くべきものも一つもないという完璧さに恍惚となる。こんな感覚を言語の解説書から受けるというのは夢想だにしなかった。
</p>
<p>
　弾さんの書評はいつ頃からか売らんかなの傾向を強く感じるようになって今はまったく信用してないのだけど、<a href="http://blog.livedoor.jp/dankogai/archives/51077051.html" target="blank">今回のベタ褒め</a>はそのまま信じてよい。
</p>
<h3>おまけ</h3>
<p>
　ルビーつながり……だけでなく極限を突き詰める美しさつながりも。ゲーム的にもニコ動技術的にも完璧。<br />
<iframe width="312" height="176" src="http://ext.nicovideo.jp/thumb/sm3134444" scrolling="no" style="border:solid 1px #CCC;" frameborder="0"><a href="http://www.nicovideo.jp/watch/sm3134444">【ニコニコ動画】【TAS】 ドラゴンクエスト3 (31:01)  ルビーバグ使用 【全力で解説】</a></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://tkido.com/blog/611.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>オレ記法を作成中</title>
		<link>http://tkido.com/blog/540.html</link>
		<comments>http://tkido.com/blog/540.html#comments</comments>
		<pubDate>Tue, 18 Dec 2007 13:16:58 +0000</pubDate>
		<dc:creator>木戸孝紀</dc:creator>
				<category><![CDATA[WEB情報通信]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[ブログ]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[ライフハック]]></category>
		<category><![CDATA[記法]]></category>

		<guid isPermaLink="false">http://tkido.com/blog/540.html</guid>
		<description><![CDATA[



　ブログを書く時にわずかとはいえHTML（もしくはXHTML）の記述するのは面倒である。せっかくブログなんだから、わずかのHTMLも書かずに済ませたいではないか。


　我ながら面倒くさがりもいいところだと思うが [...]]]></description>
			<content:encoded><![CDATA[<p>
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4839923205/mebiusproject-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/413Hok%2BNq0L._SL160_.jpg" alt="Rubyist Magazine 出張版 正しいRubyコードの書き方講座―RubyistのRubyistによる、Rubyistとそうでない人のための" style="border: 1px solid black;" /></a>
</p>
<p>
　ブログを書く時にわずかとはいえHTML（もしくはXHTML）の記述するのは面倒である。せっかくブログなんだから、わずかのHTMLも書かずに済ませたいではないか。
</p>
<p>
　我ながら面倒くさがりもいいところだと思うが、プログラマの三大美徳は<strong>怠惰・短気・傲慢</strong>だそうだから、そう悪いことではないかも知れない。
</p>
<ul>
<li><a href="http://hatenadiary.g.hatena.ne.jp/keyword/%E3%81%AF%E3%81%A6%E3%81%AA%E8%A8%98%E6%B3%95%E4%B8%80%E8%A6%A7" target="blank">はてな記法</a>
</li>
<li><a href="http://daringfireball.net/projects/markdown/syntax.php" target="blank">Markdown</a>
</li>
<li><a href="http://www.ogis-swe.jp/pukiwiki/pukiwiki.php?%C0%B0%B7%C1%A5%EB%A1%BC%A5%EB" target="blank">Pukiwiki</a>
</li>
</ul>
<p>
　省略記法はすでに上記のようにいろいろと存在するが、どれも一長一短があって満足できない。
</p>
<p>
　はてな記法は一番使いやすいが、すでにHTMLで書かれている部分を混ぜて書けないのが困る。本の紹介に使っているamazletやおまけに使っているニコニコ動画など、他のツールやサービスで作成された部品を追加しづらい。
</p>
<p>
　MarkdownはHTMLも混ぜて書くことができるが、英文のメールで使われる表現がベースになっているらしく、どうも日本語で書こうとすると不便がある。
</p>
<p>
　Pukiwikiの記法も良くできていると思うが、もちろんwiki前提に考えられているので微妙に違和感が残る。
</p>
<p>
　というわけで不満たらたらでその場その場の対応をしていたのだが、先週末ついに自分が好きな記法を作ってしまえばいいじゃないかと気がついたので、
</p>
<ul>
<li><a href="http://jp.rubyist.net/magazine/?0010-CodeReview" target="blank">Rubyist Magazine &#8211; あなたの Ruby コードを添削します 【第 1 回】 pukipa.rb</a></li>
</ul>
<p>
　で取り上げられているwikiパーサを参考にrubyで自分専用の記法を作った。まだ完全ではないが一応実用に耐える。これもそれで書いて変換したもの。
</p>
<p>
　自分が好きなようにルールを決めただけあって素晴らしく快適！　更新意欲が増しそう。
</p>
<h3>おまけ</h3>
<p>
　なぜかflash全盛期のノリを感じる……。もはや精神的ブラクラの域に達しているので閲覧注意。<br />
<iframe width="312" height="176" src="http://www.nicovideo.jp/thumb/sm1761203" scrolling="no" style="border:solid 1px #CCC;" frameborder="0"><a href="http://www.nicovideo.jp/watch/sm1761203">【ニコニコ動画】もしも初音ミクがジオン軍総帥だったらパート３</a></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://tkido.com/blog/540.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>数学パズル ペプシ算</title>
		<link>http://tkido.com/blog/525.html</link>
		<comments>http://tkido.com/blog/525.html#comments</comments>
		<pubDate>Fri, 23 Nov 2007 12:38:46 +0000</pubDate>
		<dc:creator>木戸孝紀</dc:creator>
				<category><![CDATA[WEB情報通信]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[パズル]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[数学]]></category>

		<guid isPermaLink="false">http://tkido.com/blog/525.html</guid>
		<description><![CDATA[




清涼飲料水のキャップのオマケとして、10 種類の清涼飲料水マンのキャップがついてくるキャンペーンがありました。そこで、豪気な凛さんは 24 本の箱買いを実行しました。24 本も買えば、10 種類そろっていそうな [...]]]></description>
			<content:encoded><![CDATA[<p>
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000VNK9RA/mebiusproject-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/11ii61ZeoLL._SL160_.jpg" alt="サントリー ペプシコーラ ロング 缶 500ml ｘ 24本" style="border: none;" /></a>
</p>
<blockquote>
<p>
清涼飲料水のキャップのオマケとして、10 種類の清涼飲料水マンのキャップがついてくるキャンペーンがありました。そこで、豪気な凛さんは 24 本の箱買いを実行しました。24 本も買えば、10 種類そろっていそうな感じですが、実際には（以下省略）そこで、そろわない場合の確率はどのくらいになるのか？　果たして凛さんは、全部の種類の清涼飲料水マンのキャップを持っているのだろうか？
</p>
<p>
<a href="http://delfusa.main.jp/delfusafloor/archive/www.nifty.ne.jp_forum_fdelphi/samples/00849.html" target="_blank">（サンプル: &quot;多倍長計算のサンプル(ペプシ算)&quot;）</a>
</p>
</blockquote>
<p>
　<a href="http://d.hatena.ne.jp/eiji8pou/20071122/1195737257" target="_blank">ペプシ算ファイナル &#8211; 永字八法</a>で知って、久々にパズル欲を触発されたのでやってみた。我ながらなかなかエレガント。大元ページの再帰的な計算法では手も足も出ない数になっても瞬殺。rubyのBignumが許す限り。
</p>
<p>
<a href="http://tkido.com/mebius/data/2007/pepsi.rb" target="_blank">pepsi.rb</a>
</p>
<pre><code>
class Integer
  def factorial
    (1..self).inject(1){|r, i| r * i}
  end
  def combination(n)
    self.factorial / (n.factorial * (self - n).factorial)
  end
end
def pepsi(m, n)
  result = (0..m).inject(0){|r, i| r + (-1)**i * m.combination(i) * (m - i)**n}
  (result * 10000000000000000 / m**n).to_f / 10000000000000000
end
puts pepsi(ARGV[0].to_i, ARGV[1].to_i)
</code></pre>
<p>
　下のように実行するとm種類のおまけ付きのペプシn本入りを箱買いしたときにコンプできている確率を返してくれます。
</p>
<pre><code>
ruby pepsi.rb m n
</code></pre>
<p>
　たとえば例題の通りなら、
</p>
<pre><code>
ruby pepsi.rb 10 24
</code></pre>
<p>
ね。それだけ。
</p>
<h3>11/27追記</h3>
<p>
　combinationも整数のメソッドにしてみたりちょっと表現を整理。ロジックはまったく一緒。それと、30 300程度で計算できなくなるのは、よく見たらBignumに入りきらないって言ってるんじゃなくてFloatで表現できないと言ってるだけだった。道理で少なすぎると思った。整数だけで最後の割り算をするようにしたらもっとでかい数でもいけるようになった。
</p>
<pre><code>
ruby pepsi.rb 365 2287
0.500370783936947
</code></pre>
<p>
　つまり誕生日が均等に分布していると仮定して2月29日を無視した場合、人口2287人以上の街では「毎日誰かしらは誕生日を迎えている」確率5割以上。へー。
</p>
<h3>おまけ</h3>
<p>
<iframe width="312" height="176" src="http://www.nicovideo.jp/thumb/sm88000" scrolling="no" style="border:solid 1px #CCC;" frameborder="0"><a href="http://www.nicovideo.jp/watch/sm88000">【ニコニコ動画】マイヤヒー２</a></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://tkido.com/blog/525.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
