0Pricing
Coding Interview Prep · Урок

Обходы сетки и векторы направлений

Перемещайтесь с dx, dy и оставайтесь в границах

«Обходы сетки и векторы направлений» — бесплатный урок Coding Interview Prep на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Coding Interview Prep, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Coding Interview Prep содержит 4 уроков всего.

Перемещение по сетке

Многие задачи на моделирование происходят на сетке из строк и столбцов. Фишка начинает движение из некоторой клетки и перемещается по клеткам согласно направлениям. 🗺️

Отслеживайте строку и столбец

Храните позицию как пару (r, c). Номер строки отсчитывается сверху вниз, а номер столбца — слева направо.

r, c = 0, 0

Векторы направлений

Кодируйте каждое перемещение вектором (dr, dc). Прибавление этого вектора к позиции перемещает Вас на одну клетку в нужном направлении без цепочек условий.

dr, dc = 0, 1  # move right

Четыре соседние клетки

Храните четыре перемещения в массивах, чтобы перебрать их в цикле. Это стандартный шаблон: вверх, вниз, влево и вправо.

DR = [-1, 1, 0, 0]
DC = [0, 0, -1, 1]

Сделайте один шаг

Чтобы переместиться, просто прибавьте выбранный вектор к текущей клетке. Одни и те же две строки работают для любого из четырёх направлений.

r += DR[k]
c += DC[k]

Оставайтесь в пределах сетки

Перед шагом проверьте, находится ли клетка внутри сетки. Строки имеют номера от 0 до R-1, а столбцы — от 0 до C-1; всё остальное находится за пределами поля.

if 0 <= r < R and 0 <= c < C:
    pass

Диагонали, если они разрешены

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

DR8 = [-1,-1,-1,0,0,1,1,1]
DC8 = [-1,0,1,-1,1,-1,0,1]

Поворот налево или направо

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

facing = (facing + 1) % 4  # turn right

Заблокированные клетки и стены

Проверяйте значение сетки перед перемещением. Если клетка — это стена, пропустите её или остановитесь, точно следуя правилам.

if grid[r][c] == '#':
    continue

Сетки с переходом через край

Если сетка замыкается по краям, берите координаты по модулю размера, чтобы правый край плавно соединялся с левым.

r = (r + dr) % R
c = (c + dc) % C

Почему векторы лучше

Векторы направлений заменяют запутанные блоки if-else одним аккуратным циклом. Чем меньше ветвлений, тем меньше ошибок под давлением соревнования.

Быстрая проверка

Вы перемещаетесь по сетке с помощью векторов направлений и должны оставаться на игровом поле.

Итоги

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

Часто задаваемые вопросы

Урок «Обходы сетки и векторы направлений» бесплатный?

Да — полный текст урока «Обходы сетки и векторы направлений» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Coding Interview Prep, подпишись на CoddyKit PRO. Курс Coding Interview Prep содержит 4 уроков всего.

Чему я научусь в уроке «Обходы сетки и векторы направлений»?

Перемещайтесь с dx, dy и оставайтесь в границах Ты практикуешь Coding Interview Prep с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Coding Interview Prep?

Предыдущий опыт не требуется. Coding Interview Prep на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Обходы сетки и векторы направлений»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Coding Interview Prep?

Да. Каждый урок Coding Interview Prep включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Моделирование состояния и переход вперёд
  2. Обходы сетки и векторы направлений
  3. Поиск циклов в моделировании
  4. Приручаем сложные крайние случаи
← Назад к Coding Interview Prep