summaryrefslogtreecommitdiff
path: root/ruby/multinom.rb
blob: afee4b74bc9395fa439838bbd7f7ea05384a1d10 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/env ruby

def fak n
  r = 1
  (1).upto(n) { |i| r = r*i }
  return r
end

def multinom n, ks, ps
  b = fak(n)
  prod = 1
  ks.each { |k| prod = prod*fak(k) }
  b = b/prod
  ps.each_with_index { |p,j|
    b = b*p**ks[j]
  }
  return b
end

puts multinom(ARGV[0].to_f, ARGV[1].split.map{|i| i.to_f}, ARGV[2].split.map{|i| i.to_f})