permutations_rec.sf 339 B

12345678910111213141516
  1. #!/usr/bin/ruby
  2. #
  3. ## https://rosettacode.org/wiki/Permutations
  4. #
  5. func permutations(callback, set, perm=[]) {
  6. set.len == 0 && callback(perm);
  7. for i in range(set.len) {
  8. __FUNC__(callback, [set[(0 ..^ i)..., (i+1 ..^ set.len)...]], [perm..., set[i]]);
  9. }
  10. };
  11. var list = [1,2,3];
  12. permutations({|set| say set.join}, list);