Informatika gyűjtemény

Egy szinttel feljebb pt_spam.pas

2004050607080910

NézetNyomtat

pt_spam.pas (Vissza)
Az alábbi letöltési lehetőségek közül választhatsz: (segítség)
Karakterkódolás:
Sortörés:
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: us-ascii
Méret: 1 KB
{$H+}
program spam;

type  kar = string[4];

const code:array['A'..'Z'] of kar = ('4','|3','(','|)','3','|=','6','#','|','_|','|<','|_','|\/|','|\|','0','|0','(,)','|?','5','7','|_|','\/','\/\/','><','-/','2');
      maxL=4;
var szoveg:string;
    cache:array of longint;
    
function crypt(s:string):string;
var i:longint;
begin
  result:='';
  for i:=1 to length(s) do result := result+code[s[i]];
end;

function db(x:longint):longint;
var ch:char;
begin
  IF CACHE[x]<>-1 THEN RESULT:=CACHE[X] ELSE BEGIN
  
  result:=0;
  if x<=length(szoveg) then
    begin
      for ch:='A' to 'Z' do
        if (copy(szoveg,x,length(code[ch]))=code[ch]) then
          result:=result + db(x+length(code[ch]));
    end
  else if x=length(szoveg)+1 then result:=1;
  
  END;
  
  cache[x]:=result;
end;


var i:longint;
begin
  while(true) do
    begin  
      readln(szoveg);
      if szoveg='end' then break;  
      szoveg:=crypt(szoveg);
  
      setlength(cache,length(szoveg)+maxL+1);
      for i:=1 to length(szoveg)+maxL do cache[i]:=-1;  
  
      writeln(db(1));
    end;
end.
(Vissza)