All streams
Search
Write a publication
Pull to refresh
12
0
Дмитрий @demitryy

Пользователь

Send message

Я лишь вижу описание способа уменьшения числа итераций за счёт исключения клеток, откуда маршрут уже был построен

См. рис. 3.

На нем показано, что освободившаяся (белая) клетка не обязательно та, из которой маршрут был построен. Но одна клетка гарантированно станет белой, т.к. число стрелочек ведущих из левого кружочка в правый n*m - 2 (т.к. минимум одну стрелочку мы потратили на зеленый кружок).

Если вы придумали последовательность команд, которая будет освобождать n*m-1 черепах, занимающих все поле, то та же последовательность будет работать и для любой отдельной из черепах.

Вот тут очень тонкий лед, так как не приведено никагого способа отличить синюю точку от белой

Предполагается честно выполнить набор команд f от каждой синей клетки x \in X и "вручную" собрать множество новых синих клеток Y =\{y \ |\   y=f(x),\ y \ne exit, \ x \in X\}

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

у вас нет гарантии что каждый последующий маршрут не приводит вас в предыдущую точку

Верно, но мы нигде это не используем

В интерпретации, где вы управляете сразу n*m-1 черепахами у вас после каждой итерации будет исчезать (выходить из лабиринта) как минимум одна черепаха. Рано или поздно черепахи закончатся.

Этот первый шаг сомнений не вызывает. Если мы выполнили программу "X" верную для клетки А1, но не вышли из лабиринта - то мы теперь точно не находимся в А1.

Это утверждение не верно. Представьте лабиринт 1\times 3, выход в крайней правой клетке. После выполнения right мы освободим черепаху из центра, но черепаха с крайней левой клетки перейдет в центр. Поэтому следующая команда будет снова right.

Как только черепаха наступит на клетку "выход", она обретет свободу, независимо от следующих команд. Поскольку структура лабиринта известна заранее, можно вычислить все маршруты и для каждой клетки S найти клетку T = route(S), в которую он ведет. Обратная связь от черепахи нигде не используется.

Можете представить, что у вас во всех синих клетках одновременно сидят черепахи и вы хотите выпустить их всех. Тогда изначально у вас n*m-1 черепах. После первой итерации как минимум одна черепаха выйдет как только встанет на клетку "выход", количество черепах в лабиринте гарантированно уменьшится.

Привет!

Огромное спасибо за интересную статью о переезде Yandex Tracker в облако. Рассказ о бесшовном переезде объемных баз данных впечатляет и представляет ценную информацию для тех, кто также стоит перед подобной задачей.

Очень интересно следить за развитием Yandex Tracker, спасибо за статью! ?

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

Для меня пересечение отрезков - это пересечение множеств их точек. Оно даже обозначается через тот же символ пересечения:a\cap b:)

Еще раз: не увольняют тех кто уехал.

Есть и 3 вариант: в ответ на увольнение поуехавших от мобилизации и работающих дистанционно разработчиков.

Вы путаете. В яндексе такого нет.

Спасибо, что подсказали. Сразу начал гуглить и нашел статью на хабре на эту тему. Добавлю ссылку на нее тоже)
Благодарю за замечание, опечатался)
Копипаста проросла, поправил :)
2

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity