我正在构建一个图来实现 Dijkstra 的算法,并且我正在读取一个包含
1 3 5
1 2 6
我将如何读取每一行并将其存储为 [(a,a,float)]。我需要这个才能使用:
buildGraph :: Ord a => [(a, a, Float)] -> Map a [(a, Float)]
这是我构建图表的方式:
let g = buildGraph [('a','c',2), ('a','d',6), ('b','a',3)
,('b','d',8), ('c','d',7), ('c','e',5)
,('d','e',10)]
目前我可以读取文件并将所有内容存储在数组中。
main = do
contents <- readFile "input.txt"
print . map readInt . words $ contents
readInt :: String -> Int
readInt = read
我希望能够访问每个文件并附加到一个像这样的数组('1','4',5),这与(a,a,float)相同。在数组准备好发送到 buildGraph 之后
Type Edge = (Char, Char, Float)
readGraphFile :: FilePath -> IO Edge
readGraphFile path = do
alldata <- readFile path
return (Char,Char,Float)