from itertools import combinations from itertools import product def compute(a,b): return abs(a-b) A = [0,3,3,7,5,3,11,1] dict = {} min = A[0] max = A[0] for i in range(len(A)): if A[i] in dict: dict[A[i]].append(i) else: dict[A[i]] = [i] if A[i] < min: min = A[i] elif A[i] > max: max = A[i] prev = dict[min] combs = [] for i in range(min+1,max+1,1): if i in dict: prev.extend(dict[i]) prev.sort() comb = list(combinations(prev, 2)) combs.extend(comb) prev = dict[i] min = compute(A[combs[0][0]], A[combs[0][1]]) for couple in combs: value = compute(A[couple[0]], A[couple[1]]) if value < min: min = value print(min)