2 Stimmen

Parsen einer Textdatei zur Erstellung von Objekten

Ich versuche, eine Textdatei zu analysieren, die die Form hat:

A B 2  
A G 6   
A C 99  
...  
B C 7  
B E 2  
B G 99

Diese stellen nun "Knoten" und die "Kosten" zwischen ihnen dar, um einen Algorithmus für den kürzesten Weg umzusetzen. Ich habe beschlossen, eine Klasse Node zu erstellen, die 2 Instanzvariablen hat, einen Namen und ein Array von Hashes, die die benachbarten Knoten und die Kosten für den Weg dorthin darstellen.

Ich versuche herauszufinden, wie ich die Datei in eine Reihe von Knotenobjekten aus jeder Zeilengruppe zerlegen kann. Die Kosten von 99 bedeuten, dass die Knoten nicht miteinander verbunden sind.

6voto

mu is too short Punkte 411765

Zuallererst sollten Sie auch eine Graph-Klasse haben, um die Knoten und Kanten zu verwalten. Dann sollte so etwas wie das hier den Anfang machen:

g = Graph.new
File.open('your_data_file').each do |line|
    n1, n2, wt = line.split(/\s+/)
    n1 = g.find_or_create_node(n1)
    n2 = g.find_or_create_node(n2)
    wt = wt.to_i
    g.add_edge(n1, n2, wt) if(wt != 99)
end
# g is now your fully populated graph.

Die Grafik, g verfolgt die Knoten, die es so find_or_create_node kann den Knoten zurückgeben, wenn er bereits existiert, oder ihn erstellen und zwischenspeichern, wenn nicht. Der add_edge Methode verbinden würde n1 et n2 mit einer Kante von Gewicht wt.to_i .

Ihr Algorithmus für den kürzesten Weg wäre vermutlich ein Methodenaufruf für die Graphobjekte.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X