Android 휴대 전화의 잠금을 해제하는 데 시간이 얼마나 걸립니까?


12

대본

패턴 일치 잠금 화면을 사용하고 있으며 슬프게도 패턴을 잊었습니다. 잠금을 해제하는 데 얼마나 많은 시간이 필요한지 알고 싶습니다. 이 도전에 사용할 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
  • 더 쉽게하기 위해 포인트에 식별자를 부여했습니다.

허용되는 직접 연결은 다음과 같습니다.

코너 포인트 :

모서리

중간 점 :

가운데

중심점 :

센터

그러나 steveverrill이 지적한대로 "중심이 사용되면 (따라서 사용할 수 없게 됨) 왼쪽 하단과 오른쪽 상단 모서리 사이의 직접 연결이 명확 해 지므로 가능합니다". 예를 들어 B 지점이 이미 계산 된 경우 "중간 지점"마다 동일하게 적용되며 A와 C 사이의 직접 연결이 가능합니다. 예를 들어 F가 이미 계산 된 경우 C와 I를 직접 연결할 수 있습니다. 기타...

규칙

  • 이 도전의 요점은이 망할 전화의 잠금을 해제하는 데 필요한 시간 (사람이 읽을 수있는 형태, 일 년 / 일 / 월 / 시간 / 시간 / 시간)을 반환하는 것입니다.
  • 유효한 패턴의 수를 하드 코딩 할 수 없으며 (Google조차도 바보가 아닙니다) 계산하십시오 (실제로는 재미있는 부분입니까?)
  • 가장 짧은 코드 승리
  • 행운을 빕니다 !

2
Android가 없지만 귀하의 예제가 허용 된 직접 연결을 위반하는 것으로 나타납니다. 일단 센터가 사용되면 (따라서 사용할 수 없게 됨) 왼쪽 하단과 오른쪽 상단 모서리 사이의 직접 연결이 모호하지 않으므로 가능할 것으로 추측합니다.
Level River St

1
이 잠금 화면 사용자는 충분한 손가락 정밀도로 사용하지 않는 두 지점을 연결할 수 있다는 것이 거의 전적으로 확신합니다.
OUurous

4
@Ourous : 적어도 내 휴대 전화에서 손가락을 점 주위로 이동하여 양쪽에 점을 연결하면 그 사이의 점이 시퀀스에 삽입되어 어쨌든 사용 된 것으로 계산됩니다.
user2357112는 Monica

1
@steveverrill : 당신 말이 맞아요, 그것에 대해 팁을 추가했습니다. 나는 그것이 좋은 설명이라고 생각했기 때문에 내가 당신을 직접 인용 한 것을 신경 쓰지 않기를 바랍니다.

1
"유효한 유효한 패턴 수를 하드 코딩 할 수 없습니다"는 관찰 가능한 요구 사항이 아닙니다.
Ad Hoc Garf Hunter

답변:


2

Rebmu : 197 개 175 168 167 문자를

조합을 일련의 숫자로 생성하고 (예 : 12369는 왼쪽 상단에서 오른쪽 상단에서 오른쪽 하단), 조합이 유효한지 확인하고 유효한 경우 카운터를 증가시킵니다. 실행 하는 데 다소 시간이 걸릴 수 있습니다 * . 전화 잠금을 해제하는 데 필요한 시간 (초)을 반환합니다.

B[[2 13][4 17][6 39][8 79][5 19][5 28][5 37][5 46][a 0]]Fdz[Q1feCb[st[a]paStsC/1 Qa^Qa^e?NNfiAtsC/2 e?NNfiArvTSc/2]]rpJ987653088[StsADj1233iA^e?SuqSf[++K]]adKmp30dvK 5

잘 풀리지 않은 의견 :

; for each subarray c: 
; the sequences c/2 and c/3 are invalid before the point c/1 is pressed
; a 0 - a is never in the sequence, therefore 0 is always invalid
b: [[2 13] [4 17] [6 39] [8 79] [5 19] [5 28] [5 37] [5 46] [a 0]]
; checks (most) conditions of validity
f: dz[
    ; set q to 1
    q: 1
    ; foreach array in b as c
    fe c b [
        ; set a to be portion of s before c/1
        st [a] pa s ts c/1
        ; q = q and (a does not contain c/2) and (a does not contain reverse of c/2)
        q: a^ q 
           a^ e? nn fi a ts c/2 
              e? nn fi a ts rv c/2
    ]
]
; repeat 98765308 times, with j = 1 to 98765308
; 987653088 = 987654321 (largest valid combination) - 1234 (smallest valid combination) + 1
rp j 987653088 [
    ; set s to j+1233 (smallest valid combination - 1) as a string
    s: ts ad j 1233 
    ; if f returns trues and s does not contain duplicates, increment k
    i a^ e? s uq s 
          f
     [++ k]
]
; print k (number of combinations) + 30 * (k/5) -> number of seconds needed
ad k mp 30 dv k 5

프로그램은 1에서 (987654321-1233)까지 반복하여 1233+ 루프 카운터를 확인합니다 (따라서 1234에서 987654321까지 확인).

숫자 9876530889876-1233또는 로 대체 8643되면 프로그램은 모든 4 점 조합에 걸린 시간을 찾습니다.

9876-1233=8643(4 점 조합)에 대한 출력 :

>> rebmu %combinations.rebmu
== 11344

98765-1233=975324 점 및 5 점 조합의 출력 :

>> rebmu %combinations.rebmu
== 61426

987654-1233=986421(4,5,6 점 조합)에 대한 출력 :

>> rebmu %combinations.rebmu
== 243532

* 4 / 5 포인트는 실행하는 데 약 8 초가 걸렸습니다. 4-6 시간은 약 77 초가 걸렸습니다. 4-9 포인트 조합의 조합 수를 계산하기 위해 누가 이것을 실행하는지에 따라 ~ 24 시간 이상이 걸릴 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.