Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

BinaryGap

Boa tarde,

Estava procurando alguns exercícios para fazer o gostaria de postar aqui pra galera mais experiente dar uma olhada, ver se tem erros e dar algumas dicas de melhoria do código.

Desde já agradeço a ajuda de todos.

A descrição do exercício é esta:

Um espaço binário dentro de um número inteiro positivo N é qualquer sequência máxima de zeros consecutivos que é cercada por um em ambas as extremidades na representação binária de N.

Por exemplo, o número 9 tem representação binária 1001 e contém um espaço binário de comprimento 2. O número 529 tem representação binária 1000010001 e contém duas lacunas binárias: uma de comprimento 4 e outra de comprimento 3. O número 20 tem representação binária 10100 e contém um espaço binário de comprimento 1. O número 15 tem representação binária 1111 e não possui espaços binários. O número 32 tem representação binária 100000 e não possui lacunas binárias.

Escreva uma função: solução def (N)

def lacuna_binaria(num):
    binario = format(num, 'b')
    lista_num = binario.split("1")
    indice_a_ser_deletado = len(lista_num)
    del (lista_num[indice_a_ser_deletado - 1])

    while "" in lista_num:
        lista_num.remove("")

    lista_num = (sorted(lista_num, reverse=True))

    if len(lista_num) == 0:
        return "0"
    else:
        return len(lista_num[0])

print(lacuna_binaria(1041))
2 respostas
solução!

Oiii Igor, como você está? Espero que esteja bem ^-^

Você está mandando bem!

Seu código ficou muito bom, alguns pontos que você mandou super bem e agiu conforme as boas práticas:

  • colocou nomes descritivos as variáveis
  • encapsulou em função

Algumas sugestões:

  • Testar se o código está sendo executado no módulo principal:
if __name__ == '__main__':
    print(lacuna_binaria(1041))
  • Outra opção ao invés de ordenar a lista e devolver o primeiro valor dela, é retirar o tamanho do maior elemento da lista. Exemplo:
return len(max(lista_num, key=len))

Espero ter te ajudado e qualquer dúvida é só dizer. Estou à disposição. Abraços e bons estudos!

Obrigado pela resposta.