Exemplo n.º 1
0
        public IEnumerable <string> Get()
        {
            Func <int, string, Func <int, string> >
            fizzBuzzClosure = (replaceNumber, replaceValue) =>
                              number => number % replaceNumber == 0? replaceValue : string.Empty;

            var fizzBuzzDelegates = _replacements.Select(rep => fizzBuzzClosure(rep.Key, rep.Value));

            return
                (_range.GetValues()
                 .Select(n => new {
                Number = n,
                FizzBuzz = fizzBuzzDelegates.Aggregate(string.Empty, (word, fizzBuzz) => word + fizzBuzz(n))
            })
                 .Select(result =>
                         string.IsNullOrEmpty(result.FizzBuzz)?
                         result.Number.ToString() :
                         result.FizzBuzz));
        }