// Give a groove, like 7-6-6-6, returns all possible permutations. // - 7-6-6-6 // - 6-7-6-6 // - 6-6-7-6 // - 6-6-6-7 public static int[][] GetAvailableGrooves(int[] groove) { ValidateGroove(groove); // Get all permutations var permutations = new List <int[]>(); Utils.Permutations(groove, permutations); return(permutations.ToArray()); }