Уявіть, що підпал ходить по місту і збирає жертв за дуже специфічним малюнком (Або, як варіант, уявіть, як бджола літає по саду і збирає свої квіти, щоб поленізувати за дуже конкретною схемою ). Скажімо, місто - це матриця N × N , де N - ціле число, що перевищує або дорівнює 2 . Підпал починається з лівого верхнього кута і послідовно встановлює перед ними M плями будинку (де M - номер будинку, в якому вони зараз перебувають), змінюючи напрямок, в якому рухається після кожної пожежі, в порядку Схід ⟶ Південь ⟶ Захід ⟶ Північ ⟶ Схід ⟶ Південь… і так далі. колисковапідпалу - це значення М, яке змушує їх виїхати з міста (тобто останнього будинку, який вони відвідують перед тим, як зупинити гидоту). Це легше зрозуміти на прикладі. Візьмемо для прикладу таку матрицю:
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 плями, і М зараз 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]]
П’ятий тестовий випадок дуже цікавий для візуалізації .