Ctrl K

Мышь, кот и сыр

Сложная
Поле — прямоугольная сетка grid, каждая строка — строка символов: - '.' — свободная клетка; - '#' — стена, на неё вставать нельзя; - 'M' — мышь, 'C' — кот, 'F' — сыр. Каждый из этих символов встречается ровно один раз, а их клетки тоже свободны. Мышь и кот ходят по очереди, первой ходит мышь. За ход можно прыгнуть в одном из четырёх направлений (вверх, вниз, влево, вправо) не дальше чем на mouse_jump клеток для мыши и cat_jump клеток для кота. Прыгнуть можно и на меньшее расстояние, и вообще остаться на месте. Выходить за край поля и перепрыгивать через стены нельзя, а вот мышь может перепрыгнуть через кота. Игра заканчивается, когда: - кот попадает на клетку с мышью — побеждает кот; - кот первым добирается до сыра — побеждает кот; - мышь первой добирается до сыра — побеждает мышь; - мышь не добралась до сыра за 1000 ходов — побеждает кот. Оба играют наилучшим образом. Верните True, если мышь побеждает, иначе False.
Пример 1
grid=['M..C', '...F'], cat_jump=1, mouse_jump=1 → False

Кот стоит прямо над сыром и доберётся до него за один ход, а мыши нужно минимум четыре.

Пример 2
grid=['M.#C', '...#', 'F...'], cat_jump=2, mouse_jump=2 → True

Кот заперт стенами в углу, а мышь первым же прыжком на две клетки вниз попадает на сыр.

Пример 3
grid=['F.M.C'], cat_jump=3, mouse_jump=2 → True
Ограничения
  • 1 ≤ len(grid), len(grid[i]) ≤ 8, все строки одной длины
  • grid[i][j] — один из символов 'C', 'M', 'F', '.', '#'
  • 'C', 'M' и 'F' встречаются ровно по одному разу
  • 1 ≤ cat_jump, mouse_jump ≤ 8
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамый длинный подъём по карте СложнаяВор и охранник СложнаяПрогулки только в гору СложнаяПятнашки на шесть клеток СложнаяБери до трёх карт Сложная
загружаем Python…
Вход
grid=['M..C', '...F'], cat_jump=1, mouse_jump=1
Ожидается
False

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 46 тестов на сервере, включая скрытые.