Generating all combinations of length X in an array
wobbles via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Wed Apr 8 03:19:57 PDT 2015
Hi folks,
While trying to generate all combinations of length X in an array,
I came across the question on stackoverflow. [1]
Theres a couple good answers there, but one that caught my eye
shows a C# code snippet that is quite nice and short:
public static IEnumerable<IEnumerable<T>> Combinations<T>(this
IEnumerable<T> elements, int k)
{
return k == 0 ? new[] { new T[0] } :
elements.SelectMany((e, i) =>
elements.Skip(i + 1).Combinations(k - 1).Select(c => (new[]
{e}).Concat(c)));
}
I spent a couple hours trying to translate this to D, but couldnt
get my head around the SelectMany statement.
I think it's analogous to std.algorithm.map, but it seems quite
difficult to mimic the behaviour using map.
Anyone with more knowledge and/or skills like to have a crack?
Thanks!
[1]
http://stackoverflow.com/questions/127704/algorithm-to-return-all-combinations-of-k-elements-from-n
More information about the Digitalmars-d-learn
mailing list