Представьте себе поджигателя, гуляющего по городу и собирающего его жертв в соответствии с очень специфическим рисунком (или, альтернативно, представьте себе пчелу, летящую по саду и собирающую цветы для опыления в соответствии с очень специфическим рисунком ). Скажем, город представляет собой матрицу N × N , где N - это целое число, большее или равное 2 . Поджигатель начинает с верхнего левого угла и последовательно устанавливает точки дома М перед собой (где М - номер дома, в котором они находятся), изменяя направление движения после каждого пожара в следующем порядке: Восток, Юг, Запад, Север, Восток, Юг ... и так далее. колыбельнаяПоджигатель - это значение М, которое заставляет их покинуть город (то есть последний дом, который они посещают перед тем, как остановить мерзость). Это гораздо проще понять на примере. Возьмите следующую матрицу, например:
3 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1
- Мы начинаем в верхнем левом углу, поэтому M = 3 (
X
отмечает текущую и предыдущую позиции поджигателя):X 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1
- Согласно известному порядку, он сначала идет на восток (3) пятна и приземляется на 2, поэтому M изменяется соответственно:
X 2 3 X 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1
- Тогда это идет на юг 2 пятна, и M теперь 1 :
X 2 3 X 7 3 1 4 1 6 2 5 3 X 1 4 4 3 2 4 1 1 1 1 1
- Теперь он перемещается на 1 позицию на запад, а М становится 3 :
X 2 3 X 7 3 1 4 1 6 2 5 XX 1 4 4 3 2 4 1 1 1 1 1
- После того, как он движется на 3 точки на север, он выходит из города! Следовательно, 3 - это колыбельная этого поджигателя:
Икс X 2 3 X 7 3 1 4 1 6 2 5 XX 1 4 4 3 2 4 1 1 1 1 1
Учитывая N × N матрицу (вы также можете принять N в качестве входных данных), найдите колыбельную поджигателя. Я написал программу, с помощью которой вы можете сгенерировать больше тестов и визуализировать путь поджигателя: попробуйте онлайн!
- Можно предположить , что поджигатель делает есть колыбельную (то есть, на самом деле может выйти из матрицы).
- Для простоты матрица будет содержать только положительные целые числа, меньшие или равные 9 (цифрам). Решения, которые обрабатывают любое положительное целое число, полностью приветствуются.
- Обратите внимание, что поджигатель может приземлиться в месте, где он уже сожжен, в случае, если смысл, в котором он движется, отличается от первого раза. В таком случае просто возьмите значение этого элемента и двигайтесь снова, как обычно.
- Вы можете соревноваться на любом языке программирования и можете принимать и выводить данные любым стандартным методом , при этом отмечая, что эти лазейки по умолчанию запрещены. Это код-гольф , поэтому выигрывает самое короткое представление (в байтах) для каждого языка .
Контрольные примеры
------------- 9 2 3 1 7 2 8 7 6 Колыбельная: 9 ------------- 2 1 2 1 3 1 1 2 1 2 2 1 1 1 1 3 Колыбельная: 2 ------------- 3 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1 Колыбельная: 3 ------------- 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 Колыбельная: 2 ------------- 3 2 1 2 1 1 1 2 3 2 3 2 1 1 2 1 1 1 3 1 2 3 1 1 1 1 1 1 4 5 2 3 1 1 1 1 2 1 2 1 2 2 1 2 2 3 2 1 2 Колыбельная: 3 -------------
Матрицы в другом формате:
[[9, 2, 3], [1, 7, 2], [8, 7, 6]] [[2, 1, 2, 1], [3, 1, 1, 2], [1, 2, 2, 1], [1, 1, 1, 3]] [[3, 2, 3, 2, 7], [3, 1, 4, 1, 6], [2, 5, 3, 1, 1], [4, 4, 3, 2, 4], [ 1, 1, 1, 1, 1]] [[1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2]] [[3, 2, 1, 2, 1, 1, 1], [2, 3, 2, 3, 2, 1, 1], [2, 1, 1, 1, 3, 1, 2], [ 3, 1, 1, 1, 1, 1, 1], [4, 5, 2, 3, 1, 1, 1], [1, 2, 1, 2, 1, 2, 2], [1, 2, 2, 3, 2, 1, 2]]
Пятый контрольный пример очень интересен для визуализации .