permutations_rec.sf 284 B

123456789101112
  1. #!/usr/bin/ruby
  2. func permutations(callback, set, perm=[]) {
  3. set.is_empty && callback(perm);
  4. set.range.each { |i|
  5. __FUNC__(callback, [set[(0 ..^ i)..., (i+1 ..^ set.len)...]], [perm..., set[i]]);
  6. }
  7. };
  8. var list = [1,2,3];
  9. permutations({|set| say set.join}, list);