{"id":335,"date":"2008-02-24T22:27:07","date_gmt":"2008-02-24T16:27:07","guid":{"rendered":""},"modified":"2009-12-25T23:44:57","modified_gmt":"2009-12-25T17:44:57","slug":"lising-structures","status":"publish","type":"page","link":"https:\/\/shra.ru\/hobbies\/checkers\/lising-structures\/","title":{"rendered":"\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043c\u043e\u0434\u0443\u043b\u044f structures"},"content":{"rendered":"
\r\nunit structures;\r\n\r\ninterface\r\n\r\nuses graphics,Sysutils;\r\n\r\nconst maxsize = 7;\r\n      err = 100;\/\/\u043a\u043e\u0434 \u043f\u043e\u043b\u044f \u043a\u0443\u0434\u0430 \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0438\u043b\u0438 \u0445\u043e\u0434 \u043d\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d\r\n      motvs:array [0..1] of array [0..4] of smallint = \/\/\u043c\u0430\u0441\u0441\u0438\u0432 \u043c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u0439\r\n     ((  0, 5, 11, 10,-150),\/\/\u0446\u0435\u043d\u0430 \u0445\u043e\u0434\u0430, \u0440\u0443\u0431\u043a\u0438 \u0448\u0430\u0448\u043a\u0438, \u0440\u0443\u0431\u043a\u0438 \u0434\u0430\u043c\u043a\u0438, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043c\u043a\u0438, \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0448\u0430\r\n      (  0,-6,-10,-11,165));\r\n      pe_move = 0;  \/\/\u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u044b\u0435 \u043d\u043e\u043c\u0435\u0440\u0430 \u043c\u043e\u0442\u0438\u0432\u043e\u0432\r\n      pe_kick = 1;\r\n      pe_lkick = 2;\r\n      pe_lmake = 3;\r\n      pe_loose = 4;\r\n      corconv : array[0..7] of array [0..7]of byte =  \/\/x,y\r\n      ((err,  4,err, 12,err, 20,err, 28),\/\/\u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u043e\u043c\u0435\u0440\u0430 \u0448\u0430\u0448\u0435\u043a \u0448\u0430\u0445\u043c\u0430\u0442\u043d\u043e\u0439 \u0434\u043e\u0441\u043a\u0435 \u043f\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c \u0434\u043e\u0441\u043a\u0438\r\n       (  0,err,  8,err, 16,err, 24,err),\r\n       (err,  5,err, 13,err, 21,err, 29),\r\n       (  1,err,  9,err, 17,err, 25,err),\r\n       (err,  6,err, 14,err, 22,err, 30),\r\n       (  2,err, 10,err, 18,err, 26,err),\r\n       (err,  7,err, 15,err, 23,err, 31),\r\n       (  3,err, 11,err, 19,err, 27,err));\r\n      posconv : array[0..31] of array [0..1]of byte =\r\n      ((1,0),(3,0),(5,0),(7,0),\/\/\u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043d\u0430 \u0448\u0430\u0445\u043c\u0430\u0442\u043d\u043e\u0439 \u0434\u043e\u0441\u043a\u0435 \u043f\u043e \u043d\u043e\u043c\u0435\u0440\u0443 \u0448\u0430\u0448\u043a\u0438\r\n       (0,1),(2,1),(4,1),(6,1),\r\n       (1,2),(3,2),(5,2),(7,2),\r\n       (0,3),(2,3),(4,3),(6,3),\r\n       (1,4),(3,4),(5,4),(7,4),\r\n       (0,5),(2,5),(4,5),(6,5),\r\n       (1,6),(3,6),(5,6),(7,6),\r\n       (0,7),(2,7),(4,7),(6,7));\r\n      idir : array[0..3] of byte = (2,3,0,1);\/\/\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c\r\n      mvs : array[0..3] of array[0..31]of byte =\/\/\u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f\r\n      ((err,err,err,err,err,  0,  1,  2,  4,  5,  6,  7,err,  8,  9, 10, 12, 13, 14, 15,err, 16, 17, 18, 20, 21, 22, 23,err, 24, 25, 26),\r\n       (err,err,err,err,  0,  1,  2,  3,  5,  6,  7,err,  8,  9, 10, 11, 13, 14, 15,err, 16, 17, 18, 19, 21, 22, 23,err, 24, 25, 26, 27),\r\n       (  5,  6,  7,err,  8,  9, 10, 11, 13, 14, 15,err, 16, 17, 18, 19, 21, 22, 23,err, 24, 25, 26, 27, 29, 30, 31,err,err,err,err,err),\r\n       (  4,  5,  6,  7,err,  8,  9, 10, 12, 13, 14, 15,err, 16, 17, 18, 20, 21, 22, 23,err, 24, 25, 26, 28, 29, 30, 31,err,err,err,err));\r\n      smsk : array[0..31] of cardinal =\/\/\u043c\u0430\u0441\u043a\u0430 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0431\u0438\u0442\u0430 - \u0447\u0435\u0440\u0435\u0437 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e OR\r\n      ($00000001,$00000002,$00000004,$00000008,$00000010,$00000020,$00000040,$00000080,\r\n       $00000100,$00000200,$00000400,$00000800,$00001000,$00002000,$00004000,$00008000,\r\n       $00010000,$00020000,$00040000,$00080000,$00100000,$00200000,$00400000,$00800000,\r\n       $01000000,$02000000,$04000000,$08000000,$10000000,$20000000,$40000000,$80000000);\r\n      rmsk : array[0..31] of cardinal =\/\/\u043c\u0430\u0441\u043a\u0430 \u0434\u043b\u044f \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0431\u0438\u0442\u0430 - \u0447\u0435\u0440\u0435\u0437 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e AND\r\n      ($fffffffe,$fffffffd,$fffffffb,$fffffff7,$ffffffef,$ffffffdf,$ffffffbf,$ffffff7f,\r\n       $fffffeff,$fffffdff,$fffffbff,$fffff7ff,$ffffefff,$ffffdfff,$ffffbfff,$ffff7fff,\r\n       $fffeffff,$fffdffff,$fffbffff,$fff7ffff,$ffefffff,$ffdfffff,$ffbfffff,$ff7fffff,\r\n       $feffffff,$fdffffff,$fbffffff,$f7ffffff,$efffffff,$dfffffff,$bfffffff,$7fffffff);\r\n      {\r\n       X or smsk[index] - \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043d\u0443\u0436\u043d\u044b\u0439 \u0431\u0438\u0442\r\n       X and rmsk[index] - \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043d\u0443\u0436\u043d\u044b\u0439 \u0431\u0438\u0442\r\n       X and smsk[index] - \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 \u043d\u0443\u0436\u043d\u044b\u0439 \u0431\u0438\u0442 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0435\u0441\u043b\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 - 0, \u0442\u043e \u0431\u0438\u0442 \u043f\u043e\u0433\u0430\u0448\u0435\u043d\r\n       }\r\ntype\r\n\r\n  step = record\r\n    s0,s1:cardinal;\r\n    mark:smallint;\r\n  end;\r\n\r\n  Gauge_imitator = record\r\n    left,top,width,height:integer;\r\n    status:integer;\r\n    color:tcolor;\r\n  end;\r\n\r\n  board = record\r\n    pos:cardinal;\/\/positions\r\n    sde:cardinal;\/\/markers of player's side\r\n    top:cardinal;\/\/markers of ladyies\r\n  end;\r\n\r\n  PBoard = ^board;\r\n\r\n  Pmove=integer;\r\n\r\n  svdata = record\r\n    boa:board;\r\n    mv0,mv1:cardinal;\r\n    e:byte;\r\n  end;\r\n\r\n  psvdata = ^svdata;\r\n\r\n  hist = record\r\n    boa:board;\/\/\u0434\u043e\u0441\u043a\u0430\r\n    mv0,mv1:cardinal;\/\/\u0445\u043e\u0434 \u043d\u0430 \u044d\u0442\u043e\u0439 \u0434\u043e\u0441\u043a\u0435\r\n    e:byte;\/\/\u0441\u0442\u043e\u0440\u043e\u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u0445\u043e\u0434\r\n    p:pointer;\/\/\u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u043f\u0438\u0441\u043a\u0430\r\n  end;\r\n\r\n  Phist = ^hist;\r\n\r\n  history = class\r\n    p:phist;\r\n    procedure deactivate;\r\n    procedure AddHistory(b:pboard;e:byte;mv0,mv1:cardinal);\r\n    procedure DelHistory(b:psvdata);\r\n    Constructor Create;\r\n    Destructor Destroy;\r\n  private\r\n    { Private declarations }\r\n  public\r\n    { Public declarations }\r\n  end;\r\n\r\n\/\/\u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0431\u0438\u0442\u0430, \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b board\r\nconst\r\n  start:board = (pos:$FFF00FFF;sde:$FFF00000;top:0);\r\n  empty:board = (pos:0;sde:0;top:0);\r\n\r\nfunction max(a,b:smallint):smallint;\r\nfunction min(a,b:smallint):smallint;\r\nprocedure Trinagle(x1,y1,x2,y2,x3,y3:smallint;c:tcanvas);\r\nprocedure forsemove(mv0,mv1:cardinal;brd:Pboard);\/\/\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0445\u043e\u0434\u0430 \u043d\u0430 \u0434\u043e\u0441\u043a\u0435\r\nfunction appraisemove(mv0,mv1:cardinal;brd:Pboard;n_motiv:byte):smallint;\/\/\u043e\u0446\u0435\u043d\u043a\u0430 \u0445\u043e\u0434\u0430, \u0431\u0435\u0437 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\r\nfunction CheckMove(mv:int64):boolean;\/\/\u0433\u0440\u0443\u0431\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0445\u043e\u0434\u0430 (\u043e\u0442\u043b\u0430\u0434\u043a\u0430)\r\nfunction CheckNoWin(hh:phist):boolean;\/\/\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043f\u0430\u0441\u0441\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 - \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0445\u043e\u0434\u043e\u0432 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0438 8 \u043f\u0430\u0440 \u0445\u043e\u0434\u043e\u0432\r\nfunction NumberSh(n:cardinal):word;\/\/\u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0447\u0438\u0441\u043b\u043e \u0444\u0438\u0433\u0443\u0440 \u043d\u0430 \u0434\u043e\u0441\u043a\u0435\r\n\r\nvar\r\n  mvs1 : array[0..3] of array[0..31]of byte;\/\/\u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0441\u044e\u0434\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u043e\u0434\u043d\u0443 \u043a\u043b\u0435\u0442\u043a\u0443, \u043a\u0430\u043a \u043f\u0440\u0438 \u0440\u0443\u0431\u043a\u0435\r\n  deepforse : byte = 5; \/\/\u0433\u043b\u0443\u0431\u0438\u043d\u0430 \u043f\u0440\u043e\u0441\u0447\u0451\u0442\u0430 \u0445\u043e\u0434\u043e\u0432 (\u0441\u0440\u0435\u0434\u043d\u044f\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e)\r\n\r\nimplementation\r\n\r\nfunction NumberSh(n:cardinal):word;\/\/\u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0447\u0438\u0441\u043b\u043e \u0444\u0438\u0433\u0443\u0440 \u043d\u0430 \u0434\u043e\u0441\u043a\u0435\r\nlabel nxt,tuda;\r\nbegin\r\n  asm\r\n    mov ecx,n;\r\n    mov dl,$20;\/\/\u0441\u0447\u0451\u0442\u0447\u0438\u043a\r\n    xor ax,ax;\/\/\u043e\u0431\u043d\u0443\u043b\u0435\u043d\u0438\u0435 cx\r\n  nxt:\r\n    shl ecx,1;\/\/\u043e\u0434\u0438\u043d \u0431\u0438\u0442 \u0434\u0432\u0438\u043d\u0435\u043c \u0432 CF\r\n    jnc tuda;\r\n    inc ax;\/\/\u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0431\u0438\u0442, \u0442\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u043c ax - \u043d\u0430\u0448\u043b\u0438 \u0435\u0449\u0451 \u043e\u0434\u043d\u0443 \u0448\u0430\u0448\u043a\u0443\r\n  tuda:\r\n    dec dl;\r\n    jnz nxt;\/\/\u0435\u0441\u043b\u0438 \u0432 dl \u043d\u0435 \u043d\u043e\u043b\u044c \u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0431\u0438\u0442\r\n    mov result,ax;\r\n  end;\r\nend;\r\n\r\nfunction CheckNoWin(hh:phist):boolean;\r\nvar k:byte;\r\n    dsk:board;\r\nlabel univertest,r_true;\r\nbegin\r\n  result:=false;\/\/\u043f\u043e\u043a\u0430 \u043e \u043d\u0438\u0447\u044c\u0435\u0439 \u0440\u0435\u0447\u0438 \u043d\u0435 \u0438\u0434\u0451\u0442\r\n  for k:=1 to 16 do \/\/\u0432\u043e\u0441\u0435\u043c\u044c \u043f\u0430\u0440 \u0445\u043e\u0434\u043e\u0432 \u0431\u0435\u0437 \u0440\u0443\u0431\u043a\u0438\r\n  begin\r\n    if (hh=nil) or (hh.mv0=$10000) or (appraisemove(hh.mv0,hh.mv1,@hh.boa,0)<>0) then exit;\r\n    if (k=1) and (NumberSh(hh.boa.pos)>4) then goto univertest;\/\/\u043c\u043d\u043e\u0433\u043e\u0432\u0430\u0442\u043e \u043f\u043e\u043a\u0430 \u0444\u0438\u0433\u0443\u0440 \u043d\u0430 \u0434\u043e\u0441\u043a\u0435 (\u0430 hh \u0435\u0449\u0435 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438)\r\n\/\/\u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u043a\u0430 \u0445\u043e\u0434\u043e\u0432 or \u043f\u043e\u043a\u0430 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u0438\u043a\u0438 \u043d\u0430\u043d\u043e\u0441\u044f\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443 \u0432\u0440\u0435\u0434 - \u0432\u044b\u0445\u043e\u0434, \u0442.\u043a. \u0438\u0433\u0440\u0430 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0438\u0440\u0443\u0435\u0442, \u043b\u0438\u0431\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c\r\n    hh:=hh.p;\/\/\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0445\u043e\u0434\r\n  end;\r\n  goto r_true;\r\nunivertest:\/\/\u0442\u0435\u0441\u0442 \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u0444\u0438\u0448\u0435\u043a \u043d\u0430 \u0434\u043e\u0441\u043a\u0435\r\n  dsk:=hh.boa;\/\/\u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0434\u043e\u0441\u043a\u0443\r\n  for k:=1 to 16 do \/\/\u043f\u043e\u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043d\u0430 \u0434\u043e\u0441\u043a\u0435 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0438 8-\u043c\u0438 \u043f\u0430\u0440 \u0445\u043e\u0434\u043e\u0432\r\n  begin\r\n    hh:=hh.p;\/\/\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0445\u043e\u0434\r\n    if (hh=nil) or (hh.mv0=$10000) then exit;\r\n\/\/\u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u043a\u0430 \u0445\u043e\u0434\u043e\u0432 or \u043f\u043e\u043a\u0430 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u0438\u043a\u0438 \u043d\u0430\u043d\u043e\u0441\u044f\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443 \u0432\u0440\u0435\u0434 - \u0432\u044b\u0445\u043e\u0434, \u0442.\u043a. \u0438\u0433\u0440\u0430 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0438\u0440\u0443\u0435\u0442, \u043b\u0438\u0431\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c\r\n    hh:=hh.p;\/\/\u0441\u043d\u043e\u0432\u0430 \u0445\u043e\u0434 \u0441\u0442\u043e\u0440\u043e\u043d\u044b dsk\r\n    if (hh=nil) or (hh.mv0=$10000) then exit;\r\n    if (dsk.pos<>hh.boa.pos) or (dsk.sde<>hh.boa.sde) or (dsk.top<>hh.boa.top) then exit;\/\/\u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0430\u0441\u044c \u0434\u043e\u0441\u043a\u0430 >= \u043d\u0435\u0442 \u043d\u0438\u0447\u044c\u0435\u0439\r\n    dsk:=hh.boa;\/\/\u0441\u043d\u043e\u0432\u0430 \u0434\u043e\u0441\u043a\u0443 \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u043b\u0438\r\n  end;\r\nr_true:\r\n  result:=true;\/\/\u043d\u0438\u0447\u044c\u044f\r\nend;\r\n\r\nfunction max(a,b:smallint):smallint;\r\nbegin\r\n  if a>b then result:=a else result:=b;\r\nend;\r\n\r\nfunction min(a,b:smallint):smallint;\r\nbegin\r\n  if a0 then fin:=1;\r\n  end;\r\n  if fin=1 then result:=true else result:=false;\r\nend;\r\n\r\nConstructor history.Create;\/\/\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u0438\r\nbegin\r\n  inherited Create;\r\nend;\r\n\r\nprocedure history.Deactivate;\r\nvar h:pointer;\r\nbegin\r\n  while p<>nil do   \/\/\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u0438\r\n  begin\r\n    h:=p.p;\r\n    Dispose(p);\r\n    p:=h;\r\n  end;\r\nend;\r\n\r\nDestructor history.Destroy;\/\/\u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u0438\r\nbegin\r\n  Deactivate;\r\n  inherited Destroy;\r\nend;\r\n\r\nprocedure history.AddHistory(b:pboard;e:byte;mv0,mv1:cardinal);\r\nvar h:pointer;\r\nbegin\r\n  h:=p;\/\/\u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\r\n  New(p);\/\/\u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0445\u0438\u0441\u0442\u043e\u0440\u0438\r\n  p.boa:=b^;\/\/\u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435\r\n  p.p:=h;\r\n  p.e:=e;\r\n  p.mv1:=mv1;\r\n  p.mv0:=mv0;\r\nend;\r\n\r\nprocedure history.DelHistory(b:psvdata);  \/\/\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0448\u0430\u0433\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u0438\u0438\r\nvar h:pointer;\r\nbegin\r\n  if p=nil then\/\/\u0435\u0441\u043b\u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043f\u0443\u0441\u0442\u0430\u044f, \u0442\u043e \u0437\u0430\u0433\u0440\u0433\u0443\u0437\u043a\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0439 \u0434\u043e\u0441\u043a\u043e\u0439\r\n  begin\r\n    b.boa:=start;\r\n    b.mv0:=$10000;\r\n  end else begin\/\/\u0438\u043d\u0430\u0447\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u043e\u0434\u0438\u043d \u0445\u043e\u0434\r\n    b.boa:=p.boa;\/\/\u0432\u043e\u0442 \u0434\u043e\u0441\u043a\u0430, \u043a\u0430\u043a\u043e\u0439 \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u0445\u043e\u0434 \u043d\u0430\u0437\u0430\u0434\r\n    b.e:=p.e;\/\/\u0432\u043e\u0442 \u0447\u0435\u0439 \u0445\u043e\u0434\r\n    b.mv0:=p.mv0;\/\/\u0438 \u0432\u043e\u0442 \u043a\u0430\u043a\u043e\u0439 \u044d\u0442\u043e \u0445\u043e\u0434\r\n    b.mv1:=p.mv1;\r\n    if p.p<>nil then\/\/\u044d\u0442\u043e \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443 \u043f\u0440\u0438 BOM\r\n    begin\r\n      h:=p.p;\r\n      Dispose(p);\r\n      p:=h;\r\n    end;\r\n  end;\r\nend;\r\n\r\n\/\/**************************************************************************************************\r\nfunction appraisemove(mv0,mv1:cardinal;brd:Pboard;n_motiv:byte):smallint;\/\/\u043e\u0446\u0435\u043d\u043a\u0430 \u0445\u043e\u0434\u0430, \u0431\u0435\u0437 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\r\n\/\/**************************************************************************************************\r\n\/\/\u043e\u0446\u0435\u043d\u043a\u0430 \u0445\u043e\u0434\u0430 \u0434\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0431\u0435\u0437 \u0435\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\r\nvar pr,nxt,lady,side:byte;\r\n    get_lady, get_ch, get_ld:byte;\/\/\u0441\u0442\u0430\u043b\u0438 \u0434\u0430\u043c\u043a\u043e\u0439, \u0441\u043a\u043e\u043a\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0448\u0430\u0448\u0435\u043a \u0440\u0443\u0431\u0430\u043d\u0443\u043b\u0438, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0430\u043c\u043e\u043a \u0437\u0430\u0440\u0443\u0431\u0438\u043b\u0438\r\n    mem1,mem2:cardinal;\r\nlabel circ,cont,lady_del,rubka,fina;\r\nbegin\r\n  pr:=mv0 and $1f;\r\n  mem1:=brd.sde;\/\/\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u043b\u044f \u0434\u043e\u0441\u043a\u0438 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0441 \u043d\u0438\u043c\u0438\r\n  mem2:=brd.top;\r\n  asm\r\n    xor dh,dh\/\/ mov dx,pr\r\n    mov dl,pr;\r\n    mov eax,mem1;\/\/\u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0432 side\r\n    xor cl,cl;\/\/\u043e\u0431\u043d\u0443\u043b\u0435\u043d\u0438\u0435 cl;\r\n    bt eax,dx;\r\n    rcl cl,1;\r\n    mov side,cl;\r\n    mov eax,mem2;\/\/\u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u043c lady\r\n    xor cl,cl;\/\/\u043e\u0431\u043d\u0443\u043b\u0435\u043d\u0438\u0435 cl;\r\n    bt eax,dx;\r\n    rcl cl,1;\r\n    mov lady,cl;\r\n    mov get_lady,0;\/\/\u0444\u043b\u0430\u0433 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0448\u0430\u0448\u043a\u0438 \u0432 \u0434\u0430\u043c\u043a\u0443\r\n    mov ax,word ptr mv0;\/\/\u0442\u0438\u043f\u0430 \u0441\u043b\u043e\u0432\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0447\u0443 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c\r\n    bt ax,7;\/\/\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0444\u043b\u0430\u0433 \u0440\u0443\u0431\u043a\u0438\r\n    jc rubka\/\/\u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0435\u0441\u043b\u0438 \u0445\u043e\u0434 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0440\u0443\u0431\u043a\u0443\r\n    and ah,$1f;\/\/\u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u043c \u043a\u043e\u0434 \u043f\u043e\u043b\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0448\u0430\u0448\u043a\u0438\r\n    mov nxt,ah;\/\/\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 nxt\r\n  end;\r\n  if ((nxt>27) and (side=0)) or ((nxt<4) and (side=1)) then get_lady:=1;\/\/\u0441\u0442\u0430\u043b\u0430 \u043b\u0438 \u0434\u0430\u043c\u043a\u043e\u0439?\r\n  result:=motvs[n_motiv,pe_move];\r\n  asm\r\n    jmp fina; \/\/\u0438\u0434\u0435\u043c \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\r\nrubka:\/\/\u0435\u0441\u043b\u0438 \u0440\u0443\u0431\u043a\u0430\r\n    mov get_ch,0;\/\/\u0447\u0438\u0441\u043b\u043e \u0441\u0440\u0443\u0431\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0435\u0448\u0435\u043a\r\n    mov get_ld,0;\/\/\u0447\u0438\u0441\u043b\u043e \u0441\u0440\u0443\u0431\u043b\u0435\u043d\u043d\u044b\u0445 \u0434\u0430\u043c\u043e\u043a\r\ncirc:\r\n    mov eax,mv1; \/\/mv:=mv shr 8;\/\/\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f\r\n    shrd mv0,eax,8;\r\n    shr eax,8;\r\n    mov mv1,eax;\r\n    mov al,byte ptr mv0;\r\n    mov nxt,al;\/\/\u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0432\u0435\u0441\u044c \u0431\u0430\u0439\u0442 \u0441 \u043d\u043e\u0432\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0435\u0439\r\n  end;\r\n  pr:=mvs[nxt shr 6,nxt and $1f];\/\/\u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0430\u0442\u0430\u043a\u0443\u0435\u043c\u043e\u0439 \u0448\u0430\u0448\u043a\u0438\r\n  asm\r\n\/\/\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043a\u043e\u0433\u043e \u043c\u044b \u0441\u0440\u0443\u0431\u0438\u043b\u0438 \u0434\u0430\u043c\u043a\u0443 \u0438\u043b\u0438 \u043f\u0435\u0448\u043a\u0443\r\n    xor dh,dh\r\n    mov dl,pr;\r\n    mov eax,mem2;\r\n    bt eax,dx;\r\n    jc lady_del; \/\/\u043f\u0435\u0440\u0435\u0445\u043e\u0434 , \u0435\u0441\u043b\u0438 \u0440\u0443\u0431\u0438\u043c \u0434\u0430\u043c\u043a\u0443\r\n    inc get_ch;\r\n    jmp cont;\r\nlady_del:\r\n    inc get_ld;\r\ncont:\r\n  end;\r\n  pr:=nxt and $1f;\r\n  if ((pr>27) and (side=0)) or ((pr<4) and (side=1)) then get_lady:=1;\/\/\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043d\u0435 \u0441\u0442\u0430\u043d\u0435\u0442 \u043b\u0438 \u0448\u0430\u0448\u043a\u0430 \u0434\u0430\u043c\u043a\u043e\u0439\r\n  if (nxt and $20)=0 then goto circ;\r\n  result:=get_ch*motvs[n_motiv,pe_kick]+get_ld*motvs[n_motiv,pe_lkick];\/\/\u043f\u043e \u0447\u0438\u0441\u043b\u0443 \u0441\u043a\u0443\u0448\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u0438\u043a\u043e\u0432 \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\r\nfina:\r\n  if (lady=0) and (get_lady=1) then\r\n    result:=result+motvs[n_motiv,pe_lmake];\/\/\u0445\u043e\u0434 \u0441 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435\u043c \u0434\u0430\u043c\u043a\u0438\r\nend;\r\n\r\n\/\/**************************************************************************************************\r\nprocedure forsemove(mv0,mv1:cardinal;brd:Pboard);\r\n\/\/**************************************************************************************************\r\n\/\/\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0445\u043e\u0434\u0430 mv,\u043d\u0430 \u0434\u043e\u0441\u043a\u0435 brd\r\nvar pr,nxt,lady,side:byte;\r\n    mem0,mem1,mem2:cardinal;\r\nlabel circ,entry,itslady,itsside,cont,cont1,store,recircl;\r\nbegin\r\n  mem0:=brd.pos;\/\/\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u043b\u044f \u0434\u043e\u0441\u043a\u0438 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0441 \u043d\u0438\u043c\u0438\r\n  mem1:=brd.sde;\r\n  mem2:=brd.top;\r\n  asm\/\/\u0433\u0430\u0441\u0438\u043c \u0431\u0438\u0442 pr \u0432 brd.pos - \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0448\u0430\u0448\u043a\u0438 \u0441 \u0434\u043e\u0441\u043a\u0438\r\n    mov dl,byte ptr mv0;\/\/\u0437\u0430\u043f\u0438\u0441\u044c \u043a\u043e\u0434\u0430 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u0432 pr \u0438 dl\r\n    and dl,$1f;\r\n    mov pr,dl;\r\n    xor dh,dh\/\/ mov dx,pr\r\n    mov dl,pr;\r\n    mov eax,mem0;\r\n    btr eax,dx;\r\n    mov mem0,eax;\r\n    mov eax,mem1;\/\/\u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0432 side\r\n    xor cl,cl;\/\/\u043e\u0431\u043d\u0443\u043b\u0435\u043d\u0438\u0435 cl;\r\n    bt eax,dx;\r\n    rcl cl,1;\r\n    mov side,cl;\r\n    mov eax,mem2;\/\/\u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u043c lady\r\n    xor cl,cl;\/\/\u043e\u0431\u043d\u0443\u043b\u0435\u043d\u0438\u0435 cl;\r\n    bt eax,dx;\r\n    rcl cl,1;\r\n    mov lady,cl;\r\n    mov ax,word ptr mv0;\/\/\u0442\u0438\u043f\u0430 \u0441\u043b\u043e\u0432\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0447\u0443 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c\r\n    bt ax,7;\/\/\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0444\u043b\u0430\u0433 \u0440\u0443\u0431\u043a\u0438\r\n    jc circ\/\/\u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0435\u0441\u043b\u0438 \u0445\u043e\u0434 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0440\u0443\u0431\u043a\u0443\r\n    and ah,$1f;\/\/\u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u043c \u043a\u043e\u0434 \u043f\u043e\u043b\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0448\u0430\u0448\u043a\u0438\r\n    mov nxt,ah;\/\/\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 nxt\r\n  end;\r\nentry:\r\n  if ((nxt>27) and (side=0)) or ((nxt<4) and (side=1)) then lady:=1;\/\/\u0448\u0430\u0448\u043a\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0434\u0430\u043c\u043a\u043e\u0439 \u0438\u043b\u0438 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0435\u0439 \u043f\u0440\u0438 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0438 \u043a\u0440\u0430\u0439\u043d\u0435\u0433\u043e \u043f\u043e\u043b\u044f\r\n  asm\/\/\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0431\u0438\u0442 nxt \u0432 brd.pos - \u043d\u043e\u0432\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0448\u0430\u0448\u043a\u0438\r\n    xor dh,dh; \/\/mov dx,nxt\r\n    mov dl,nxt;\r\n    mov eax,mem0;\r\n    bts eax,dx;\r\n    mov mem0,eax;\r\n    mov eax,mem2;\/\/\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 eax - \u043a\u0430\u0440\u0442\u043e\u0439 \u0434\u0430\u043c\u043e\u043a\r\n    cmp lady,1;\/\/\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0444\u043b\u0430\u0433 lady\r\n    jz itslady;\r\n    btr eax,dx;\r\n    jmp cont;\r\nitslady:\r\n    bts eax,dx;\r\ncont:\r\n    mov mem2,eax;\/\/\u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043a\u0430\u0440\u0442\u0443 \u0434\u0430\u043c\u043e\u043a\r\n    mov eax,mem1;\/\/\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 eax - \u043a\u0430\u0440\u0442\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\r\n    cmp side,1;\/\/\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0444\u043b\u0430\u0433 side\r\n    jz itsside;\r\n    btr eax,dx;\r\n    jmp cont1;\r\nitsside:\r\n    bts eax,dx;\r\ncont1:\r\n    mov mem1,eax;\/\/\u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043a\u0430\u0440\u0442\u0443 \u0441\u0442\u043e\u0440\u043e\u043d\r\n    jmp store;\r\n\/\/\u0435\u0441\u043b\u0438 \u0440\u0443\u0431\u043a\u0430\r\ncirc:\r\n    mov eax,mv1; \/\/mv:=mv shr 8;\/\/\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f\r\n    shrd mv0,eax,8;\r\n    shr eax,8;\r\n    mov mv1,eax;\r\n    mov al,byte ptr mv0;\r\n    mov nxt,al;\/\/\u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0432\u0435\u0441\u044c \u0431\u0430\u0439\u0442 \u0441 \u043d\u043e\u0432\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0435\u0439\r\n  end;\r\n  pr:=mvs[nxt shr 6,nxt and $1f];\/\/\u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0430\u0442\u0430\u043a\u0443\u0435\u043c\u043e\u0439 \u0448\u0430\u0448\u043a\u0438\r\n  asm\r\n\/\/\u0433\u0430\u0441\u0438\u043c \u0431\u0438\u0442 pr \u0432 brd.pos - \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0440\u0443\u0431\u043b\u0435\u043d\u043d\u043e\u0439 \u0448\u0430\u0448\u043a\u0438 \u0441 \u0434\u043e\u0441\u043a\u0438\r\n    xor dh,dh\/\/\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043c \u0432 dx \u043d\u043e\u043c\u0435\u0440 \u0431\u0438\u0442\u0430\r\n    mov dl,pr;\r\n    mov eax,mem0;\/\/\u0432\u044b\u043a\u043b\u044e\u0447\u0438\u043c \u0431\u0438\u0442\r\n    btr eax,dx;\r\n    mov mem0,eax;\r\n    mov al,nxt;\/\/\u044d\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0445\u043e\u0434\u0430  if (nxt and $20)<>0 then\r\n    bt ax,5;\/\/\u0431\u0438\u0442 \u043d\u043e\u043c\u0435\u0440 5\r\n    jnc recircl;\r\n    and al,$1f;\/\/\u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u043c \u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u043b\u044f \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u0434\u043e\u0441\u043a\u0438\r\n    mov nxt,al;\/\/\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432 nxt\r\n    jmp entry;\/\/\u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0448\u0430\u0448\u043a\u0438 \u043d\u0430 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438\r\n  end;\r\nrecircl:\r\n  nxt:=nxt and $1f;\/\/\u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0447\/\u0437 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043d\u0430\u0448\u0430 \u0448\u0430\u0448\u043a\u0430\r\n  if ((nxt>27) and (side=0)) or ((nxt<4) and (side=1)) then lady:=1;\/\/\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043d\u0435 \u0441\u0442\u0430\u043d\u0435\u0442 \u043b\u0438 \u043e\u043d\u0430 \u0434\u0430\u043c\u043a\u043e\u0439\r\n  goto circ;\r\nstore:\r\n  brd.pos:=mem0;\/\/\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u043b\u044f \u0434\u043e\u0441\u043a\u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0438\u0437 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432\r\n  brd.sde:=mem1;\r\n  brd.top:=mem2;\r\nend;\r\n\r\nprocedure Trinagle(x1,y1,x2,y2,x3,y3:smallint;c:tcanvas);\r\nbegin\r\n  c.MoveTo(x1,y1);\r\n  c.LineTo(x2,y2);\r\n  c.LineTo(x3,y3);\r\n  c.LineTo(x1,y1);\r\nend;\r\n\r\nend.<\/pre>\n","protected":false},"excerpt":{"rendered":"

unit structures; interface uses graphics,Sysutils; const maxsize = 7; err = 100;\/\/\u043a\u043e\u0434 \u043f\u043e\u043b\u044f \u043a\u0443\u0434\u0430 \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0438\u043b\u0438 \u0445\u043e\u0434 \u043d\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d motvs:array [0..1] of array [0..4] of smallint = \/\/\u043c\u0430\u0441\u0441\u0438\u0432 \u043c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u0439 (( 0, 5, 11, 10,-150),\/\/\u0446\u0435\u043d\u0430 \u0445\u043e\u0434\u0430, \u0440\u0443\u0431\u043a\u0438 \u0448\u0430\u0448\u043a\u0438, \u0440\u0443\u0431\u043a\u0438 \u0434\u0430\u043c\u043a\u0438, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043c\u043a\u0438, \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0448\u0430 ( 0,-6,-10,-11,165)); pe_move = 0; \/\/\u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u044b\u0435 \u043d\u043e\u043c\u0435\u0440\u0430 \u043c\u043e\u0442\u0438\u0432\u043e\u0432 pe_kick = 1; […]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":319,"menu_order":0,"comment_status":"open","ping_status":"open","template":"","meta":{"footnotes":""},"acf":[],"yoast_head":"\n\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043c\u043e\u0434\u0443\u043b\u044f structures – Shra's homepage<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/shra.ru\/hobbies\/checkers\/lising-structures\/\" \/>\n<meta property=\"og:locale\" content=\"ru_RU\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043c\u043e\u0434\u0443\u043b\u044f structures – Shra's homepage\" \/>\n<meta property=\"og:description\" content=\"unit structures; interface uses graphics,Sysutils; const maxsize = 7; err = 100;\/\/\u043a\u043e\u0434 \u043f\u043e\u043b\u044f \u043a\u0443\u0434\u0430 \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0438\u043b\u0438 \u0445\u043e\u0434 \u043d\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d motvs:array [0..1] of array [0..4] of smallint = \/\/\u043c\u0430\u0441\u0441\u0438\u0432 \u043c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u0439 (( 0, 5, 11, 10,-150),\/\/\u0446\u0435\u043d\u0430 \u0445\u043e\u0434\u0430, \u0440\u0443\u0431\u043a\u0438 \u0448\u0430\u0448\u043a\u0438, \u0440\u0443\u0431\u043a\u0438 \u0434\u0430\u043c\u043a\u0438, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043c\u043a\u0438, \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0448\u0430 ( 0,-6,-10,-11,165)); pe_move = 0; \/\/\u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u044b\u0435 \u043d\u043e\u043c\u0435\u0440\u0430 \u043c\u043e\u0442\u0438\u0432\u043e\u0432 pe_kick = 1; […]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/shra.ru\/hobbies\/checkers\/lising-structures\/\" \/>\n<meta property=\"og:site_name\" content=\"Shra's homepage\" \/>\n<meta property=\"article:modified_time\" content=\"2009-12-25T17:44:57+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 \u043c\u0438\u043d\u0443\u0442\u044b\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/shra.ru\/hobbies\/checkers\/lising-structures\/\",\"url\":\"https:\/\/shra.ru\/hobbies\/checkers\/lising-structures\/\",\"name\":\"\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043c\u043e\u0434\u0443\u043b\u044f structures – Shra's homepage\",\"isPartOf\":{\"@id\":\"https:\/\/shra.ru\/#website\"},\"datePublished\":\"2008-02-24T16:27:07+00:00\",\"dateModified\":\"2009-12-25T17:44:57+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/shra.ru\/hobbies\/checkers\/lising-structures\/#breadcrumb\"},\"inLanguage\":\"ru-RU\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/shra.ru\/hobbies\/checkers\/lising-structures\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/shra.ru\/hobbies\/checkers\/lising-structures\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\",\"item\":\"https:\/\/shra.ru\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u0425\u043e\u0431\u0431\u0438\",\"item\":\"https:\/\/shra.ru\/hobbies\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"\u0428\u0430\u0448\u043a\u0438\",\"item\":\"https:\/\/shra.ru\/hobbies\/checkers\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043c\u043e\u0434\u0443\u043b\u044f structures\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/shra.ru\/#website\",\"url\":\"https:\/\/shra.ru\/\",\"name\":\"Shra's homepage\",\"description\":\"\u041f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 shra, \u0431\u043b\u043e\u0433 \u0444\u0440\u0438\u043b\u0435\u043d\u0441\u0435\u0440\u0430, \u0432\u0435\u0431-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043d\u0430 PHP. \u0417\u0434\u0435\u0441\u044c \u044f \u0434\u0435\u043b\u044e\u0441\u044c \u0441\u0432\u043e\u0438\u043c \u043e\u043f\u044b\u0442\u043e\u043c \u0438 \u043c\u044b\u0441\u043b\u044f\u043c\u0438, \u043f\u0440\u043e\u0432\u043e\u0436\u0443 \u043e\u043f\u044b\u0442\u044b \u043d\u0430\u0434 \u043b\u044e\u0434\u044c\u043c\u0438, \u0441\u043e\u0431\u0438\u0440\u0430\u044e \u043d\u0435\u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0438\u0434\u0435\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0433\u043b\u0443\u043f\u043e\u0441\u0442\u0438. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0441 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430, \u0432\u044b \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442\u0435 \u0432\u0441\u044e \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0437\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0432\u0430\u0448\u0435 \u043f\u0441\u0438\u0445\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0437\u0434\u043e\u0440\u043e\u0432\u044c\u0435 \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u044b \u0442\u0440\u0435\u0442\u044c\u0438\u0445 \u043b\u0438\u0446.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/shra.ru\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"ru-RU\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043c\u043e\u0434\u0443\u043b\u044f structures – Shra's homepage","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/shra.ru\/hobbies\/checkers\/lising-structures\/","og_locale":"ru_RU","og_type":"article","og_title":"\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043c\u043e\u0434\u0443\u043b\u044f structures – Shra's homepage","og_description":"unit structures; interface uses graphics,Sysutils; const maxsize = 7; err = 100;\/\/\u043a\u043e\u0434 \u043f\u043e\u043b\u044f \u043a\u0443\u0434\u0430 \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0438\u043b\u0438 \u0445\u043e\u0434 \u043d\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d motvs:array [0..1] of array [0..4] of smallint = \/\/\u043c\u0430\u0441\u0441\u0438\u0432 \u043c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u0439 (( 0, 5, 11, 10,-150),\/\/\u0446\u0435\u043d\u0430 \u0445\u043e\u0434\u0430, \u0440\u0443\u0431\u043a\u0438 \u0448\u0430\u0448\u043a\u0438, \u0440\u0443\u0431\u043a\u0438 \u0434\u0430\u043c\u043a\u0438, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043c\u043a\u0438, \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0448\u0430 ( 0,-6,-10,-11,165)); pe_move = 0; \/\/\u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u044b\u0435 \u043d\u043e\u043c\u0435\u0440\u0430 \u043c\u043e\u0442\u0438\u0432\u043e\u0432 pe_kick = 1; […]","og_url":"https:\/\/shra.ru\/hobbies\/checkers\/lising-structures\/","og_site_name":"Shra's homepage","article_modified_time":"2009-12-25T17:44:57+00:00","twitter_card":"summary_large_image","twitter_misc":{"\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f":"3 \u043c\u0438\u043d\u0443\u0442\u044b"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/shra.ru\/hobbies\/checkers\/lising-structures\/","url":"https:\/\/shra.ru\/hobbies\/checkers\/lising-structures\/","name":"\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043c\u043e\u0434\u0443\u043b\u044f structures – Shra's homepage","isPartOf":{"@id":"https:\/\/shra.ru\/#website"},"datePublished":"2008-02-24T16:27:07+00:00","dateModified":"2009-12-25T17:44:57+00:00","breadcrumb":{"@id":"https:\/\/shra.ru\/hobbies\/checkers\/lising-structures\/#breadcrumb"},"inLanguage":"ru-RU","potentialAction":[{"@type":"ReadAction","target":["https:\/\/shra.ru\/hobbies\/checkers\/lising-structures\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/shra.ru\/hobbies\/checkers\/lising-structures\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","item":"https:\/\/shra.ru\/"},{"@type":"ListItem","position":2,"name":"\u0425\u043e\u0431\u0431\u0438","item":"https:\/\/shra.ru\/hobbies\/"},{"@type":"ListItem","position":3,"name":"\u0428\u0430\u0448\u043a\u0438","item":"https:\/\/shra.ru\/hobbies\/checkers\/"},{"@type":"ListItem","position":4,"name":"\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043c\u043e\u0434\u0443\u043b\u044f structures"}]},{"@type":"WebSite","@id":"https:\/\/shra.ru\/#website","url":"https:\/\/shra.ru\/","name":"Shra's homepage","description":"\u041f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 shra, \u0431\u043b\u043e\u0433 \u0444\u0440\u0438\u043b\u0435\u043d\u0441\u0435\u0440\u0430, \u0432\u0435\u0431-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043d\u0430 PHP. \u0417\u0434\u0435\u0441\u044c \u044f \u0434\u0435\u043b\u044e\u0441\u044c \u0441\u0432\u043e\u0438\u043c \u043e\u043f\u044b\u0442\u043e\u043c \u0438 \u043c\u044b\u0441\u043b\u044f\u043c\u0438, \u043f\u0440\u043e\u0432\u043e\u0436\u0443 \u043e\u043f\u044b\u0442\u044b \u043d\u0430\u0434 \u043b\u044e\u0434\u044c\u043c\u0438, \u0441\u043e\u0431\u0438\u0440\u0430\u044e \u043d\u0435\u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0438\u0434\u0435\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0433\u043b\u0443\u043f\u043e\u0441\u0442\u0438. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0441 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430, \u0432\u044b \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442\u0435 \u0432\u0441\u044e \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0437\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0432\u0430\u0448\u0435 \u043f\u0441\u0438\u0445\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0437\u0434\u043e\u0440\u043e\u0432\u044c\u0435 \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u044b \u0442\u0440\u0435\u0442\u044c\u0438\u0445 \u043b\u0438\u0446.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/shra.ru\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"ru-RU"}]}},"_links":{"self":[{"href":"https:\/\/shra.ru\/wp-json\/wp\/v2\/pages\/335"}],"collection":[{"href":"https:\/\/shra.ru\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/shra.ru\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/shra.ru\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/shra.ru\/wp-json\/wp\/v2\/comments?post=335"}],"version-history":[{"count":4,"href":"https:\/\/shra.ru\/wp-json\/wp\/v2\/pages\/335\/revisions"}],"predecessor-version":[{"id":1176,"href":"https:\/\/shra.ru\/wp-json\/wp\/v2\/pages\/335\/revisions\/1176"}],"up":[{"embeddable":true,"href":"https:\/\/shra.ru\/wp-json\/wp\/v2\/pages\/319"}],"wp:attachment":[{"href":"https:\/\/shra.ru\/wp-json\/wp\/v2\/media?parent=335"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}} <!-- Alpha cache content. Generated from cache in 0.015457153320312 s. DB queries count : 2 -->