luisafonsocarvalho

Untitled

Apr 3rd, 2013
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
OCaml 0.64 KB | None | 0 0
  1. let rec closeAreas db p distance =
  2.     match db with
  3.     | [] -> [p]
  4.     | x::xs -> let a=List.hd p.shape.polygon b=List.hd x.shape.polygon in
  5.                             if (dist a b <= distance)
  6.                                 then (x::closeAreas xs p distance)@closeAreas db x distance
  7.                                 else closeAreas xs p distance@closeAreas db x distance         
  8.     ;;
  9.  
  10. let rec diff set1 set2 =
  11.     match set1 with
  12.     | [] -> []
  13.     | x::xs -> if belongs x set2
  14.         then diff xs set2
  15.         else x::(diff xs set2)
  16.         ;;
  17.  
  18. let rec partRec db distance =
  19.     match db with
  20.     | [] -> [[]]
  21.     | x::xs -> let close = closeAreas xs x d in
  22.                             let set = diff xs close in
  23.                                 [close]@[partRec set distance]
  24.     ;;
  25. let partition db f = partRec db f;;
Advertisement
Add Comment
Please, Sign In to add comment