[ create a new paste ] login | about

Link: http://codepad.org/2VXaKRvX    [ raw code | output | fork ]

Python, pasted on Mar 18:
## stats = {'r0': None, 'r1': None, 'data'}

merge_range = lambda a,b: str(a) if a==b else '%d-%d'%(a,b)

def fold(num_seq):
    prev = num_seq[0]
    num_seq = num_seq[1:]
    data = [prev]

    for n in num_seq:
        ##print prev, n, data[-1]
        if n - prev > 1:
            # break the reducing
            data[-1] = merge_range(data[-1], prev)
            data.append(n)  ## append the range start
        prev = n ## update the prev number

    return data

samples = [1, 2, 3, 5, 6, 7, 9, 11, 13, 14, 15, 21]

print fold(samples)

      


Output:
1
['1-3', '5-7', '9', '11', '13-15', 21]


Create a new paste based on this one


Comments: