Find the largest sequence using Python

Asked

Viewed 448 times

0

I have the following code:

import collections
num = int(input('Digite um número inteiro: '))    #Inputar número inteiro
binario = bin(num)[2:]     #Cortar o 0b
sequence = binario
collection = collections.Counter(sequence)
print('O número binário de {} é {}'.format(num,binario))
print('A sequência que mais temos é {}'.format(collection.most_common(2)))

It already shows me how many times the number 1 and 0 appears in each binary number; But now I need it to find the largest sequence of 0 for example in 200 binary is 11001000 in the case the largest sequence of 0 is 3; I wanted to solve this in the program itself.

  • Have you tried anything? What was the result?

1 answer

5


You can do it like this:

max(binario.split('1'), key=len)

This way I create a array separating by 1, then use the function max to catch the biggest len, resulting in the largest sequence of zeroes.

Using your own code:

import collections
num = int(input('Digite um número inteiro: '))    #Inputar número inteiro
binario = bin(num)[2:]     #Cortar o 0b
sequence = binario
collection = collections.Counter(sequence)
print('O número binário de {} é {}'.format(num,binario))
print('A sequência que mais temos é {}'.format(collection.most_common(2)))
print('A maior sequência de 0 é {}'.format(max(binario.split('1'), key=len)))

Upshot:

Digite um número inteiro: 200
O número binário de 200 é 11001000
A sequência que mais temos é [('0', 5), ('1', 3)]
A maior sequência de 0 é 000

Update

A new way to respond to what was requested in the comments. To show the most number of digits 0 repeated, put the function len, so he takes the number of digits from the string.

len(max(binario.split('1'), key=len)))

Using your own code:

import collections
num = int(input('Digite um número inteiro: '))    #Inputar número inteiro
binario = bin(num)[2:]     #Cortar o 0b
sequence = binario
collection = collections.Counter(sequence)
print('O número binário de {} é {}'.format(num,binario))
print('A sequência que mais temos é {}'.format(collection.most_common(2)))
print('A maior sequência de 0 é {}'.format(len(max(binario.split('1'), key=len))))

Upshot:

Digite um número inteiro: 200
O número binário de 200 é 11001000
A sequência que mais temos é [('0', 5), ('1', 3)]
A maior sequência de 0 é 3
  • The code works very well, but then as I would do instead of appearing numerous zeros in the result it presents an example: the largest sequence of 0 is 5.

  • I don’t understand, I think your message is missing something

  • So instead of presenting the result 0000 presents the result 4; Instead of it present in zeroes present already in the unit in case count how many.

  • I edited and put the result, I still don’t understand what you mean, you want to be shown the index?

  • So in the case at this point of the code: The largest sequence of 0 is 000; I would like it to appear The largest sequence is 3 (in case 3 x 000)

  • I edited, I believe that now this the way you want

  • 1

    Perfect was just that, very grateful!

  • Cool! (+1). Another variant: max(map(len,b.split('1')))

Show 3 more comments

Browser other questions tagged

You are not signed in. Login or sign up in order to post.