Scenariusz
Używam ekranu blokady pasującego do wzoru i niestety zapomniałem o swoim wzorze. Chciałbym wiedzieć, ile czasu będę potrzebował, aby go odblokować. Oto specyfikacje ekranu blokady Google, którego użyjemy do tego wyzwania.
- Co 5 złych kodów użytkownik musi czekać
30 seconds
przed dalszym wprowadzaniem. Wzór musi przynajmniej składać się
4 points
(patrz poniżej)Punktu można użyć tylko raz, ale można go kilkakrotnie przejść (patrz zdjęcie poniżej):
Tutaj punkt środkowy jest używany tylko raz, nawet jeśli przejdziemy go ponownie dla tego konkretnego wzoru.
Hipoteza i fakty
Zakładamy, że jesteśmy superbohaterami i że możemy narysować dowolny wzór 1 second
, nigdy nie musimy jeść ani spać. Tak, jesteśmy nadludzkimi.
Jestem bardzo pechową osobą. „Scenariusz najgorszego przypadku” to moje codzienne życie, więc wzór, który spróbuję wykonać jako ostatni, będzie właściwy.
Co mamy do powiedzenia?
Dla tych, którzy go nie znają, Android (i inne telefony teraz) oferuje możliwość odblokowania telefonu poprzez narysowanie wzoru na 9-punktowej matrycy. Macierz tę można opisać następująco:
C(A) M(B) C(C)
M(D) X(E) M(F)
C(G) M(H) C(I)
- C oznacza „punkt narożny”
- M dla „punktu środkowego”
- X dla „punktu środkowego”
- Podałem identyfikatory punktów, aby ułatwić
Dopuszczalne połączenia bezpośrednie są następujące:
Punkt narożny:
Środkowy punkt:
Środek :
Jednak, jak zauważył Steveverrill, „gdy środek zostanie wykorzystany (a zatem stanie się niedostępny), bezpośrednie połączenie między lewym dolnym a prawym górnym rogiem staje się jednoznaczne i dlatego możliwe”. To samo dotyczy każdego „punktu środkowego”, jeśli np. Punkt B został już policzony, możliwe jest bezpośrednie połączenie między A i C. Jeśli np. F został już policzony, możliwe jest bezpośrednie połączenie między C i I. Itp...
Zasady
- Celem tego wyzwania jest zwrócenie ile czasu (w postaci czytelnej dla człowieka, czyli rok / dzień / miesiąc / godzina / cokolwiek znajdziesz) będę musiał odblokować ten cholerny telefon.
- Nie możesz zakodować na stałe liczby możliwych prawidłowych wzorców (nawet go nie Google, oszukasz), obliczyć (to właściwie jest fajna część, prawda?)
- Najkrótszy fragment kodu wygrywa
- Powodzenia !
źródło
Odpowiedzi:
Rebmu :
197 175 168167 znakówGeneruje kombinacje jako ciąg liczb (np. 12369 jest od lewego górnego do prawego górnego do prawego dolnego rogu), sprawdza, czy kombinacja jest poprawna, i zwiększa licznik, jeśli tak jest. Uruchomienie może trochę potrwać * . Zwraca liczbę sekund potrzebną do odblokowania telefonu.
Usunięto i skomentowano:
Program zapętla od 1 do (987654321-1233), sprawdzając licznik pętli 1233 + (a zatem sprawdzając 1234 do 987654321).
Jeśli liczba
987653088
zostanie zastąpiona przez,9876-1233
lub8643
, wówczas program znajdzie czas zajęty dla wszystkich kombinacji 4-punktowych.Dane wyjściowe dla
9876-1233=8643
(kombinacje 4-punktowe):Dane wyjściowe dla
98765-1233=97532
(kombinacji 4 i 5-punktowych):Dane wyjściowe dla
987654-1233=986421
(kombinacji 4,5,6-punktowych):* Uruchomienie 4/5 punktu zajęło mi około 8 sekund; 4-6 zajęło około 77 sekund. Obliczenie liczby kombinacji dla kombinacji 4-9 punktów może potrwać ~ 24 godziny lub dłużej.
źródło