Показать сообщение отдельно
Старый 21.01.2005, 16:24     # 10
Ghost
::VIP::
Звезда первого сезона
Молчун-2004
 
Аватар для Ghost
 
Регистрация: 24.08.2002
Сообщения: 1 575

Ghost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех Гуру
TDz
Вот, наковырял на делфе консольную прогу (в турбо-паскале - Stack Overflow ). Только работает она очень долго. Сижу думаю, как ее уменьшить...
Код:
program domino;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const
  n = 28;
  d: array [1..28] of byte = (
    00, 01, 02, 03, 04, 05, 06,
        11, 12, 13, 14, 15, 16,
            22, 23, 24, 25, 26,
                33, 34, 35, 36,
                    44, 45, 46,
                        55, 56,
                            66);

var
  r: string;

procedure outDomino(s: string);
var
  i: byte;
begin
  for i := 1 to length(s) do write(d[ord(s[i])]:3);
  writeln;
end;

procedure chain(s: string; last: byte); far;
var
  i: byte;
begin
  if r <> '' then exit;
  if length(s) = n then begin
    if last = 6 then r := s;
  end else begin
    for i := 1 to n do if pos(chr(i), s) = 0 then begin
      if ((d[i] mod 10) = last) or ((d[i] div 10) = last) then
        chain(s + chr(i), (d[i] mod 10) + (d[i] div 10) - last);
    end;
  end;
end;

begin
  r := '';
  chain('', 1);
  writeln('result:');
  outDomino(r);
end.
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы!
Ghost вне форума