Разбор текстового файла для создания объектов - PullRequest
2 голосов
/ 03 апреля 2011

Я пытаюсь проанализировать текстовый файл в форме:

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

Теперь они представляют "узлы" и "затраты" между ними для реализации алгоритма кратчайшего пути.Я решил создать класс Node, который имеет 2 переменные экземпляра, имя и массив хэшей, которые являются соседними узлами, и стоимость туда добраться.

Я пытаюсь выяснить, как проанализировать файл всерия узловых объектов из каждой группы линий.Стоимость 99 означает, что узлы не подключены.

1 Ответ

6 голосов
/ 03 апреля 2011

Прежде всего, у вас также должен быть класс Graph для управления узлами и ребрами. Тогда что-то вроде этого должно помочь вам начать:

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.

График g отслеживает узлы, которые у него есть, поэтому find_or_create_node может вернуть узел, если он уже существует, или создать его и кэшировать, если нет. Метод add_edge соединит n1 и n2 с ребром веса wt.to_i.

Ваш алгоритм кратчайшего пути, предположительно, будет вызовом метода для объектов графа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...