2

いくつかのデカルト座標が定義されたファイル (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)

ルートの全距離を計算するにはどうすればよいですか?

また、複数のルートがある場合、どのようにして最も長いルートを見つけることができますか?

前もって感謝します。

4

1 に答える 1