@m_seki の

I like ruby tooから引っ越し

最初に見つけた解

新幹線の中でロディア6枚を費やして計算するうちに気付いたんだけど、正解のパターンは順列×ダブり分なんすよ。ダブり分はきれいなパターンがあって、こんな感じ。
# あれ? levelって引数はいらない気がしてきたぞ。

def double_ly(lower, upper, level, r=1)
  return r if level <= 0
  (lower..upper).inject(0) do |sum, x|
    sum + double_ly(x, upper, level-1, x * r)
  end
end

4種類で2つダブるときは、こうかな。

double_ly(1, 4, 2) * 4 * 3 * 2 * 1


起こりうるパターンは重複順列だから、それで割ると確率になります。 

あとでまた清書しよう。