Subfactorial FIXED
Subfactorial FIXEDが終了した。BigDecimal の無い言語にはちょっと厳しかったのか、あまり盛り上がらなかった(とはいえ大して面倒とは思わないが。。。)。
Groovy は Java 系で BigDecimal があるので、短い解が得られた。
色々な人の解を見てみると、ruby の leonid さんの解がすごい。問題文で参照されている wikipedia では、
!n=(n-1)*(!(n-1)+!(n-2))
というのがあり、多くの人はこれを使っているようだが、上述 leonid さんは、同 wikipedia の少し下に書いてある、
!n=n!*Σ(-1)**i/i! i=0..n
を漸化式に変換した、
!n=n*!(n-1)+(-1)**n
を利用していた。#あぁ、これも wikipedia に書いていてくれればいいのに!
この式を利用すると、Groovy の解も、36B まで縮む。
〜〜〜
ところで、Subfactorials は、ミス出題だと思っていたけど、唯一の回答者 nooodl さんの解をみると、上述の Σ の式を直接使った解で、特に、ミス出題を避ける特殊なことはしていないように見える。この問題はどこが間違っているのだろう?あとで試してみるか。