{ a b c e f g ab ac be bf cg} {megkeres(szulo,holvan) elso_szabad_mutatoja(t[holvan],szabadmut) beszur(gyerek,szulo,szabadmut)} const n=100; type Tindex=integer; TmutIndex=integer; Tertek=integer; tmutrec=array[1..n] of TmutIndex; trec=record ertek:tertek; m:tmutrec; end; var t:array [1..n] of trec; function holvanertek(const szulo:Tertek):Tindex; var i:Tindex; j:TmutIndex; holvan:Tindex; begin i:=0; repeat inc(i); if (T[i].ertek<>szulo) then begin {ha az erteke nem Ok...} j:=0; repeat {van-e ilyen mutatoja?} inc(j); until ( (T[i].m[j]=szulo) or ((j=n) and (T[i].m[j]<>szulo)) ); end; if T[i].m[j]=szulo then holvan:=(i*10)+j else if T[i].ertek=szulo then holvan:=(i*10)+0 else holvan:=0; {nehezebb: matrix-koordinatat adjon vissza} until ( (holvan<>0) or ((i=n) and (holvan=0))); holvanertek:=holvan; end; {procedure elso_szabad_mutatoja(const holvan:Tindex; var elsoszabadmut:TIndex); begin i:=0 repeat inc(i); until ( (T[holvan].m[i]='szabad') or ((i=maxMutDB) and (T[holvan].m[i]<>'szabad')) ); if (T[holvan].m[i]='szabad') then elsoszabadmut:=i else elsoszabadmut:=0; end;} procedure beszurgyerek(const gyerek:tertek; holvan:Tindex); begin if ((holvan<>0) and (elsoszabadmut<>0)) then T[(holvan div 10)].m[(holvan mod 10)]:=elsoszabadmut; end; begin end;