99 Haskell Problems
Problem 18
(**) Extract a slice from a list.
Given two indices, i and k, the slice is the list containing the elements between the i’th and k’th element of the original list (both limits included). Start counting the elements with 1.
Example:
* (slice '(a b c d e f g h i k) 3 7) (C D E F G)
Example in Haskell:
*Main> slice ['a','b','c','d','e','f','g','h','i','k'] 3 7 "cdefg"
Solution:
slice :: [a] -> Int -> Int -> [a] slice [] _ _ = [] slice (x:xs) a b | a > 1 && b > 0 = slice xs (a-1) (b-1) | b > 0 = x:(slice xs 0 (b-1)) | otherwise = []
This was very similar to the previous problem. I used the input as an indices for counting what to extract out.