Нахождение локальных минимумов с помощью робота на python

#python

#питон

Вопрос:

Итак, мне задали этот вопрос, и я потратил часы, пытаясь его решить, но, похоже, я не могу понять это правильно.

Вот вопрос:

В приведенной ниже таблице чисел мы определим локальные минимумы как квадрат с наименьшим числом из четырех окружающих его квадратов (вверху, внизу, слева и справа), которые не являются препятствиями.

Запрограммируйте робота на поиск и закрашивание квадрата, который является локальным минимумом.

Функции: поворот влево (), Поворот вправо(), вперед (), закрашивание (), квадратное число (), Начало препятствия ().

paint() закрасит квадрат под роботом, squareNumber() проверяет номер квадрата под роботом, а obstacleAhead() проверяет, есть ли квадрат перед роботом.

Кроме того, использование списков или определение новых функций не допускается.

Программа тестируется с несколькими сетками, поэтому мне нужно создать решение, которое будет работать для любой сетки.

Я не уверен, как заставить робота двигаться таким образом, чтобы он проверял все квадраты, но при этом не застревал. Любая помощь будет признательна!

Изображение сетки

Комментарии:

1. Вам не нужно проверять все квадраты. Вам просто нужно найти локальный минимум. Это локальное свойство, а не глобальное свойство.

2. Я не понимаю, что вы имеете в виду. С помощью функций, которые они предоставляют, единственный способ найти локальные минимумы — это поиск по всем квадратам, пока он не найдет один, и существует несколько сеток, поэтому я не могу просто создать решение, которое работает специально для одного из них

3. Классический StackOverflow: «потраченные часы», ни одной общей строки кода. Что вы пробовали? Что вы ожидали получить от работы? Что произошло вместо этого?

4. Ни одно из определений функций или переменных не на английском языке, поэтому я не думаю, что это сильно помогло бы, если бы я опубликовал это. Моя идея состояла в том, чтобы пройти через каждый квадрат и проверить окружающие, если это возможно. Если какой-либо из них меньше исходного квадрата, он переходит к следующему квадрату и повторяет попытку. Моя проблема в том, что он продолжает застревать, и я не уверен, что делать, чтобы избежать этого.

5. Действительно ли «локальные минимумы» являются оригинальным текстом?

Ответ №1:

Вы думаете, что вам нужно попробовать каждый квадрат, но это не так.

Если квадрат не является локальным минимумом, это означает, что есть соседний квадрат с меньшим числом. Если этот квадрат не является локальным минимумом, есть соседний квадрат с меньшим числом. Если этот квадрат не является локальным минимумом и т. Д.

Если вы следуете по пути уменьшения чисел, этот путь не может продолжаться вечно, потому что сетка конечна. В конце концов, путь должен заканчиваться на локальном минимуме.