Advertisement
mitrakov

Permutations

Sep 16th, 2018
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 0.50 KB | None | 0 0
  1. // permutations:
  2. object Main extends App {
  3.   def f(base: List[Int], acc: List[Int]): List[List[Int]] = {
  4.     if (base.size == acc.size) List(acc)                  // if accumulator contains all elements => return
  5.     else base filter(!acc.contains(_)) flatMap { w =>     // otherwise fall into recursion
  6.       f(base, w :: acc)
  7.     }
  8.   }
  9.  
  10.   f(List(1, 2, 3), Nil) foreach println
  11. }
  12.  
  13. // Output:
  14. // List(3, 2, 1)
  15. // List(2, 3, 1)
  16. // List(3, 1, 2)
  17. // List(1, 3, 2)
  18. // List(2, 1, 3)
  19. // List(1, 2, 3)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement