fork download
a = [1, 2, 5, 6, 100, 101, 1000, 1001, 100000, 100002, 100004]
d = {}

for i in range(len(a)):
    for j in range(i + 1, len(a)):
        k = a[j] - a[i]
        if k in d and a[i] - a[d[k][-1]["start"]] == k:
            d[k][-1]["count"] += 1
        else:
            d[k] = d.get(k, []) + [{"start":i, "count": 1}]

flat = ((x[0], i) for x in d.iteritems() for i in x[1])
start = max(flat, key=lambda x: x[1]["count"])
diff, j = start[0], start[1]["start"]
result = [a[j]]
for i in range(j, len(a)):
    if a[i] - a[j] == diff:
        result.append(a[i])
        j = i

print result
Success #stdin #stdout 0.01s 7728KB
stdin
Standard input is empty
stdout
[100000, 100002, 100004]