Top.Mail.Ru
Ответы
Аватар пользователя
7лет
Изменено
Аватар пользователя
Аватар пользователя
Программирование
+1

Помогите с задачей.

Задача 3. Робот и конфеты

На поле 8×8

разложены конфеты (обозначены маленькими латинскими буквами)
В клетке, отмеченной крестиком, находится робот. Он собирает конфеты, двигаясь по следующему алгоритму: находясь в клетке, робот смотрит по горизонтали влево-вправо, по вертикали вверх-вниз, находит ближайшую к нему на этих линиях конфету и делает к ней шаг (один шаг – перемещение в соседнюю по стороне клетку). Затем он опять смотрит по горизонталям и вертикалям, ищет ближайшую конфету и делает к ней шаг и так далее. Когда робот оказывается на одной клетке с конфетой, он ее съедает, а затем смотрит, куда ему пойти дальше.

Если он видит две конфеты на одном расстоянии, то приоритет такой: между горизонталью и вертикалью он выбирает вертикаль, между вертикалью верх и вертикалью низ он выбирает вертикаль верх, между горизонталью лево и горизонталью право он выбирает горизонталь лево.

Когда робот не видит конфет на одной с ним горизонтали или вертикали, он останавливается.

Выведите строку из маленьких латинских букв – названий конфет – в той последовательности, как их соберет робот. Разделять буквы пробелами не нужно.

По дате
По рейтингу
Аватар пользователя
Новичок
7лет

Ну так в чём помощь нужна? Что именно не получается?

var
table: array[1..8, 1..8] of char;
x, y, i, nextX, nextY, distance: integer;
begin
{Заполнение table - пробел в пустой клетке, буква в заполенной }
nextX := 7; {Начальная горизонтальная координата робота}
nextY := 7; {Начальная вертикальная координата робота}
repeat
x := nextX;
y := nextY;
if table[x, y] <> ' ' then begin
write(table[x, y]);
table[x, y] := ' ';
end;
distance := 100;
for i := 1 to 8 do if (table[i, x] <> ' ') and abs(i - y) < distance then begin
nextX := x;
nextY := i;
distance := abs(i - y)
end;
for i := 1 to 8 do if (table[y, i] <> ' ') and abs(i - x) < distance then begin
nextX := i;
nextY := y;
distance := abs(i - y)
end
until distance > 8
end.

Аватар пользователя
Искусственный Интеллект
7лет

Для начала научись переписывать задание и прекращай грубить (тебя ясно спрашивают в чем помощь требуется - пометка данного комментария "бесполезным" = отказ в помощи)

PS: Обрати внимание, что в задании поле 8x8, а у тебя поле прямоугольное