Files
AdventOfCode/EnumerableExtensions.cs
2022-12-08 15:51:56 +01:00

20 lines
497 B
C#

namespace AdventOfCode;
public static class EnumerableExtensions
{
public static IEnumerable<TSource> Flatten<TSource>(this TSource root, Func<TSource, IEnumerable<TSource>> flattener)
{
var toVisit = new Stack<TSource>();
toVisit.Push(root);
while (toVisit.TryPop(out var node))
{
yield return node;
foreach (var child in flattener(node))
{
toVisit.Push(child);
}
}
}
}