Advertisement
Guest User

Untitled

a guest
Oct 9th, 2015
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.21 KB | None | 0 0
  1. import timeit
  2. data_c = """data = [1, 2, 3, 5, 6, 8, 9, 10, 12, 14, 15, 16, 1000, 1101, 1102, 1103]
  3. """
  4.  
  5.  
  6. code_gw = data_c + """
  7. def sequence_machine(data):
  8.    one, two, many, r = '%s,', '%s,%s,', '%s-%s,', ''
  9.  
  10.    if data:
  11.        if len(data) == 1:
  12.            return '%s' % data[0]
  13.  
  14.        if len(data) == 2:
  15.            return '%s,%s' % (data[0], data[1])
  16.  
  17.        sequence_len, first = 1, data[0]
  18.        last = first
  19.        for el in data[1:]:
  20.            if el - last > 1:
  21.                sequence_len = last - first + 1
  22.                if sequence_len > 2:
  23.                    r += many % (first, last)
  24.                else:
  25.                    r += (sequence_len == 1 and one % last) or two % (first, last)
  26.                first, last = el, el
  27.  
  28.                continue
  29.  
  30.            last = el
  31.            # sequence_len += 1
  32.  
  33.        sequence_len = last - first + 1
  34.        if sequence_len != 1:
  35.            if sequence_len == 2:
  36.                return r + '%s,%s' % (first, last)
  37.  
  38.            return r + '%s-%s' % (first, last)
  39.  
  40.        return r + '%s' % last
  41.  
  42.    return ''
  43. """
  44.  
  45. print 'xxl', timeit.timeit(
  46.     'sequence_machine(data)',
  47.     setup=code_gw, number=run_count
  48. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement