2011-09-01から1ヶ月間の記事一覧

RubyのGem::Config.settingというコンベンションの実現方法

スタティックなファイルで構成されるWebサイトを構築する「Stasis」というRubyライブラリを少し読んでみた。lib/stasis/gems.rbの冒頭に、次のようなコードがある。 unless defined?(Stasis::Gems) require 'yaml' class Stasis module Gems class <

8重ループでも十分速い

なんだかイライラしたので、心を落ち着けるためのProject Euler。31問目。イギリスのコインには、2ペンスとか20ペンスという偶数のものがあるらしく、いろいろ組み合わせて、ちょうど2ポインド(200ペンス)になるコインの組み合わせの数は? という問題。最…

ペンスを再帰で数える

Project Eulerの31問目、コインを組み合わせて2ポインドを作るというやつは、再帰を使えばスッキリ書ける。Pythonで書かれたほかの参加者の回答を見てなるほどなぁと思ったので、Rubyでも書いてみた。動的計画法よりも、再帰のほうがスッキリしやすいような…

間違った約分でも正解になる分数

Project Euler 33。49/98という分数で、間違って9を消す「約分」をしてしまっても、「4/8」となり、実は結果は正しい。こういう変な分数を、分子・分母が2ケタのものについて自明なものを除いて全部探せ。というような問題。「65/26→5/2」というのがちょっと…

Rubyで魔方陣

知人に6x6の魔方陣を見せられて、そういえば魔方陣ってやったことないなと思ってRubyで解いてみた。モヤモヤと悩みつつ、良い練習になった。RubyにはEnumerable#permutationという強力なのがある。多重ループを使わなくても、「(0..3).to_a.permutation」と…