El Android impone estas condiciones en los patrones:
- Cada patrón debe conectar al menos cuatro puntos.
- Los puntos en el patrón deben ser distintos.
- Si el segmento de línea que conecta dos puntos consecutivos en el patrón pasa a través de otros puntos, los otros puntos deben haber estado previamente en el patrón.
En estas condiciones, puede crear 389112 patrones distintos , como se calcula con el siguiente programa Haskell:
dots = [(row, col) | row <- [0..2], col <- [0..2]] line (r, c) (r', c') = takeWhile (/= (r', c')) $ zip [r, r + (r' - r) `div` g ..] [c, c + (c' - c) `div` g ..] where g = gcd (r' - r) (c' - c) extensions [email protected] (dot : _) = [new : pattern | new = 4 main = print . length . filter valid . foldr search [] $ map return dots
Este número es confirmado por Adam J. Aviv, Katherine Gibson, Evan Mossop, Matt Blaze, Jonathan M. Smith, “Ataques de manchas en pantallas táctiles de teléfonos inteligentes”, en Proc. 4th USENIX WOOT , 9 de agosto de 2010, págs. 1-7:
- ¿Por qué los decibelios cambian con la distancia para el mismo sonido? Si es una 'medida', ¿por qué no es como una pulgada que siempre es la misma cantidad?
- ¿Quiénes son las leyendas vivas indias en matemáticas?
- ¿Cuál es el mejor libro sobre un cálculo variable?
- ¿Hay un espacio matemático en el que converjan todas las secuencias?
- ¿Es posible hacer ecuaciones diferenciales en tu cabeza?
Debido a la restricción del punto de contacto intermedio, el espacio de contraseña del patrón de contraseña de Android contiene 389,112 posibles patrones⁴.
⁴ Debido a la complejidad de la restricción del punto de contacto intermedio, calculamos este resultado mediante métodos de fuerza bruta.