private IList <IList <INumber> > ApplyOperation(IList <INumber> numbers, IndexPair indexPair, Func <INumber, INumber, INumber> operation) { var remaining = GetRemainingNumbers(numbers, indexPair); return(ApplyOperationVariants(numbers[indexPair.A], numbers[indexPair.B], remaining, operation)); }
private IList <INumber> GetRemainingNumbers(IList <INumber> numbers, IndexPair indexPair) { return(indexPair.Remaining.Select(remainingIndex => numbers[remainingIndex]).ToList()); }