[Haskell-cafe] How to take a minimum sub list that only contain certain number of elements of certain type?

Rishabh Jain rishabh11 at live.com
Tue Sep 25 19:42:26 CEST 2012

```f x 0 = []f (x:xs) y | x `mod` 2 == 0 = x : (f xs y) | otherwise = x : (f xs (y-1))
> f [0..] 4> [0,1,2,3,4,5,6,7]
> From: jon.fairbairn at cl.cam.ac.uk
> Date: Tue, 25 Sep 2012 10:16:52 +0100
> Subject: Re: [Haskell-cafe] How to take a minimum sub list that only contain	certain number of elements of certain type?
>
> Magicloud Magiclouds <magicloud.magiclouds at gmail.com> writes:
>
> > Hi,
> >   For example, I have an array [0..]. Now I want to take a sub list
> > that starts from index 0, and only contain 4 odds, and is minimum
> > result. The answer should be [0, 1, 2, 3, 4, 5, 6, 7].
> >   How to do that? Combining lazy computing, I cannot figure out an
> > efficient algorithm.
>
> Does
>
> f bound odds_so_far [] = []
> f bound odds_so_far (x:xs)
>  | odds_so_far == bound = []
>  | otherwise = x : f bound (odds_so_far + if odd x then 1 else 0) xs
>
> required_funciton = f 4 0
>
> meet your criteria, or am I missing something?
>
> --
> Jón Fairbairn                                 Jon.Fairbairn at cl.cam.ac.uk
>
>
>
> _______________________________________________