Compute the runs of a string
Pyth, 38 bytes
{smm,hk+ekdfgaFTdcx1xM.ttB+0qVQ>QdZ2Sl
m SlQ map for d in [1, …, len(input)]:
qVQ>Qd pairwise equality of input[:-d] and input[d:]
tB+0 duplicate this list, prepending 0 to one copy
.t Z transpose, padding with 0
xM pairwise xor
x1 find all occurrences of 1
c 2 chop into groups of 2
f filter for groups T such that:
aFT the absolute difference between its elements
g d is greater than or equal to d
m map for groups k:
hk first element
, +ekd pair with the last element plus d
s concatenate
} deduplicate