рдЧреНрд░рд╛рдлрд┐рдХ рдкрд╛рд╕рд╡рд░реНрдб рднреЗрджреНрдпрддрд╛

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



рдкрддреНрдиреА рдиреЗ рдореБрд╕реНрдХреБрд░рд╛рддреЗ рд╣реБрдП рдХрд╣рд╛ рдХрд┐ рд╡рд╣ рдЗрд╕реЗ рдЙрдард╛рдПрдЧреАред рдЬрд╡рд╛рдм рдореЗрдВ рдореБрдЭреЗ рд╣рдВрд╕реА рдЖрдИ, рдФрд░ рд╡реЗ рднрд╛рдЧ рдЧрдПред рдХреЗрд╡рд▓ рдЕрдм рд╡рд╣ рдЗрд╕ рд╕рд╡рд╛рд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рдереА рдХрд┐ рдХреИрд╕реЗ рдЙрдард╛рдпрд╛ рдЬрд╛рдП, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕ рдШрдЯрдирд╛ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреНрдпрд╛ рд╣реИред

рдмрд╣реБрдд рдкрд╣рд▓реЗ рдФрд░ рддрд╛рд░реНрдХрд┐рдХ рд╡рд┐рдЪрд╛рд░ рд╕рдВрдпреЛрдЬрди рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдЧрдгрд┐рддреАрдп рддрд░реАрдХреЗ рдХреЗ рд╕рд╛рде рдЖрдирд╛ рд╣реИред
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╢рд░реНрддреЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:



рдЧрдгрд┐рддреАрдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдЕрд╕рдлрд▓ рд░рд╣рд╛ред рд▓рдЧрд╛рдП рдЧрдП рдирд┐рдпрдореЛрдВ рдиреЗ рдирд┐рдпрдореЛрдВ рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреАред

рдЕрдЧрд▓рд╛ рдХрджрдо: рдкрд░реНрджрд╛рдлрд╛рд╢ред рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рд╣рдЬрд╛рд░реЛрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рд╕рднреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ред рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рдкреИрдЯрд░реНрди рдЦреЛрдЬрдиреЗ рдХрд╛ рдерд╛ред
рдореИрдВрдиреЗ рдХрдИ рдШрдВрдЯреЗ рдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рдмрд┐рддрд╛рдПред рд▓реЗрдХрд┐рди рд╕рднреА рдХрд╛рдиреВрди рд╕рдорд░реВрдкрддрд╛ рдФрд░ рдЗрд╕ рддрдереНрдп рдкрд░ рдЖрд░рд╛рдо рдХрд░рддреЗ рдереЗ рдХрд┐ рд╕рднреА рдХреЛрдиреЗ рдмрд┐рдВрджреБ рд╕рдорд╛рди рд╣реИрдВ, рдЬреИрд╕реЗ рд╕рднреА рдордзреНрдпрд╡рд░реНрддреА (рдХреЗрдВрджреНрд░реАрдп рдХреЛ рдЫреЛрдбрд╝рдХрд░)ред
рдЫрд╡рд┐
рдЫрд╡рд┐
рд▓реЗрдХрд┐рди рдореБрд╢реНрдХрд┐рд▓реЗрдВ рд╣рдореЗрдВ рдХрдм рдбрд░рд╛рддреА рд╣реИрдВ?
рдореИрдВрдиреЗ рдПрдХ рд╣реА рд╣реЙрдк рдХреЗ рд╕рд╛рде рд╕рднреА рдХреА рд╢реБрд░реБрдЖрдд рдХреАред


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 тАФ , .

image

64 . Byte . , 4 :

image

UPD. .
.

11-22-31-32-12:

image

:

image

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

image
20 , .

, 20/194744=,0001. , 0,01%. !

тАЬ-тАЭ тАФ , . тАЬ-тАЭ тАФ , .

image

Source: https://habr.com/ru/post/In174773/


All Articles