рдкреГрд╖реНрдарднреВрдорд┐: рдореЗрд░реА рдкрддреНрдиреА рд▓рдЧрд╛рддрд╛рд░ рдореБрдЭреЗ рдХрд┐рд╕реА рддрд░рд╣ рдЦрд░рд╛рдм рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреА рд╣реИ: 3 рдмрдЬреЗ рдЕрд▓рд╛рд░реНрдо рд╕реЗрдЯ рдХрд░реЗрдВ, рд░рд┐рдВрдЧрдЯреЛрди рдмрджрд▓реЗрдВ, рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдлрд╛рдбрд╝ рджреЗрдВ, рдЙрд╕рдХрд╛ рдПрд╕рдПрдордПрд╕ рд╣рдЯрд╛рдПрдВ рдФрд░ рдлрд┐рд░ рд╕рд╛рдмрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЙрд╕рдиреЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд╣рд╛ рд╣реИред
рдордЬрд╛рдХ рдХреЗ рд░реВрдк рдореЗрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛: "рдкрд░реНрдпрд╛рдкреНрдд!" - рдФрд░ рдореЗрд░реЗ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдЧреНрд░рд╛рдлрд┐рдХ рдкрд╛рд╕рд╡рд░реНрдб рдбрд╛рд▓ рджрд┐рдпрд╛ред

рдкрддреНрдиреА рдиреЗ рдореБрд╕реНрдХреБрд░рд╛рддреЗ рд╣реБрдП рдХрд╣рд╛ рдХрд┐ рд╡рд╣ рдЗрд╕реЗ рдЙрдард╛рдПрдЧреАред рдЬрд╡рд╛рдм рдореЗрдВ рдореБрдЭреЗ рд╣рдВрд╕реА рдЖрдИ, рдФрд░ рд╡реЗ рднрд╛рдЧ рдЧрдПред рдХреЗрд╡рд▓ рдЕрдм рд╡рд╣ рдЗрд╕ рд╕рд╡рд╛рд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рдереА рдХрд┐ рдХреИрд╕реЗ рдЙрдард╛рдпрд╛ рдЬрд╛рдП, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕ рдШрдЯрдирд╛ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреНрдпрд╛ рд╣реИред
рдмрд╣реБрдд рдкрд╣рд▓реЗ рдФрд░ рддрд╛рд░реНрдХрд┐рдХ рд╡рд┐рдЪрд╛рд░ рд╕рдВрдпреЛрдЬрди рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдЧрдгрд┐рддреАрдп рддрд░реАрдХреЗ рдХреЗ рд╕рд╛рде рдЖрдирд╛ рд╣реИред
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╢рд░реНрддреЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:
- рджрд┐рд╢рд╛ рдорд╛рдпрдиреЗ рд░рдЦрддреА рд╣реИ
- рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рдВрджреБ рдкрд░ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдкрд╣реБрдВрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рджреГрд╖реНрдЯрд┐ рдХреА рд╕реАрдзреА рд░реЗрдЦрд╛ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣реА рд╣реИ, рдкрд╣рд▓реЗ рдХреЛ рджреВрд╕рд░реА рдЙрдВрдЧрд▓реА рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рддреАрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдирд╣реАрдВред
- рдЕрдВрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛: 5 рд╕реЗ 9. рдЪрд▓реЛ рдПрдХ рд╕реНрдЯреНрд░реЛрдХ, рдПрдХ рдХрдиреЗрдХреНрд╢рди - рд╣реЙрдк рдХрд╣рддреЗ рд╣реИрдВред рдпрд╣реА рд╣реИ, рд╣рдо 4 рд╕реЗ 8 рд╣реЙрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЧрдгрд┐рддреАрдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдЕрд╕рдлрд▓ рд░рд╣рд╛ред рд▓рдЧрд╛рдП рдЧрдП рдирд┐рдпрдореЛрдВ рдиреЗ рдирд┐рдпрдореЛрдВ рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреАред
рдЕрдЧрд▓рд╛ рдХрджрдо: рдкрд░реНрджрд╛рдлрд╛рд╢ред рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рд╣рдЬрд╛рд░реЛрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рд╕рднреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ред рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рдкреИрдЯрд░реНрди рдЦреЛрдЬрдиреЗ рдХрд╛ рдерд╛ред
рдореИрдВрдиреЗ рдХрдИ рдШрдВрдЯреЗ рдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рдмрд┐рддрд╛рдПред рд▓реЗрдХрд┐рди рд╕рднреА рдХрд╛рдиреВрди рд╕рдорд░реВрдкрддрд╛ рдФрд░ рдЗрд╕ рддрдереНрдп рдкрд░ рдЖрд░рд╛рдо рдХрд░рддреЗ рдереЗ рдХрд┐ рд╕рднреА рдХреЛрдиреЗ рдмрд┐рдВрджреБ рд╕рдорд╛рди рд╣реИрдВ, рдЬреИрд╕реЗ рд╕рднреА рдордзреНрдпрд╡рд░реНрддреА (рдХреЗрдВрджреНрд░реАрдп рдХреЛ рдЫреЛрдбрд╝рдХрд░)ред


рд▓реЗрдХрд┐рди рдореБрд╢реНрдХрд┐рд▓реЗрдВ рд╣рдореЗрдВ рдХрдм рдбрд░рд╛рддреА рд╣реИрдВ?
рдореИрдВрдиреЗ рдПрдХ рд╣реА рд╣реЙрдк рдХреЗ рд╕рд╛рде рд╕рднреА рдХреА рд╢реБрд░реБрдЖрдд рдХреАред

