On 09/07/2014 15:27, sssdevelop wrote:
Hello,

I have working code - but looking for better/improved code. Better coding 
practices, better algorithm :)

Problem: Given sequence of increasing integers, print blocks of consecutive 
integers.

Example:

Input: [10, 11, 12, 15]
Output: [10, 11, 12]

Input: [51, 53, 55, 67, 68, 91, 92, 93, 94, 99]
Outout: [67, 68], [91, 92, 93, 94]

My code looks as below:
-----------------------------
#!/usr/bin/python
a = [51, 53, 55, 67, 68, 91, 92, 93, 94, 99]
#a = []
#a = [10]
#a = [10, 11, 12, 15]
print "Input: "
print  a

prev = 0
blocks = []
tmp = []
last = 0
for element in a:
    if prev == 0:
       prev = element
       next
    if element == prev + 1:
        if tmp:
            pass
        else:
            tmp.append(prev)
        tmp.append(element)
    else:
        if tmp:
           blocks.append(tmp)
        tmp = []

    prev = element

if tmp:
     blocks.append(tmp)

if blocks:
     #print "I have repeated elements and those are:"
     for b in blocks:
         print b

-----------------------

thank you in advance!


Adopted from here https://docs.python.org/3.0/library/itertools.html

data = [51, 53, 55, 67, 68, 91, 92, 93, 94, 99]
for k, g in groupby(enumerate(data), lambda t:t[0]-t[1]):
    group = list(map(operator.itemgetter(1), g))
    if len(group) > 1:
        print(group)

>>>
[67, 68]
[91, 92, 93, 94]
>>>

--
My fellow Pythonistas, ask not what our language can do for you, ask what you can do for our language.

Mark Lawrence

---
This email is free from viruses and malware because avast! Antivirus protection 
is active.
http://www.avast.com


--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to