はじめに CodeIQで出題されていた、通称「フィズ・バズ・エクストリーム」問題(←問題の公開は終了したので左記リンクでは問題閲覧はできません)。 うまい漸化式を見付けて、それを元にコンパクトな再帰で解けたのですが、意外とこの漸化式で解いている人が少なそうなので、(誰か解説書いてくれるだろうと踏んでいたのですけれどこの際だから自分で)それを紹介・解説してみます。 ついでに、そこから Ruby でコードゴルフしたのでそのコードも簡単に解説。 問題(概要) 問題全文は、↓こちらを参照。 CodeIQ 「フィズ・バズ・エクストリーム」 問題 [PDF] 文章を引用する代わりに私の言葉で意訳したのが↓こちら。 与えられた $n$ に対して、$n$ 以下の正の整数のうち、3, 5, 7, 11, 13, 17, 19, 23, 29, 31 の少なくともどれか一つの倍数となるものの総和を求めよ。 Q