いくつかのデカルト座標が定義されたファイル (points.txt) があります。
A 1.0 2.2
B 2.1 3.0
C 3.5 4.0
D 4.0 5.0
points.txt のポイントに基づいてルートが定義された 2 番目のファイル (routes.txt) があります。
route1 ACDB
route2 ABC
各ルートの長さを見つける必要があります。これまでのところ、次のように 2 点間の距離を計算しています。
type Point = (String, Float, Float)
distance_points :: IO ()
distance_points = do s <- readFile "pontos.txt"
putStr "Fom: "
p1 <- getLine
putStr "To: "
p2 <- getLine
print ( distance (search_point p1 (map words (lines s))) (search_point p2 (map words (lines s))))
search_point :: String -> [[String]] -> Point
search_point pt ([p,c1,c2]:xs) = if pt == p then (p, read(c1)::Float, read(c2)::Float)
else search_point pt xs
distance :: Point -> Point -> Float
distance (s1,x1,y1) (s2,x2,y2) = sqrt ((x1-x2)^2 + (y1-y2)^2)
ルートの全距離を計算するにはどうすればよいですか?
また、複数のルートがある場合、どのようにして最も長いルートを見つけることができますか?
前もって感謝します。