Advertisement
Guest User

Untitled

a guest
May 28th, 2016
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 0.92 KB | None | 0 0
  1. let split2 list = // пишем рекурсивную функцию, где есть 2 аккумулятора и передаем ей оставшийся для разделения массив
  2.     let rec spl fst snd = function
  3.         | [] -> [(fst, snd)] // тут мы говорим, что весь массив разделили  
  4.         | h::t -> (spl (fst@[h]) snd t) @ (spl fst (snd@[h]) t) //пытаемся пихнуть элемент в одну половину, а потом во вторую
  5.     spl [] [] list
  6.  
  7. split2 [1;2;3;4]
  8.  
  9. результат
  10. val it : (int list * int list) list =
  11.   [([1; 2; 3; 4], []); ([1; 2; 3], [4]); ([1; 2; 4], [3]); ([1; 2], [3; 4]);
  12.    ([1; 3; 4], [2]); ([1; 3], [2; 4]); ([1; 4], [2; 3]); ([1], [2; 3; 4]);
  13.    ([2; 3; 4], [1]); ([2; 3], [1; 4]); ([2; 4], [1; 3]); ([2], [1; 3; 4]);
  14.    ([3; 4], [1; 2]); ([3], [1; 2; 4]); ([4], [1; 2; 3]); ([], [1; 2; 3; 4])]
  15. >
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement