Задача: робот стоит в клетке N слева направо, нужно привести его в клетку 2N. Это значит пройти N шагов вправо (от N до 2N).
Пошаговое объяснение:
- Исходная позиция: N.
- Целевая позиция: 2N.
- Необходимый сдвиг: 2N − N = N клеток вправо.
- Следовательно, робот должен сделать N перемещений вперед (право).
Алгоритм:
- Двигаться вперед N раз.
Дает одинаковый результат вне зависимости от длины коридора, при условии, что коридор содержит как минимум 2N клеток.
Примеры реализации (разные стили/языки):
Псевдокод (универсальный) for i from 1 to N do move_forward()
Python def move_to_2N(n): for _ in range(n): move_forward()
C++ void move_to_2N(int n) { for (int i = 0; i < n; ++i) { move_forward(); } }
Java public void moveTo2N(int n) { for (int i = 0; i < n; i++) { moveForward(); } }
Если есть возможность отслеживать позицию динамически int pos = get_position(); // предполагаемая функция while (pos < 2 * n) { move_forward(); pos++; }
Дополнительные пояснения:
- Предполагается, что коридор длиннее или равен 2N клеткам и N — положительное целое число.
- Время работы пропорционально N (O(N)), так как выполняется N перемещений.
- Если API роботизированной среды отличается названием функции, замените move_forward() на нужную вам команду перемещения на одну клетку вправо.