1 рд╣реЙрдк - рдзрдорд╛рдХреЗрджрд╛рд░ рд╢рд▓рдЬрдо рд╕реЗ рдЖрд╕рд╛рди - 56 рд╡рд┐рдХрд▓реНрдк,
2 рд╣реЙрдк - рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ - 320 рд╡рд┐рдХрд▓реНрдк
3 рд╣реЙрдк - рдХрдбрд╝реА рдореЗрд╣рдирдд рдХрд░рдиреА рдкрдбрд╝реА - 1624 рд╡рд┐рдХрд▓реНрдк
4 рд╣реЙрдк - рдпрд╣ рдерд╛, рдЕрд╣рдо, рдердХрд╛ - 7152 рд╡рд┐рдХрд▓реНрдк
5 рд╣реЙрдк - рдорд╛рдБ рдорд┐рдпрд╛ рдФрд░ рдлрдЯреЗ рд╣реБрдП рдмрд╛рд▓ - рдкрд░рд┐рдгрд╛рдо рдЕрдЬреНрдЮрд╛рдд рд╣реИред
рддрдм рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рджрд┐рдорд╛рдЧ рдХрд╛ рдмрд▓рд╛рддреНрдХрд╛рд░ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ рдФрд░ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рднреВрд▓реА рд╣реБрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЛ рдпрд╛рдж рд░рдЦреВрдВрдЧрд╛ред
рдЙрдиреНрд╣реЛрдВрдиреЗ рдЯрд░реНрдмреЛрдкреИрд╕реНрдХрд▓ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд┐рдпрд╛, рдЪрд░ рд╕реЗ рдзреВрд▓ рдХреЛ рдмреНрд░рд╢ рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред
рдмреИрд╢ рдкрд░ 4 рд╕рд╛рд▓ рдХреЗ рдард╣рд░рд╛рд╡ рдФрд░ рд╕рд░рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдореЗрдВ рдкреВрд░реА рд╢рд╛рдо рд▓рдЧ рдЧрдИред рднрд▓реЗ рд╣реА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд▓рдЧрднрдЧ 20 рдорд┐рдирдЯ рдореЗрдВ рдкреИрджрд╛ рд╣реБрдЖ рдерд╛ред

рдХреЛрдб рд╣реАProgram First;
Uses Crt;
VAR
i,j,k,cur_i,cur_j,hop_count:byte;
A:array[1..3,1..3] of byte;
Bom:Array[1..10000,1..5] of byte;
path_num,total,m,n:longint;
Procedure PATH(cur_i,cur_j:byte; k:byte);
VAR
i,j:byte;
m,n:integer;
begin
{We will calclate only path amount, but not detailed paths, because of
limitation to array size.
Actually you can make detailed path up to 5 hops. You just should uncomment
calculating of array 'Bom'}
A[cur_i,cur_j]:=1;
for i:=1 to 3 do
begin
for j:=1 to 3 do
begin
{ Bom[path_num,k]:=cur_i*10+cur_j;}
if k<hop_count then
begin
{Checking possibility of doing next-hop}
if (A[i,j]=0)and
not(
((i=cur_i)and(abs(j-cur_j)>1)and(A[i,2]=0))
or
((j=cur_j)and(abs(i-cur_i)>1)and(A[2,j]=0))
or
( (abs(i-cur_i)>1) and (abs(j-cur_j)>1) and (A[2,2]=0))
)
then
begin
{We will enlarge path number if hop amount in path is
qual to actual hop amount only}
if k=hop_count then
begin
path_num:=path_num+1;
{ Bom[path_num,k+1]:=i*10+j;}
end;
A[i,j]:=1;
{Recursive running of path calculation}
PATH(i,j,k+1);
A[i,j]:=0;
end;
end
else
begin
if (A[i,j]=0)and
not(
((i=cur_i)and(abs(j-cur_j)>1)and(A[i,2]=0))
or
((j=cur_j)and(abs(i-cur_i)>1)and(A[2,j]=0))
or
( (abs(i-cur_i)>1) and (abs(j-cur_j)>1) and (A[2,2]=0))
)
then
begin
{Enlarge path number after exit out of procedure}
{ Bom[path_num,k+1]:=i*10+j;}
path_num:=path_num+1;
end;
end;
end;
end;
end;
begin
{A[x,y] - Array of 0 and 1.
0 - this point isn't in path yet. You can move here.
1 - this point is in path already. You can't move here.
}
ClrScr;
writeln ('Hello, Habrahabr. Let','''','s count amount of Android Graphical passwords.');
writeln;
i:=1;
j:=1;
k:=1;
for hop_count:=4 to 8 do
begin
path_num:=1;
for i:=1 to 3 do
for j:=1 to 3 do
begin
{ Bom[path_num,k]:=10*i+j;}
PATH(i,j,k);
a[i,j]:=0;
end;
writeln('Hops: ',hop_count,'. Path amount: ',path_num-1);
total:=total+path_num-1;
end;
writeln('===========================');
writeln('Total amount: ',total);
{Output of full list of paths.}
{for m:=1 to path_num do
begin
write('Path ', m,': (');
for n:=1 to hop_count+1 do
begin
write(Bom[m,n],' ');
end;
writeln(')');
readln;
end;{}
readln;
end.
. , 1 4 , 8 тАФ , .

64 . Byte . , 4 :
UPD. .
.
11-22-31-32-12:

:

,
389488 .
50% , , , (, ), 194744

20 , .
, 20/194744=,0001. , 0,01%. !
тАЬ-тАЭ тАФ , . тАЬ-тАЭ тАФ , .
