SHARE
TWEET

Untitled

a guest Feb 21st, 2020 77 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. type colore= Rosso | Blu | Verde | Giallo
  2. type 'a col_assoc= ('a * colore)list
  3. (*vicini : 'a -> 'a graph ->'a list*)
  4. (*vicini n grafo = lista dei vicini partendo da un nodo n nel grafo orientato rappresentato da g*)
  5.  
  6. let rec vicini nodo= function
  7.     []->[]
  8.     |(x,y)::rest->if x=nodo then y::(vicini nodo rest)
  9.                   else if y=nodo then x::(vicini nodo rest)
  10.                   else vicini nodo rest
  11.  
  12. (*qua vorrei estrarre il colore da una lista associata in modo tale da poter effettuare un filtraggio
  13.     successivamente sul cammino , ma questa funzione non va
  14.     molto probabilmente quello che sto facendo รจ un errore concettuale*)
  15. let rec define_color valore=function
  16.     []->failwith "non esiste"
  17.     |(val,color)::rest-> if valore=val then color
  18.                        else define_color valore rest
  19.  
  20. exception NotFound
  21.  
  22. let path g colors lst start=
  23.     let rec from_node visited lst n=
  24.         if List.mem n visited then raise NotFound
  25.         else if lst=[n] then [n]
  26.         else n::(from_list (n::visited) (List.filter (<>colore) lst) (successori n g))
  27.     and from_list visited lst = function
  28.         []-> raise NotFound
  29.         |x::rest->  try from_node visited lst x
  30.                     with NotFound-> from_list visited lst rest
  31.     in from_node [] lst start
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top