(Є пов’язані питання щодо нескінченних пісковиків та пошуку елементів ідентичності пісковиків .)
Давши матрицю невід'ємних цілих чисел, поверніть матрицю таких самих розмірів, але пересипану :
- Якщо матриця не містить значень більше 4, поверніть її.
- Кожна "комірка", що перевищує 3, зменшується на 4, а всі безпосередньо сусідні комірки (вгорі, внизу, зліва та справа) збільшуються, якщо вони існують.
- ГОТО 1.
Приклади:
0 1 0 0 2 0
2 4 0 -> 3 0 1
0 0 3 0 1 3
1 2 3 2 3 4 2 5 1 4 1 2 0 3 3 0 3 3 0 3 3
4 5 6 -> 2 4 4 -> 4 2 3 -> 0 5 4 -> 3 2 1 -> 3 3 1 -> 3 3 2
7 8 9 5 7 7 2 6 5 4 3 2 0 5 3 1 1 4 1 2 0
(Потрібно лише повернути кінцевий результат. Шлях, по якому ви доїдете до нього, може відрізнятися від показаного тут: не має значення, в якому порядку ви виконуєте операції збивання, всі вони призводять до одного результату.)
Більш глибоке пояснення та певна мотивація дивіться у цьому відео "Numberphile" чи статті у Вікіпедії про абелеву модель пісочника .
Правила:
- Ви можете приймати введення та вихід будь-яким із стандартних способів
- Лазівки заборонені
- Вхід і вихід можуть бути:
- вкладений список:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
- простий список:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
і форма - якийсь рідний тип матриці
- рядок, наприклад
1 2 3\n4 5 6\n7 8 9
- або що б там не було на вашій мові.
- вкладений список:
- Вхід і вихід повинні бути в одній формі
- Вхід може містити більші числа, ніж наведені тут, але розмір може бути обмежений межами вашої мови (MAXINT еквіваленти, якщо це застосовується)
- Матриця може мати будь-яку форму (наприклад, 1x1, 2x2, 3x3, 4x4, 2x7, 11x3, ...)
- Вам не потрібно обробляти випадок, коли форма дорівнює 0xN або Nx0.
Тестові шафи
[[2, 5, 4], [8, 6, 4], [1, 2, 3]] -> [[3, 3, 0], [1, 2, 2], [1, 3, 2]]
[[0, 0, 2], [1, 3, 3], [0, 0, 0]] -> [[0, 0, 2], [1, 3, 3], [0, 0, 0]]
[[9, 9, 9], [9, 9, 9], [9, 9, 9]] -> [[1, 3, 1], [3, 1, 3], [1, 3, 1]]
[[4, 5], [2, 3]] -> [[2, 3], [0, 1]]
[[2, 3, 5], [2, 2, 0]] -> [[3, 0, 2], [2, 3, 1]]
[[7]] -> [[3]]