何か着ていればいいよ

ソフトウェア技術者の日常や技術の話を書こうと思います。

ループを使わないFizzBuzz問題の解き方

プログラマの登竜門FizzBuzz問題について。

ループを使わない解き方を書いてみた。

通常、この手のループを使わない系は関数の再帰呼び出しで解くのだけど
そこをもう一捻りしてコンパイル時に全てのループが展開されている方法をやってみた。

つまり、C++テンプレートメタプログラミングコンパイル時にテンプレートが展開されているってやつ。 どうやらC++テンプレートメタプログラミングチューリング完全だそうで、
噂には聞いていたのだけど、実際どんなもんなのか自分の手を動かして確かめてみた。

gist.github.com

一年に一度くらいしか書かないC++でなんか怪しい感じだけど動くは動く。*1
ループの進め方とか色々もっとスマートに出来ないのかな?とも思うけど現状はこんな所で。

*1:Mac OSXのLLVM 6.1.0で動作確認