В исходных данных имеем это:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,NeuralMachine, StdCtrls, Neural_lang, ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
first:boolean=true;
implementation
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject);
var tm:_SYSTEMTIME;
ms,sc:longint;
begin
if first then
begin
GetSystemTime(tm);
ms:=tm.wMilliseconds;
sc:=tm.wSecond;
randseed:=ms+sc*65536;
//randseed:=23;
first:=false;
if DoNeuralMachine then close
else
begin
canvas.Font.Name:='Arial Narrow';
canvas.Font.Size:=30;
canvas.TextOut(30,32,'Нет решений');
end;
end;
end;
После решения описанной ниже задачи имеем следующее:
unIT s3q7e;
IntErfAce
uSEs
Q20W26H, CyRVu4JV, A6s0X8r3, h3Z5O7Ba, k96a8QW, h5761V4Q, U936B28U, DzVL6,
f3iOOb0,y68rA0q81VmUI, ZO1A3216, qY76001m5y4, u374O1Sn;
tyPE
W017m7 = cLAss(Bm310)
K26aa9: mbH2Qx;
prOCeDUrE _pP5D865x74(r77rbP: w2NWq8K);
prOcEdUre F988Rm35N6(jc4nv7: q05N1Wo);
PrIvate
{ PRiVATE d03o3hDHu488 }
publIc
{ publIC W93428xOMXZj }
end;
vAR
MnHzC: bj70s1;
CMC52:g7JX311=J500;
iMPlEMentAtIon
{$ *. }
procedUrE QDQNR1.V02VacQsPjS(R85377: Z3Io7i2);
VaR oZ:GY03ps8xVVr;
ah,Rh:e5F0Cq9;
Begin
iF t1fF9 ThEN
Begin
p2Lf31u214Kq5(gX);
C3:=Yx.Va2UofA_8h7k7;
v7:=v2.T3W189D;
v2_5L7ml:=u1+Ct* ;
//N0RYQ9s9:= ;
dB5I3:=H99r4;
iF Tp81801l2lRsX33 tHEN a0zis
ElsE
BEgiN
H0k3vV.Ibp1.f597:=' ';
fVR29r.P29e.lT5a:= ;
los5ZL.rpID79e( , ,' ');
EnD;
END;
enD;
Здесь пример обработки pas-файла. Реализован перевод текста программы Delphi на 1-й уровень абстракции а затем возврат из абстрактного вида обратно в конкретный вид. В первой цитате исходный текст а во второй цитате можем видеть что в результате получилось.
Зарезервированные слова Delphi распознаются отлично и при возврате из абстрактного в конкретный вид буквы получаются прыгающего размера - это потому что на абстрактном уровне я не сохраняю информацию о размере букв. Так же видим что имена переменных и функций тоже не сохранились - это потому что на 1-м уровне абстракции я не сохраняю имени переменной а сохраняю лишь информацию о том что здесь находитсяя переменная. При генерации конкретного вида из абстрактного система просто создает случайное имя переменной удовлетворяющее общему виду переменных. Так же видим что на месте чисел пусто - это потому что я пока вообще не сделал распознавание чисел и в абстрактном представлении информация о них не сохраняется поэтому при генерации конкретного вида эти места воспринимаются как что-то где ничего не распозналось и они остаются пустыми.
Интересно то что код на моем языке можно составлять так как если бы нам нужно было только распознавание - т.е. мы описываем как должны распознаваться те или иные вещи исходных данных. Но в результате система может использовать это описание не только для распознавания исходных данных но и обратную операцию - генерацию исходных данных из абстрактного представления. Это ключевой момент в использовании моего языка программирования. В случае если бы мы пытались нечто подобное реализовать на каком либо алгоритмическом языке нам бы пришлось писать две разных процедуры для распознавания и для обратной распознаванию операции (которая называется - дедукция. Та самая которую применял Шерлок Холмс
