Advertisement
Guest User

Untitled

a guest
Jul 20th, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
OCaml 0.67 KB | None | 0 0
  1. let rec allsets k l =
  2.     if k <= 0 || k > List.length l then []
  3.     else if k = 1 then List.map (fun x->[x]) l else
  4.         match l with
  5.         | [] -> []
  6.         | h :: t ->
  7.             let rest = (allsets (k-1) t) in
  8.             (List.map (fun x->h::x) rest) @ (allsets k t)
  9. ;;
  10.  
  11. let rec print_list = function
  12.     | [] -> ()
  13.     | h :: t -> print_int h; print_string " "; print_list t
  14. ;;
  15.  
  16. let rec print_list_lists = function
  17.     | [] -> print_newline()
  18.     | h :: t -> print_string "[ "; print_list h; print_string "]; ";
  19.     print_list_lists t
  20. ;;
  21.  
  22. print_list_lists (allsets 1 [1;2;3]);
  23. print_list_lists (allsets 2 [1;2;3]);
  24. print_list_lists (allsets 3 [1;2;3]);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement