Skip to main content
Code Review

Return to Question

Commonmark migration
Source Link

Bill and Ted are taking a road trip. But the odometer in their car is broken, so they don’t know how many miles they have driven. Fortunately, Bill has a working stopwatch, so they can record their speed and the total time they have driven. Unfortunately, their record keeping strategy is a little odd, so they need help computing the total distance driven. You are to write a program to do this computation.

For example, if their log shows

Speed in miles per hour | Total elapsed time in hours

20 | 2

30 | 6

10 | 7

this means they drove 2 hours at 20 miles per hour, then 6−2=4 hours at 30 miles per hour, then 7−6=1 hour at 10 miles per hour. The distance driven is then 2⋅20+4⋅30+1⋅10=40+120+10=170 miles. Note that the total elapsed time is always since the beginning of the trip, not since the previous entry in their log.

Input:

The input consists of one or more data sets. Each set starts with a line containing an integer n, 1≤n≤10, followed by n pairs of values, one pair per line. The first value in a pair, s, is the speed in miles per hour and the second value, t, is the total elapsed time. Both s and t are integers, 1≤s≤90 and 1≤t≤12. The values for t are always in strictly increasing order. A value of −1 for nsignals the end of the input.

Output:

For each input set, print the distance driven, followed by a space, followed by the word "miles".

Bill and Ted are taking a road trip. But the odometer in their car is broken, so they don’t know how many miles they have driven. Fortunately, Bill has a working stopwatch, so they can record their speed and the total time they have driven. Unfortunately, their record keeping strategy is a little odd, so they need help computing the total distance driven. You are to write a program to do this computation.

For example, if their log shows

Speed in miles per hour | Total elapsed time in hours

20 | 2

30 | 6

10 | 7

this means they drove 2 hours at 20 miles per hour, then 6−2=4 hours at 30 miles per hour, then 7−6=1 hour at 10 miles per hour. The distance driven is then 2⋅20+4⋅30+1⋅10=40+120+10=170 miles. Note that the total elapsed time is always since the beginning of the trip, not since the previous entry in their log.

Input:

The input consists of one or more data sets. Each set starts with a line containing an integer n, 1≤n≤10, followed by n pairs of values, one pair per line. The first value in a pair, s, is the speed in miles per hour and the second value, t, is the total elapsed time. Both s and t are integers, 1≤s≤90 and 1≤t≤12. The values for t are always in strictly increasing order. A value of −1 for nsignals the end of the input.

Output:

For each input set, print the distance driven, followed by a space, followed by the word "miles".

Bill and Ted are taking a road trip. But the odometer in their car is broken, so they don’t know how many miles they have driven. Fortunately, Bill has a working stopwatch, so they can record their speed and the total time they have driven. Unfortunately, their record keeping strategy is a little odd, so they need help computing the total distance driven. You are to write a program to do this computation.

For example, if their log shows

Speed in miles per hour | Total elapsed time in hours

20 | 2

30 | 6

10 | 7

this means they drove 2 hours at 20 miles per hour, then 6−2=4 hours at 30 miles per hour, then 7−6=1 hour at 10 miles per hour. The distance driven is then 2⋅20+4⋅30+1⋅10=40+120+10=170 miles. Note that the total elapsed time is always since the beginning of the trip, not since the previous entry in their log.

Input:

The input consists of one or more data sets. Each set starts with a line containing an integer n, 1≤n≤10, followed by n pairs of values, one pair per line. The first value in a pair, s, is the speed in miles per hour and the second value, t, is the total elapsed time. Both s and t are integers, 1≤s≤90 and 1≤t≤12. The values for t are always in strictly increasing order. A value of −1 for nsignals the end of the input.

Output:

For each input set, print the distance driven, followed by a space, followed by the word "miles".

Tweeted twitter.com/StackCodeReview/status/801645772471238656
import Data.List.Split

main :: IO ()
main = do
 as <- map words . lines <$> getContents
 let bs = filter (not.null) $ splitWhen ((==1).length) as
 let cs = map (map (map (read :: String -> Int))) bs
 let ds = map calculate cs
 mapM_ putStrLn ds

calculate :: [[Int]] -> String
calculate xs = z
 where as = map head xs
 bs = map last xs
 cs = head bs : zipWith (flip (-)) bs (tail bs)
 ds = zipWith (*) as cs
 z = show (sum ds) ++ " miles"
import Data.List.Split

main :: IO ()
main = do
 as <- map words . lines <$> getContents
 let bs = filter (not.null) $ splitWhen ((==1).length) as
 let cs = map (map (map (read :: String -> Int))) bs
 let ds = map calculate cs
 mapM_ putStrLn ds

calculate :: [[Int]] -> String
calculate xs = z
 where as = map head xs
 bs = map last xs
 cs = head bs : zipWith (flip (-)) bs (tail bs)
 ds = zipWith (*) as cs
 z = show (sum ds) ++ " miles"
import Data.List.Split
main :: IO ()
main = do
 as <- map words . lines <$> getContents
 let bs = filter (not.null) $ splitWhen ((==1).length) as
 let cs = map (map (map (read :: String -> Int))) bs
 let ds = map calculate cs
 mapM_ putStrLn ds
calculate :: [[Int]] -> String
calculate xs = z
 where as = map head xs
 bs = map last xs
 cs = head bs : zipWith (flip (-)) bs (tail bs)
 ds = zipWith (*) as cs
 z = show (sum ds) ++ " miles"
edited tags
Link
wizzup
  • 205
  • 1
  • 6
add problem content to prevent link rot, as suggested
Source Link
wizzup
  • 205
  • 1
  • 6
Loading
Removed tags from title; layout. removed leading line numbers
Source Link
Vogel612
  • 25.5k
  • 7
  • 59
  • 141
Loading
Source Link
wizzup
  • 205
  • 1
  • 6
Loading
lang-hs

AltStyle によって変換されたページ (->オリジナル) /