Сценарій
Я використовую блакитний екран відповідності шаблону, і я, на жаль, забув свій шаблон. Мені хотілося б знати, скільки часу мені знадобиться для його розблокування. Ось специфікації блокувального екрану Google, які ми використовуватимемо для цього завдання.
- Кожні 5 неправильних кодів користувачеві доводиться чекати
30 seconds
перед будь-яким подальшим введенням. Візерунок повинен, принаймні, міститись
4 points
(див. Нижче)Точку можна використовувати лише один раз, але ви можете перейти її декілька разів (див. Зображення праворуч нижче):
Тут центральна точка використовується лише один раз, навіть якщо ми повторимо її знову для цього конкретного малюнка.
Гіпотеза та факти
Ми будемо вважати, що ми супергерої, і що ми можемо малювати будь-який візерунок 1 second
, нам ніколи не потрібно їсти чи спати. Так, ми нелюди.
Я дуже нещаслива людина. "Найгірший сценарій" - це моє повсякденне життя, тому модель, яку я спробую останньою, буде правильною.
Що ми маємо затримати?
Для тих, хто цього не знає, Android (та інші телефони зараз) пропонує можливість розблокувати телефон, намалювавши візерунок на 9-бальній матриці. Цю матрицю можна описати так:
C(A) M(B) C(C)
M(D) X(E) M(F)
C(G) M(H) C(I)
- C стоїть на "кутовій точці"
- M для "середня точка"
- X для "центральної точки"
- Я дав ідентифікатори точкам, щоб було простіше
Дозволені прямі з'єднання:
Кутова точка:
Середня точка:
Центр:
Однак, як зазначає Стівеверрілл, "щойно центр буде використано (і, отже, стає недоступним), прямий зв'язок між лівим нижнім та правим верхнім кутом стає однозначним і, отже, можливим". Те саме стосується кожної "середньої точки", якщо, наприклад, точка B вже була підрахована, то можливий прямий зв'язок між A і C. Якщо, наприклад, F вже підраховано, можливий прямий зв'язок між C і I. І т.д. ...
Правила
- Сенс цього виклику полягає в тому, щоб повернути скільки часу (у читаній людиною формі, він же рік / день / місяць / годину / незалежно від часу, який ви знайдете) мені потрібно буде розблокувати цей проклятий телефон.
- Ви не можете твердо кодувати кількість можливих дійсних шаблонів (навіть не Google це, дурню), обчислити це (це насправді найцікавіша частина, чи не так?)
- Виграє найкоротший фрагмент коду
- Удачі !