Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let supprimer a mot =
- if not (membre a mot) then raise Not_found
- else (
- let get_node_array (Noeud(_, arr)) = arr
- in
- let rec get_nodes_path arr letters acc = match arr, letters with
- | _, [] -> acc
- | [], _::_ -> raise Not_found
- | (c, n)::rArray, lCurr::lRest ->
- if c = lCurr
- then get_nodes_path !(get_node_array n) lRest (acc@[n])
- else get_nodes_path rArray letters acc
- in
- let remove_letter_in_list li le = List.filter (fun (c, _) -> c <> le) li
- in
- let rec delete head nodes letters i = match (List.nth nodes i), i with
- | _, i when (i < 0 )-> ()
- | Noeud(_, arr), i when i >= 0 && (List.length !arr) = 0 -> (
- let Noeud(prevB, prevArr) = if (i = 0 && !prevB = false) then head else (List.nth nodes (i-1)) in
- prevArr := remove_letter_in_list !prevArr (List.nth letters i);
- delete a nodes letters (i-1)
- )
- | Noeud(b, arr), i when (i = ((List.length letters) - 1) && (List.length !arr) > 0) -> (
- if !b = true then b := false; delete a nodes letters (i-1)
- )
- | _, _ -> if i > 0 then delete a nodes letters (i-1)
- in delete a (get_nodes_path !(get_node_array a) (explode mot) []) (explode mot) ((List.length (explode mot)) - 1)
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement