Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- type colore= Rosso | Blu | Verde | Giallo
- type 'a col_assoc= ('a * colore)list
- (*vicini : 'a -> 'a graph ->'a list*)
- (*vicini n grafo = lista dei vicini partendo da un nodo n nel grafo orientato rappresentato da g*)
- let rec vicini nodo= function
- []->[]
- |(x,y)::rest->if x=nodo then y::(vicini nodo rest)
- else if y=nodo then x::(vicini nodo rest)
- else vicini nodo rest
- (*qua vorrei estrarre il colore da una lista associata in modo tale da poter effettuare un filtraggio
- successivamente sul cammino , ma questa funzione non va
- molto probabilmente quello che sto facendo รจ un errore concettuale*)
- let rec define_color valore=function
- []->failwith "non esiste"
- |(val,color)::rest-> if valore=val then color
- else define_color valore rest
- exception NotFound
- let path g colors lst start=
- let rec from_node visited lst n=
- if List.mem n visited then raise NotFound
- else if lst=[n] then [n]
- else n::(from_list (n::visited) (List.filter (<>colore) lst) (successori n g))
- and from_list visited lst = function
- []-> raise NotFound
- |x::rest-> try from_node visited lst x
- with NotFound-> from_list visited lst rest
- in from_node [] lst start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement