Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import Data.List (intercalate)
- data Interval = Interval Int Int
- instance Show Interval where
- show (Interval start end)
- | start == end = show start
- | otherwise = show start ++ "-" ++ show end
- singletonInterval :: Int -> Interval
- singletonInterval x = Interval x x
- convertToIntervals :: [Int] -> [Interval]
- convertToIntervals = foldr extendIntervals []
- where extendIntervals val [] = [singletonInterval val]
- extendIntervals val intervals
- | firstIntervalStart - val == 1 = Interval val firstIntervalEnd : otherIntervals
- | otherwise = singletonInterval val : intervals
- where Interval firstIntervalStart firstIntervalEnd = head intervals
- otherIntervals = tail intervals
- main = do
- input <- getContents
- putStrLn $ intercalate "," . map show . convertToIntervals . map read . words $ input
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement