Закраски клеток (команда 5) здесь нет, значит надо просто обеспечить более короткое перемещение в ту же конечную точку.
Для этого посмотрим, что за движения там записаны.
Если во всём алгоритме три раза вверх и три раза вниз- то робот вернётся в ту же точку (по вертикали), и значит все эти команды можно просто удалить.
То же самое- для движений влево и вправо. Они тоже взаимно противоположные.
Другими словами- надо просто сократить все пары движений влево-вправо и вверх-вниз. Всё что останется- это и есть короткий вариант алгоритма, который даст перемещение ту же самую конечную точку.
Запишу подробнее, как сократить алгоритм движения (только для случая без закраски):
а) берём наш алгоритм: 131413324223
б) во всём алгоритме считаем количество команд перемещения для каждого из направлений движения:
1 (вверх)- 3 штуки
2 (вниз)- 3 штуки
3 (влево)- 4 штуки
4 (вправо)- 2 штуки
в) считаем разность количества команд влево и вправо (из большего числа вычитаем меньшее): 4 - 2 = 2
Осталось две команды - влево (т.к. их было больше). Остальные команды влево-вправо сократились (мы их удалили из алгоритма).
г) считаем разность количества команд вверх и вниз (из большего числа вычитаем меньшее, но тут числа равны): 3 - 3 = 0
Не осталось ни одной команды вверх или вниз. Все эти команды сократились (мы их удалили из алгоритма).
д) получаем, что в коротком варианте алгоритма останутся только две команды влево (3).
Запишем весь алгоритм: 33
х=7690 - условие
var x, L, M: integer;
begin readln(x);
L:=0;
M:=0;
while x > 0 do begin
1) L:= L + 1 = 1;
M:= M + x mod 10 = 0;
x:= x div 10 = 7 69;
2) L:= L + 1 = 2;
M:= M + x mod 10 = 9;
x:= x div 10 = 7 6;
3) L:= L + 1 = 3;
M:= M + x mod 10 = 15;
x:= x div 10 = 7 ;
4) L:= L + 1 = 4;
M:= M + x mod 10 = 22;
x:= x div 10 = 0;
end;
writeln(L);
write(M);
end.
L = 4; M = 22
Объяснение:
1)L:= L + 1 = 0 + 1 = 1;
M:= M + x mod 10 = 0 + 0 (остаток) = 0;
x:= x div 10 = 7690 : 10 = 769 (остаток 0 здесь не пишется);
2)L:= L + 1 = 1 + 1 = 2;
M:= M + x mod 10 = 0 + 9 (остаток) = 9;
x:= x div 10 = 769 : 10 = 76 (остаток 9 здесь не пишется);
3)L:= L + 1 = 2 + 1 = 3;
M:= M + x mod 10 = 9 + 6 (остаток) = 15;
x:= x div 10 = 76 : 10 = 7 (остаток 6 здесь не пишется);
4)L:= L + 1 = 3 + 1 = 4;
M:= M + x mod 10 = 15 + 7 (остаток) = 22;
x:= x div 10 = 7 : 10 = 0 (остаток 7 здесь не пишется);