Percursos
/
Python
Python
/
Exercícios
/
Maior produto de uma série
Maior produto de uma série

Maior produto de uma série

Médio

Introdução

Trabalhas para uma agência governamental que intercetou uma série de sinais de comunicação encriptados de um grupo de assaltantes de bancos. Os sinais contêm uma longa sequência de algarismos. A tua equipa precisa de usar várias técnicas de processamento digital de sinal para analisar os sinais e identificar padrões que possam indicar o planeamento de um assalto.

Instruções

A tua tarefa é procurar padrões na longa sequência de algarismos do sinal encriptado.

A técnica que vais usar aqui chama-se maior produto de uma série.

Vamos definir primeiro alguns termos.

  • parâmetro de entrada: a sequência de algarismos que precisas de analisar
  • série: uma sequência de algarismos adjacentes (aqueles que estão uns ao lado dos outros) contida no parâmetro de entrada
  • amplitude: quantos algarismos tem cada série
  • produto: o que obténs quando multiplicas números entre si

Vamos ver um exemplo, com o parâmetro de entrada "63915".

  • Para formar uma série, toma algarismos adjacentes no parâmetro de entrada original.
  • Se estiveres a trabalhar com uma amplitude de 3, há três séries possíveis:
    • "639"
    • "391"
    • "915"
  • Depois, temos de calcular o produto de cada série:
    • O produto da série "639" é 162 (6 × 3 × 9 = 162)
    • O produto da série "391" é 27 (3 × 9 × 1 = 27)
    • O produto da série "915" é 45 (9 × 1 × 5 = 45)
  • 162 é maior do que 27 e do que 45, por isso o maior produto de uma série de "63915" é o da série "639". Por isso, a resposta é 162.

Mensagens de exceção

Por vezes, é necessário lançar uma exceção. Quando o fazes, deves incluir sempre uma mensagem de erro significativa para indicar qual é a origem do erro. Isto torna o teu código mais legível e ajuda imenso na depuração. Nas situações em que sabes que a origem do erro será de um determinado tipo, podes optar por lançar um dos tipos de erro incorporados, mas deves continuar a incluir uma mensagem significativa.

Este exercício em particular exige que uses a instrução raise para "lançar" um ValueError quando a tua função largest_product() recebe um valor de entrada inválido. Os testes só passam se fizeres raise da exception e incluíres uma mensagem com ela. Podes reutilizar à vontade o teu código do exercício series!

Para lançar um ValueError com uma mensagem, escreve a mensagem como argumento do tipo exception:

# span of numbers is longer than number series
raise ValueError("span must not exceed string length")

# span of number is negative
raise ValueError("span must not be negative")

# series includes non-number input
raise ValueError("digits input must only contain digits")
Editar via GitHub A ligação abre numa nova janela ou separador
Python Exercism

Estás pronto para começar Maior produto de uma série?

Inscreve-te no Exercism para aprenderes e dominares Python com 17 conceitos146 exercícios, e mentoria humana real, tudo grátis.