Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let rec allsets k l =
- if k <= 0 || k > List.length l then []
- else if k = 1 then List.map (fun x->[x]) l else
- match l with
- | [] -> []
- | h :: t ->
- let rest = (allsets (k-1) t) in
- (List.map (fun x->h::x) rest) @ (allsets k t)
- ;;
- let rec print_list = function
- | [] -> ()
- | h :: t -> print_int h; print_string " "; print_list t
- ;;
- let rec print_list_lists = function
- | [] -> print_newline()
- | h :: t -> print_string "[ "; print_list h; print_string "]; ";
- print_list_lists t
- ;;
- print_list_lists (allsets 1 [1;2;3]);
- print_list_lists (allsets 2 [1;2;3]);
- print_list_lists (allsets 3 [1;2;3]);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement