fork download
  1. a = [1, 2, 5, 6, 100, 101, 1000, 1001, 100000, 100002, 100004]
  2. d = {}
  3.  
  4. for i in range(len(a)):
  5. for j in range(i + 1, len(a)):
  6. k = a[j] - a[i]
  7. if k in d and a[i] - a[d[k][-1]["start"]] == k:
  8. d[k][-1]["count"] += 1
  9. else:
  10. d[k] = d.get(k, []) + [{"start":i, "count": 1}]
  11.  
  12. flat = ((x[0], i) for x in d.iteritems() for i in x[1])
  13. start = max(flat, key=lambda x: x[1]["count"])
  14. diff, j = start[0], start[1]["start"]
  15. result = [a[j]]
  16. for i in range(j, len(a)):
  17. if a[i] - a[j] == diff:
  18. result.append(a[i])
  19. j = i
  20.  
  21. print result
  22.  
Success #stdin #stdout 0.01s 7728KB
stdin
Standard input is empty
stdout
[100000, 100002, 100004]