Giter Site home page Giter Site logo

patterns_test's Introduction

Patrones de desbloqueo de pantalla

Podrás ver como muchos smartphones usan el patrón geométrico como una medida de seguridad. Para desbloquear el dispositivo, debes conectar una secuencia de puntos en una cuadrícula deslizando el dedo sin levantar mientras trazas el patrón en la pantalla.

La imagen inferior muestra un ejemplo de patrón de 7 puntos: (A -> B -> I -> E -> D -> G -> C).

zmPNYdv

Implementa una función que devuelva el número posible de patrones, empezando desde cualquier punto de la cuadrícula, dada una longitud de patrón específica.

Más concretamente, para una función count_patterns_from(first_point, length), el parámetro 'first_point' es un carácter correspondiente al punto de la cuadrícula (ejemplo: 'A') donde el patrón empieza, y el parámetro 'length' es un número entero que indica el número de puntos (longitud) que cada patrón debe tener.

Por ejemplo, count_patterns_from("C", 2), debería devolver el número de patrones posibles empezando desde el punto inicial 'C' que tengan 2 puntos de longitud. El valor devuelto en este caso sería 5, porque hay 5 patrones posibles:

(C -> B), (C -> D), (C -> E), (C -> F) and (C -> H).

Ten en cuenta que esta función debe devolver el número de patrones, no los patrones en sí mismos, así que solo debes contarlos.

Reglas

  1. En un patrón, los puntos no se pueden repetir: solo se deben usar una vez, como máximo.
  2. En un patrón, dos puntos consecutivos solo se pueden conectar con líneas rectas directas de cualquiera de las siguientes maneras:
  • Horizontalmente: Como (A -> B) en el ejemplo de la imagen.
  • Verticalmente: Como (D -> G) en el ejemplo de la imagen.
  • Diagonalmente: Como (I -> E), o (B -> I), en el ejemplo de la imagen.
  1. Pasando a través de un punto que ya ha sido usado: como (G -> C) pasando a través de E, en el ejemplo de la imagen. Esta es la regla más complicada. Normalmente, no deberías poder conectar G con C, porque E está entre ellas, pero como E ya ha sido usado como parte del patrón que estás trazando, puedes conectar G con C pasando a través de E, porque E es ignorada.

Anécdota

Por curiosidad, el patrón de desbloqueo de la pantalla de bloqueo de Android debe tener una longitud de entre 4 y 9 puntos. Es decir, que hay 389112 posibles maneras en las que puedes bloquear tu dispositivo en Android.

patterns_test's People

Contributors

roger-solis-yumminn avatar vijo95 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.