const maxX=10;
const maxY=10;
var Tablero: array[1..maxX,1..maxY] of char;
function colocarEnLaSopa(cadena: string; PosX, PosY, deltaX, deltaY: integer): boolean;
function PosicionValida(PosX, PosY:integer):boolean;
begin
PosicionValida:=(PosX>=1) and (PosX<=maxX) and (PosY>=1) and (PosY<=maxY);
end;
var
i, caracteres: integer;
begin
//Para normalizar posicion inicial a 0 y no 1:
caracteres:=length(cadena)-1;
//Revisar posicion inicial y final, si ambas son validas, entonces se puede colocar en la sopa.
if PosicionValida(PosX, PosY) and PosicionValida(PosX+caracteres*deltaX,PosY+caracteres*deltaY) then
begin
//Primero revisar por las casillas si estan libres
for i:=0 to caracteres do
if Tablero[PosX+i*deltaX,PosY+i*deltaY] <> ' ' then
begin
colocarEnLaSopa:=false;
exit;//casilla ocupada, salir
end;
//Agregar las letras
for i:=0 to caracteres do
Tablero[PosX+i*deltaX,PosY+i*deltaY] := cadena[i+1];
colocarEnLaSopa:=true;
end
else
colocarEnLaSopa:=false;
end;