ダイクストラのアルゴリズムを実装するグラフを作成しており、次を含むファイルを読み取っています。
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
各ファイルにアクセスして、(a,a,float) と同じ ('1','4',5) のような配列に追加できるようにしたいと考えています。配列がbuildGraphに送信される準備が整った後
Type Edge = (Char, Char, Float)
readGraphFile :: FilePath -> IO Edge
readGraphFile path = do
alldata <- readFile path
return (Char,Char,Float)