Guión
Estoy usando la pantalla de bloqueo de coincidencia de patrones y lamentablemente olvidé mi patrón. Me gustaría saber cuánto tiempo necesitaré para desbloquearlo. Aquí están las especificaciones de la pantalla de bloqueo de Google, que utilizaremos para este desafío.
- Cada 5 códigos incorrectos, el usuario tiene que esperar
30 seconds
antes de cualquier entrada adicional. Un patrón debe, al menos, consistir en
4 points
(ver más abajo)Un punto solo se puede usar una vez, pero puede repasarlo varias veces (vea la imagen a continuación):
Aquí, el punto central solo se usa una vez, incluso si lo revisamos nuevamente para este patrón particular.
Hipótesis y hechos
Asumiremos que somos superhéroes y que podemos dibujar cualquier patrón 1 second
, nunca necesitamos comer ni dormir. Sí, somos superhumanos.
Soy una persona muy desafortunada. El "peor de los casos" es mi vida diaria, por lo que el patrón que intentaré al final será el correcto.
¿Qué tenemos que empeñar?
Para aquellos que no lo saben, Android (y otros teléfonos ahora) ofrece la capacidad de desbloquear el teléfono dibujando un patrón en una matriz de 9 puntos. Esta matriz se puede describir de la siguiente manera:
C(A) M(B) C(C)
M(D) X(E) M(F)
C(G) M(H) C(I)
- C significa "punto de esquina"
- M para "punto medio"
- X para "punto central"
- He dado identificadores a los puntos para que sea más fácil.
Las conexiones directas permitidas son las siguientes:
Punto de esquina:
Punto Medio :
Punto central :
Sin embargo, como señaló steveverrill, "una vez que se ha utilizado el centro (y, por lo tanto, no está disponible), una conexión directa entre la esquina inferior izquierda y la superior derecha se vuelve inequívoca y, por lo tanto, posible". Lo mismo ocurre con cada "punto medio", si, por ejemplo, el punto B ya ha sido contado, entonces es posible una conexión directa entre A y C. Si, por ejemplo, F ya se ha contado, entonces es posible una conexión directa entre C e I. Etc ...
Reglas
- El objetivo de este desafío es devolver la cantidad de tiempo (en forma legible para humanos, también conocido como año / día / mes / hora / cualquier hora que encuentre) que necesitaré para desbloquear este maldito teléfono.
- No puede codificar el número de posibles patrones válidos (ni siquiera Google, tonto), calcularlo (esa es la parte divertida, ¿no?)
- La pieza de código más corta gana
- Buena suerte !
fuente
Respuestas:
Rebmu :
197 175 168167 caracteresGenera combinaciones como una serie de números (por ejemplo, 12369 es de arriba a la izquierda a arriba a la derecha a abajo a la derecha), comprueba si la combinación es válida e incrementa un contador si lo es. Esto puede tardar un tiempo * en ejecutarse. Devuelve el número de segundos necesarios para desbloquear el teléfono.
Desquiciado y comentado:
El programa realiza un bucle de 1 a (987654321-1233), verificando el contador de bucles 1233 + (por lo tanto, verificando 1234 a 987654321).
Si el número
987653088
se reemplaza con,9876-1233
o8643
, entonces el programa encontrará el tiempo necesario para todas las combinaciones de 4 puntos.Salida para
9876-1233=8643
(combinaciones de 4 puntos):Salida para
98765-1233=97532
(combinaciones de 4 y 5 puntos):Salida para
987654-1233=986421
(combinaciones de 4,5,6 puntos):* 4/5 puntos me tomó alrededor de 8 segundos para correr; 4-6 tomó alrededor de 77 segundos. Puede tomar ~ 24 horas o más dependiendo de quién ejecuta esto para calcular el número de combinaciones para combinaciones de 4-9 puntos.
fuente