Programming
平面上の多角形の三角形分割を列挙するプログラムを作成してみた。先日の記事で紹介したような拡張された三角形分割ではなく、総数がカタラン数で与えられるような三角形分割である。 def catalanEach(ary) case ary.size when 2 yield [] when 3 yield [ary…
言語のマニュアルを見るのは、たまにしかやらないので見逃していた。 Ruby の Array クラスには combination と permuation が定義されていた。 数え上げよう(組合せ編) - tkenichiの日記 は忘れてください。 [0,1,2,3,4].combination(2) do |c| p c end …
数値をたくさん足し上げるとき、数値誤差の問題は忘れがち。統計ソフトを使っているときは中でうまくやっているのだと思うけど、自分でプログラムを作っているときは気をつけないと誤差がたまるようなコードを書いてしまう。有名なのが標本分散の計算で、 を…
More Joel on Software作者: Joel Spolsky,青木靖出版社/メーカー: 翔泳社発売日: 2009/04/09メディア: 単行本(ソフトカバー)購入: 11人 クリック: 153回この商品を含むブログ (93件) を見るThe Best Software Writing I を読んでから1年後、知人にも薦め…
順列を数え上げる場合、n個の置換を生成する関数を作って、組み合わせを生成する関数から呼ぶことにする。手抜きですね。 require "Combination" class Permutation def Permutation.each(ary) case ary.size when 1 yield ary when 2 yield ary yield ary.r…
順列・組み合わせは高校数学でも出てくるし、パズル的な問題でも応用範囲が広いのだから、もっとプログラミングのネタとしても取り上げられてもいいと思うんだけどな。配列と if と for がわかればできるし。というわけでこの手の個数を数えるものについて、…
Best Software Writing作者: Joel Spolsky出版社/メーカー: Apress発売日: 2005/06/20メディア: ペーパーバック購入: 2人 クリック: 16回この商品を含むブログ (9件) を見るJoel on Software の人が選んだソフトウェアに関する読み物。それぞれのエントリー…
Code Craft ~エクセレントなコードを書くための実践的技法~作者: Pete Goodliffe,後藤正徳,鵜飼文敏,平林俊一,トップスタジオ,まつもとゆきひろ出版社/メーカー: 毎日コミュニケーションズ発売日: 2007/11/29メディア: 単行本(ソフトカバー)購入: 3人 クリ…