とんちゃんといっしょ

Cloudに関する技術とか日常とかについて書いたり書かなかったり

そういえば

今日Pascalと話していたら、Rubyのlambdaは.callの省略に[]が使えると言われて、
そういえばそんなので行けたなと思い出す。


というわけで、短くしてみた。

短縮前(.call使用)

f=lambda{|n,m|n>m&&m>0?f.call(n-1,m-1)+f.call(n-1,m):1}
p eval"f.call(#{gets})"


短縮後([]使用)

f=lambda{|n,m|n>m&&m>0?f[n-1,m-1]+f[n-1,m]:1}
p eval"f[#{gets}]"


短くなったよ。