Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let split2 list = // пишем рекурсивную функцию, где есть 2 аккумулятора и передаем ей оставшийся для разделения массив
- let rec spl fst snd = function
- | [] -> [(fst, snd)] // тут мы говорим, что весь массив разделили
- | h::t -> (spl (fst@[h]) snd t) @ (spl fst (snd@[h]) t) //пытаемся пихнуть элемент в одну половину, а потом во вторую
- spl [] [] list
- split2 [1;2;3;4]
- результат
- val it : (int list * int list) list =
- [([1; 2; 3; 4], []); ([1; 2; 3], [4]); ([1; 2; 4], [3]); ([1; 2], [3; 4]);
- ([1; 3; 4], [2]); ([1; 3], [2; 4]); ([1; 4], [2; 3]); ([1], [2; 3; 4]);
- ([2; 3; 4], [1]); ([2; 3], [1; 4]); ([2; 4], [1; 3]); ([2], [1; 3; 4]);
- ([3; 4], [1; 2]); ([3], [1; 2; 4]); ([4], [1; 2; 3]); ([], [1; 2; 3; 4])]
- >
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement