作者: 閑舎 | |
日時: 2002/5/06(00:56) |
練習のために、ruby 版を何とか作ってみました。たぶん本当はもう少しスマー トになると思います。特に 6 行目。 また、eval(" ")、つまり nil らしいのですが、は Perl なら数値として評価 されるコンテクストに置くと 0 になるのですが、Ruby だとそうならないような ので、ちょっと面食らいました。 --^ dice.rb DICE = "8 4 2 1".split(/ /) l = DICE.length (2**l).times {|i| exp = "" k = 0 for j in sprintf(sprintf("%%0%db", l), i).split(//) exp += (j == "1") ? ("+" + DICE[k]): " " k = k + 1 end print exp, "=", ((/^\s+$/ =~ exp)? 0: eval(exp)), "\n" } --$ -- 本田博通(閑舎) Hiromichi Honda <raku@...>