что это преобразование
что это преобразование осуществляется при вводе данных.
По условию задачи стороны многоугольника идут по ребрам треугольной сетки и имеют равные длины. Пусть мы имеем две точки с номерами u, v и длину предыдущей стороны многоугольника (значение переменной Len). Ответим на вопрос - могут ли быть соединены стороной многоугольника точки u,v.
function Can(u,v:word):boolean;
var r: word;
begin
r:=0;
if Pos[u].x=Pos[v].x then r:=abs(Pos[u].y-Pos[v].y){параллельна оси Y}
else if Pos[u].y=Pos[v].y then r:=abs(Pos[u].x-Pos[v].x) {параллельна оси X}
else if (Pos[u].x-Pos[u].y)=(Pos[v].x-Pos[v].y) then r:=abs(Pos[u].x-Pos[v].x); {параллельна правой стороне треугольной сетки}
if r=0 then Can:=false {соединить нельзя} else begin Can:=true;
if Len=0 then Len:=r {первая сторона}else Can:=(Len=r) end;
end;
Естественный путь дальнейшей “раскрутки” решения - перебор всех вариантов построения геометрической фигуры на заданном множестве введенных точек. Если рассматривать это
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа