[ruby-it] Hash con due elementi come chiave
Tucano
tucano a recipient.cc
Dom 7 Dic 2008 15:11:04 CET
Magari complico solo la situazione, ma perche non usi un grafo per
rappresentare le strade tra le citta'?
Nello specifico dovrebbe essere un grafo direzionato con le citta'
come nodi (vertici) e le distanze in kilometri sono attributi degli
edges
Ho trovato questa libreria in Ruby: http://rgl.rubyforge.org/rgl/index.html
tipo:
>> require 'rgl/adjacency'
>> dg=RGL::DirectedAdjacencyGraph["Milano","Roma","Roma","Milano"]
=> #<RGL::DirectedAdjacencyGraph:0x5aa500
@vertice_dict={"Roma"=>#<Set: {"Milano"}>, "Milano"=>#<Set:
{"Roma"}>}, @edgelist_class=Set>
>> dg.vertices
=> ["Roma", "Milano"]
>> dg.edges
=> [#<RGL::Edge::DirectedEdge:0x5a5a78 @target="Milano",
@source="Roma">, #<RGL::Edge::DirectedEdge:0x5a5910 @target="Roma",
@source="Milano">]
Siccome il grafo e' direzionato abbiamo entrambi gli edges (quindi
distingue tra roma-->milano e milano-->roma).
A questo punto non ti rimane che attaccare agli edges un attributo (la
distanza in kilometri)
La cosa interessante e' che, essendo un grafo, ci puoi applicare una
serie di interessanti metodi di ricerca, sorting, shortest paths, etc...
ciao
Il giorno 05/dic/08, alle ore 14:36, Njna Njna ha scritto:
> ciao a tutti, ho il seguente hash
>
> @strade = Hash([])
>
> nel quale associo ad una coppia di citta i kilometri
>
> esempio @strade[["milano","roma"]] = [650, 800]
> vuolre dire che ci sono due strade da milano a roma, una di 600 km e
> una
> di 800 km.
>
> in un controllo ho notato che il sistema non fa distinzione tra
> @strade[["milano","roma"]] e @strade[["roma","milano"]] e ho bisogno
> che
> siano due cose distinte, anche perchè ci possono essere ulteriori
> strade
> e ulteriori kilometri.. come posso fare?
>
>
> grazie a tutti
> --
> Posted via http://www.ruby-forum.com/.
> _______________________________________________
> Ml mailing list
> Ml a lists.ruby-it.org
> http://lists.ruby-it.org/mailman/listinfo/ml
>
More information about the Ml
mailing list