#1~100までのカードが並べられている。最初は全て裏である。2番目のカードから1枚おきに裏返す。3番目のカードは2枚おきに裏返す。同じようにn枚目のカードからn-1枚おきに裏返す。裏向きの番号を調べろ。(引用:プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問)
裏返すところは、書籍まんま。上手くいかんかった。
q3.rb
def trump(n)
b=[]
a=(1..n).map{|i| false}
(2..n).each{|i|
j=i-1
while(j<a.length)
a[j]=!a[j]
j += i
end
}
(1..n).each{|i| b<< i+1 if a[i]==false}
puts b
end
trump(100)