Advertisement
Guest User

Untitled

a guest
Oct 18th, 2017
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. let fitInPlace (list, element) =
  2.     let rec fit(list, element, accum1) =
  3.         match list with
  4.         | [] -> accum1 @ [element]
  5.         | h::t when element <= h -> accum1 @ (element :: list)
  6.         | h::t -> fit(t, element, accum1 @[h])
  7.     in fit(list, element, []);;
  8.  
  9. let sort list =
  10.     let rec sortRec (list, result) =
  11.       match (list, result) with
  12.         | ([], _) -> result
  13.         | (h1::t1, _) -> sortRec(t1, fitInPlace(result, h1))
  14.     in sortRec(list, []);;
  15.  
  16. let zipListsAndSort(list1, list2) =
  17.     let rec zip(list1, list2, res) =
  18.         match (list1, list2) with
  19.         | ([], []) -> sort res
  20.         | ([], _) -> sort (res @ list2)
  21.         | (_, []) -> sort (res @ list1)
  22.         | (h1::t1, h2::t2) -> zip(t1, t2, [h1;h2] @ res)
  23.     in zip(list1, list2, []);;
  24.  
  25. zipListsAndSort([1;2;3;4], [2;2;2;8]);;
  26. zipListsAndSort([], [2;8;2;4]);;
  27. zipListsAndSort([2;8;2;4], []);;
  28. zipListsAndSort([5;4;3;2], [1;2;3;4;5;6]);;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement