電球は幾つ点いているか
たまには,Rubyで数学っぽいことをしないと.
404 Blog Not Found:コマネチ大学数学科第12講 + javascriptより.
1から1000までの番号とスイッチがついた電球があります。まず、1の倍数の電球のスイッチを押し、次に2の倍数のスイッチを押し....これを1000回行った後、点灯している電球の数はいくつあるでしょう?ただし、最初の状態では電球は消灯状態です。
これを,とりあえずRubyで.
どういう答えになるのかは,上の参照先を見て頂きたい.
def lamp(max) lamps = Array.new(max){false} lamps.each_index do |i| i += 1 (1 .. (max/i)).each do |x| if lamps[i * x - 1] lamps[i * x - 1] = false else lamps[i * x - 1] = true end end end on = [] lamps.each_with_index do |e, i| on << i += 1 if e end on end p lamp(10000).length
あんまり美しくない.とりあえずの実行結果.
$ ruby 1000lamps.rb 100
ホントに100か?あ,そりゃ10000だから,そりゃそうか.
まぁなんというか,ただやりたかっただけ.