LINQ: Geometric sequence

Někdy se může hodit pattern pro spočítání geometrické řady. Obzvláště pokud počítáte zůročení atd… Problém funkce Aggregate je v tom, že vrací pouze jeden výsledek. U geometrické řady však potřebujete výpočet nad všemi předešlými prvky, toho dosáhnete pomocí funkce Range. Mnoho hezkých příkladů pro použití Enumerable naleznete zde.

Například prvky pro prvky: {1,2,3,5,2}

by naše rutina měla spočítat: {1,1×2,1x2x3,1x2x3x5,1x2x3x5x2}


IEnumerable<int> items = new List<int> {1, 2, 3, 5, 2}; 


var resultLINQ = 
    Enumerable.Range(1, items.Count()).
    Select(c => items.Take(c).Aggregate(1, (a, b) => a*b)); 
Advertisements
Post a comment or leave a trackback: Trackback URL.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: