Cenário
Estou usando a tela de bloqueio de correspondência de padrões e, infelizmente, esqueci meu padrão. Gostaria de saber quanto tempo precisarei para desbloqueá-lo. Aqui estão as especificações da tela de bloqueio do Google, que usaremos para esse desafio.
- A cada 5 códigos incorretos, o usuário precisa aguardar
30 seconds
antes de qualquer entrada adicional. Um padrão deve, pelo menos, consistir em
4 points
(veja abaixo)Um ponto pode ser usado apenas uma vez, mas você pode examiná-lo várias vezes (veja a imagem abaixo):
Aqui, o ponto central é usado apenas uma vez, mesmo se formos examiná-lo novamente para esse padrão específico.
Hipótese e Fatos
Vamos assumir que somos super-heróis e que podemos desenhar qualquer padrão 1 second
, nunca precisamos comer ou dormir. Sim, somos sobre-humanos.
Eu sou uma pessoa muito azarada. "O pior cenário possível" é minha vida diária, portanto o padrão que tentarei por último será o correto.
O que temos que lançar?
Para quem não conhece, o Android (e outros telefones agora) oferece a capacidade de desbloquear o telefone desenhando um padrão em uma matriz de 9 pontos. Essa matriz pode ser descrita da seguinte maneira:
C(A) M(B) C(C)
M(D) X(E) M(F)
C(G) M(H) C(I)
- C em pé para "ponto de canto"
- M para "ponto médio"
- X para "ponto central"
- Eu dei identificadores aos pontos para facilitar
As conexões diretas permitidas são as seguintes:
Ponto de canto:
Ponto do meio:
Ponto central :
No entanto, como apontado por steveverrill, "uma vez que o centro foi usado (e, portanto, fica indisponível), uma conexão direta entre o canto inferior esquerdo e o canto superior direito torna-se inequívoca e, portanto, possível". O mesmo vale para cada "ponto do meio", se, por exemplo, o ponto B já tiver sido contado, é possível uma conexão direta entre A e C. Se, por exemplo, F já foi contado, é possível uma conexão direta entre C e I. Etc ...
Regras
- O objetivo desse desafio é retornar quanto tempo (em forma legível por humanos, também conhecido como ano / dia / mês / hora / qualquer que seja o tempo que você encontrar), precisarei desbloquear esse maldito telefone.
- Você não pode codificar o número possível de padrões válidos (nem mesmo o Google, seu tolo), calculá-lo (essa é realmente a parte divertida, não é?)
- Menor pedaço de código vence
- Boa sorte !