Перейти к содержанию

Реализации алгоритмов/Шифр Бэкона

Материал из Викиучебника — открытых книг для открытого мира

Реализация

[править]

Пример реализации шифра Бэкона на языке Паскаль: (метод не рабочий)


program strug_production;
var s_out, s_in, str,itogstroka,tekbukva: string;
fa: text;
ik, len, n: integer;
begin
  assign(fa, 'c:\text.txt');
  reset (fa);
  
  itogstroka:='';
  {раскладываем строчку из файла}
  while not Eof(fa) do begin
    readln (fa, str);
    len:=length(str);
    n:=1;
    While n<len+1 do begin
        tekbukva:= Copy(str, n, 1);
        If (tekbukva='A')or(tekbukva='B')or(tekbukva='C')or(tekbukva='D')or(tekbukva='E')or(tekbukva='F')or
        (tekbukva='G')or(tekbukva='H')or(tekbukva='I')or(tekbukva='J')or(tekbukva='K')or(tekbukva='L')or
        (tekbukva='M')or(tekbukva='N')or(tekbukva='O')or(tekbukva='P')or(tekbukva='R')or(tekbukva='S')or
        (tekbukva='T')or(tekbukva='U')or(tekbukva='V')or(tekbukva='W')or(tekbukva='X')or(tekbukva='Y')or
        (tekbukva='Z')or(tekbukva='А')or(tekbukva='Б')or(tekbukva='В')or(tekbukva='Г')or(tekbukva='Д')or
        (tekbukva='Е')or(tekbukva='Ё')or(tekbukva='Ж')or(tekbukva='З')or(tekbukva='И')or(tekbukva='Й')or
        (tekbukva='К')or(tekbukva='Л')or(tekbukva='М')or(tekbukva='Н')or(tekbukva='О')or(tekbukva='П')or
        (tekbukva='Р')or(tekbukva='С')or(tekbukva='Т')or(tekbukva='У')or(tekbukva='Ф')or(tekbukva='Х')or
        (tekbukva='Ц')or(tekbukva='Ч')or(tekbukva='Ш')or(tekbukva='Щ')or(tekbukva='Ъ')or(tekbukva='Ы')or
        (tekbukva='Ь')or(tekbukva='Э')or(tekbukva='Ю')or(tekbukva='Я') Then
         Begin
          itogstroka:=itogstroka+'B';         
         end
        Else itogstroka:=itogstroka+'A';
        n:=n+1;
    end;
    writeln(itogstroka);    
  end;
  
  {расшифровка}
  len:=length(itogstroka);
  n:=1;
  While n<len+1 do begin
      tekbukva:= Copy(itogstroka, n, 5);
      If (tekbukva='AAAAA')Then Write('a') Else 
      If (tekbukva='AAAAB')Then Write('b') Else
      If (tekbukva='AAABA')Then Write('c') Else
      If (tekbukva='AAABB')Then Write('d') Else
      If (tekbukva='AABAA')Then Write('e') Else
      If (tekbukva='AABAB')Then Write('f') Else
      If (tekbukva='AABBA')Then Write('g') Else
      If (tekbukva='AABBB')Then Write('h') Else
      If (tekbukva='ABAAA')Then Write('i') Else
      If (tekbukva='BBBAA')Then Write('j') Else
      If (tekbukva='ABAAB')Then Write('k') Else
      If (tekbukva='ABABA')Then Write('l') Else
      If (tekbukva='ABABB')Then Write('m') Else
      If (tekbukva='ABBAA')Then Write('n') Else
      If (tekbukva='ABBAB')Then Write('o') Else
      If (tekbukva='ABBBA')Then Write('p') Else
      If (tekbukva='ABBBB')Then Write('q') Else
      If (tekbukva='BAAAA')Then Write('r') Else
      If (tekbukva='BAAAB')Then Write('s') Else
      If (tekbukva='BAABA')Then Write('t') Else
      If (tekbukva='BAABB')Then Write('u') Else
      If (tekbukva='BBBAB')Then Write('v') Else
      If (tekbukva='BABAA')Then Write('w') Else
      If (tekbukva='BABAB')Then Write('x') Else
      If (tekbukva='BABBA')Then Write('y') Else
      If (tekbukva='BABBB')Then Write('z') Else
      Write('');
      n:=n+5;
  end;
  
  close(fa);
  {readln;}
end.