diff --git a/AdventOfCode.Extensions/EnumerableExtensions.cs b/AdventOfCode.Extensions/EnumerableExtensions.cs index 6df27a8..20c5efd 100644 --- a/AdventOfCode.Extensions/EnumerableExtensions.cs +++ b/AdventOfCode.Extensions/EnumerableExtensions.cs @@ -117,12 +117,7 @@ public static class EnumerableExtensions cycles[i] -= 1; if (cycles[i] == 0) { - var tmp = indices[i]; - for (var j = i; j < indices.Length - 1; j++) - { - indices[j] = indices[j + 1]; - } - indices[^1] = tmp; + RotateIndices(indices, i); cycles[i] = poolLength - i; } else @@ -135,6 +130,18 @@ public static class EnumerableExtensions } } } + + yield break; + + static void RotateIndices(int[] indices, int from) + { + var tmp = indices[from]; + for (var j = from; j < indices.Length - 1; j++) + { + indices[j] = indices[j + 1]; + } + indices[^1] = tmp; + } } private static TValue[] GetCombination(int[] innerIndices, TValue[] innerPool) =>