Use LINQ Aggregate to Multiply a Series of Digits
The LINQ Aggregate() extension method uses a Func<int, int, int> to operate on items in a series. If you want to use it, for example, to return the product of each value with its successor, you can do something like this:
Func<int, int, int> producter = (one, two) => one * two;
var result = subString.ToCharArray().ToDigits().Aggregate(producter);
Of course, you don’t need the intermediate value. You can simply use a lambda directly for the Aggregate()’s parameter:
//Func<int, int, int> producter = (one, two) => one * two;
var result = subString.ToCharArray().ToDigits().Aggregate((p1,p2) => p1 * p2);
With a loop to keep track of the largest result returned for a substring of length 5, you can easily use this technique to solve Euler 8.
6 Comments
MIke said
I've found it useful for putting together comma separated lists as well.
var items = new string[] {"1", "2", "3"};
var csl = items.Aggregate((s1,s2) => s1 + "," + s2);
Interesting Finds: September 6, 2009 said
Interesting Finds: September 6, 2009
Twitter Trackbacks for Use LINQ Aggregate to Multiply a Series of Digits : Steve Smith's Blog [stevesmithblog.com] on Topsy.com said
Pingback from Twitter Trackbacks for Use LINQ Aggregate to Multiply a Series of Digits : Steve Smith's Blog [stevesmithblog.com] on Topsy.com
Use LINQ Aggregate to Multiply a Series of Digits said
DotNetBurner - burning hot .net content
UGG Boots sale said
var items = new string[] {"1", "2", "3"};
var csl = items.Aggregate((s1,s2) => s1 + "," + s2);
Life Insurance Quotes said
including a Primes generator for previous Euler problems, the base case given in the problem can be reduced to this NUnit test: