123456789101112131415161718192021 |
- takeUntilMax :: [Int] -> Int -> (Int, [Int])
- takeUntilMax [] m = (m, [])
- takeUntilMax [x] _ = (x, [x])
- takeUntilMax (x:xs) m
- | x == m = (x, [x])
- | otherwise =
- let (m', xs') = takeUntilMax xs m
- in (max m' x, x:xs')
-
- doTakeUntilMax :: [Int] -> [Int]
- doTakeUntilMax l = l'
- where (m, l') = takeUntilMax l m
-
- takeUntilMax' :: [Int] -> Int -> (Int, [Int])
- takeUntilMax' [] m = (m, [])
- takeUntilMax' [x] _ = (x, [x])
- takeUntilMax' (x:xs) m
- | x == m = (maximum (x:xs), [x])
- | otherwise =
- let (m', xs') = takeUntilMax' xs m
- in (max m' x, x:xs')
|