Advertisement
Guest User

Untitled

a guest
Sep 30th, 2016
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.56 KB | None | 0 0
  1. class Permute
  2. def initialize(array)
  3. @array = array
  4. @permutations = []
  5. end
  6.  
  7. def permute
  8. _permute(0, @array.length)
  9. @permutations
  10. end
  11.  
  12. private
  13.  
  14. def _permute(left, right)
  15. if left == right
  16. @permutations << Array.new(@array)
  17. return
  18. end
  19.  
  20. (left...right).each do |index|
  21. swap(left, index)
  22. _permute(left + 1, right)
  23. swap(index, left)
  24. end
  25. end
  26.  
  27. def swap(l, r)
  28. return if l == r
  29. temp = @array[l]
  30. @array[l] = @array[r]
  31. @array[r] = temp
  32. end
  33. end
  34.  
  35. def permute(array)
  36. Permute.new(array).permute
  37. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement