作者: 閑舎
日時: 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@...>