鶴亀算をプログラミングっぽく書き直す
鶴亀算を数日前の記事(Rubyで鶴亀算を書いてみる)で書きました。
んで、それを"for"を使って書き直してみようと思います。
全匹が鶴だとして、「鶴の数から予想される足の数」と「指定された足の数」で差をとります。
それを、「鶴の脚と亀の足の差」で割って鶴の数を出します。
cranes_num = (sum * 4 - legs_num) / 2 puts("鶴は#{cranes_num}匹 亀は#{sum - cranes_num}匹")
この式を考えるのは難しいので、その部分をPCに任せようと思います。つまり、「鶴の数と亀の数を1匹ずつ考えてくれ」ということです。それを"for"を使って考えると・・・
# …省略… found = false for turtles in (0..max_turtles) cranes = heads - turtles if cranes >= 0 && legs == (cranes * 2 + turtles * 4) found = true break end end …省略…
forを最大限使ったうまい考え方だぁ〜・・・
式とか深く考えなくていいから幸せ