```On Wed, Mar 09, 2005 at 04:27:10AM +0900, Bill Guindon wrote:
> given 5 variables... incoming, minimium, current, maximum, reserve
>
> produce a text file that shows every possible map of the variable relations.
>
> Something along the lines of this:
>
>   minimum < current < hidden = incoming = reserve

I've sent my solution already offlist, but now I see William James sent
one publicly, so I make it public as well. His solution gives 541
relation, I have 1305... interesting, which could be the good one?

Csaba

def onp n  # as in ordered number theoretic partition
n.zero? and return [[]]
res = []
(1..n).each { |k|
onp(n-k).each { |a|
res << [k]+a
}
}
res
end

def perm n
n.zero? and return []
res = []
perm(n-1).each{ |pe|
(0..n).each{|j|
res << pe.dup.insert(j,n)
}
}
res
end

def show(n)
onp(n).each{|o|
perm(n-1).each{|pe|
b=[]
o.each{|i|
b << []
i.times{b[-1] << pe.shift}
((q=b[-1]).size-2).times{|i| q[i] < q[i+1] or throw :bad}
}
yield b
}
}
}
end

if \$0 == __FILE__
words=%w(minimum current hidden incoming reserve).sort
show(5) { |db|
puts db.map{|e|
e.map{|i| words[i]}.join " = "
}.join(" < ")
}
end
```