ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Болталка (https://forum.antichat.xyz/forumdisplay.php?f=46)
-   -   Delphi-кодеры ачата (https://forum.antichat.xyz/showthread.php?t=48930)

The_HuliGun 14.09.2007 08:16

Уважаемые кодеры, не стоит замыкаться на одном программном продукте, ведь делфи не есть путь к решению всех прикладных задач программирования. Ведь кидать компоненту на форму и дурак сможет, а вот закодить алгоритм ето, как показывает практика, уже не всем под силу.
Попробуйте решить следующую задачу с приминением императивного программирования (Delphi, C++, Perl, PHP, etc).
Задача. Найти все способы обхода конверта, когда каждая из линий участвует в обходе ровно один раз. При обходе должны использоваться все линии.
http://huligun2006.narod.ru/konv.JPG
Добавлю, что при использовании логического программирования задача решаеться легко.

BoDVa 17.09.2007 22:09

Задача очень популярна, и при большом желании я думаю решение можно найти в нете. А решается она алгоритмом BackTrack и этим все сказано. Просьба решить задачу не есть показатель грамотности в прорамировании. И убедиться в грамотности человека можно лишь пообщавшись с ним

Knight_of_Darkness 17.09.2007 22:25

Стоит ли спорить? Я считаю, что нужно направить свои силы в нужном направлении, ибо есть сила, но нет вектора. Идея насчет ZeroNews висела выше. Чтобы оценить человека, нужно увидеть его в действии.

Piflit 17.09.2007 22:30

как идут ваши delphi-дела?

BoDVa 17.09.2007 22:31

Цитата:

Сообщение от Knight_of_Darkness
...Чтобы оценить человека, нужно увидеть его в действии.

Абсолютно согласен :)

Knight_of_Darkness 17.09.2007 22:31

Piflit, тебя все уже давно поняли, может хватит флеймить и наезжать на меня?

jipik 22.08.2008 01:19

при N=15 корость обработки 14сек. Кто быстрее ?

Код:


const NN = 15 ;
type Arr2 = array[1..NN] of boolean;
 var
  N,K,Ri,pp:integer;
  A: array[1..NN] of integer;

procedure  f(R:integer;Mo: Arr2);  // обробка рівнів
label L1;
var
pp,Ri:integer;
Mo0: Arr2;
begin
Mo0:=Mo;
pp:=0;
    repeat
    inc(pp);
    if Mo[pp] then begin for Ri:=1 to R-1 do if(abs(pp-A[Ri])=R-Ri)then  goto L1;end  else goto L1;
    A[R]:=pp;  Mo[pp]:=false;
    if R=N then  inc(K) else f(R+1,Mo);
    Mo[pp]:=true;
L1: until(pp=N)
end;
//---------------------------------------------------------------------------


procedure TForm1.Button1Click(Sender: TObject);
 var
  Mo: Arr2;
  R:integer;

  D: TDateTime;
  Time:string;
begin
K:=0;
N:=strtoint(edit1.Text);
for pp:=1 to N do Mo[pp]:=true;  //онуляю масив для ограніченій з верхнього рівня (тільки вертикаль так як з діагоналями гімор...)

D:= Now;
                                      // так як комбінації на дошці дзеркальні то...
 for pp:=1 to trunc(N/2) do begin
    Mo[pp]:=false;//  Mo[pp-1]:=false;        Mo[pp+1]:=false;
    A[1]:=pp;
    f(2,Mo);  Mo[pp]:=true;//
 end;
k:=k*2 ;
 if N/2 = trunc(N/2)+0.5 then begin
    Mo[pp]:=false;//
    A[1]:=trunc(N/2)+1;
    f(2,Mo);  Mo[pp]:=true;//
 end;

D:= D-Now;

      if N=1 then K:=1; // :)
  DateTimeToString(Time, 'ss/zzzzz', D);
label1.Caption:=inttostr(k)+#13+Time ;
end;


De-visible 22.08.2008 02:27

Ну что команда собрана?
Тема бред:/


Время: 12:22