Padrões e sequências
Achar a regra que explica todos os termos de uma sequência e usá-la para prever o próximo.
Uma sequência esconde uma regra, e a regra certa explica todos os termos, não só os primeiros. O método é testar ideias simples, uma de cada vez, e conferir com a sequência inteira.
Perguntas que costumam revelar a regra:
| Pergunta | Exemplo | Regra |
|---|---|---|
| Qual a diferença entre vizinhos? | 5, 8, 11, 14 | soma 3 |
| E a diferença das diferenças? | 1, 3, 7, 13 (diferenças 2, 4, 6) | as diferenças crescem de 2 em 2 |
| Um é múltiplo do anterior? | 3, 6, 12, 24 | dobra |
| Depende dos dois anteriores? | 1, 1, 2, 3, 5 | soma os dois anteriores |
| Depende da posição n? | 1, 4, 9, 16 | n x n |
| Não é conta? | 1, 11, 21, 1211 | descreve o termo anterior em voz alta |
Exemplo trabalhado. Em 3, 7, 15, 31, as diferenças são 4, 8, 16: dobram. Testando "o anterior vezes 2, mais 1": 3 x 2 + 1 = 7, 7 x 2 + 1 = 15, 15 x 2 + 1 = 31. Explica tudo, então o próximo é 31 x 2 + 1 = 63. Em Python, para conferir uma regra em todos os termos de uma vez:
s = [3, 7, 15, 31]
all(s[i+1] == 2*s[i] + 1 for i in range(len(s) - 1)) # True
Isso importa em segurança porque tudo que é previsível pode ser atacado: senhas que seguem um padrão, números de pedido que crescem de um em um, códigos de recuperação gerados por uma regra simples. Quem acha a regra adivinha o próximo valor.