|
func combine(n, set) {
|
|
|
|
set.len || return []
|
|
n == 1 && return set.map{[_]}
|
|
|
|
var (head, result)
|
|
head = set.shift
|
|
result = combine(n-1, [set...])
|
|
|
|
for subarray in result {
|
|
subarray.prepend(head)
|
|
}
|
|
|
|
result + combine(n, set)
|
|
}
|
|
|
|
combine(3, @^5).each {|c| say c }
|