Advertisement
Guest User

Untitled

a guest
Feb 24th, 2017
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
OCaml 1.28 KB | None | 0 0
  1. let supprimer a mot =
  2.     if not (membre a mot) then raise Not_found
  3.     else (
  4.       let get_node_array (Noeud(_, arr)) = arr
  5.     in
  6.       let rec get_nodes_path arr letters acc = match arr, letters with
  7.       | _, [] -> acc
  8.       | [], _::_ -> raise Not_found
  9.       | (c, n)::rArray, lCurr::lRest ->
  10.         if c = lCurr
  11.         then get_nodes_path !(get_node_array n) lRest (acc@[n])
  12.         else get_nodes_path rArray letters acc
  13.     in
  14.       let remove_letter_in_list li le = List.filter (fun (c, _) -> c <> le) li
  15.     in
  16.       let rec delete head nodes letters i = match (List.nth nodes i), i with
  17.       | _, i when (i < 0 )-> ()
  18.       | Noeud(_, arr), i when i >= 0 && (List.length !arr) = 0 -> (
  19.         let Noeud(prevB, prevArr) = if (i = 0 && !prevB = false) then head else (List.nth nodes (i-1)) in
  20.         prevArr := remove_letter_in_list !prevArr (List.nth letters i);
  21.         delete a nodes letters (i-1)
  22.       )
  23.       | Noeud(b, arr), i when (i = ((List.length letters) - 1) && (List.length !arr) > 0) -> (
  24.         if !b = true then b := false; delete a nodes letters (i-1)
  25.       )
  26.       | _, _ -> if i > 0 then delete a nodes letters (i-1)
  27.       in delete a (get_nodes_path !(get_node_array a) (explode mot) []) (explode mot) ((List.length (explode mot)) - 1)
  28.     )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement