Этот вопрос об абелевых песочных кучах . Прочитайте этот предыдущий вызов и посмотрите это видео, чтобы узнать больше.
Абелева кучи песка размера п по п - это сетка, содержащая числа 0, 1, 2 и 3 (представляющие количество песчинок). Добавление двух песочниц работает, сначала добавляя элемент за элементом, а затем опуская любой элемент, который идет выше 3. Порядок, в котором вы свергнете, не имеет значения, конечный результат тот же. Когда клетка падает, ее число уменьшается на 4, а каждый из ее прямых соседей увеличивается на 1. Это может вызвать цепную реакцию. Если ячейка находится на краю сетки, любые зерна, которые падают с сетки при свертывании, исчезают.
Например, я добавляю две 3 к 3 песочницы (что дает довольно экстремальную цепную реакцию):
3 3 3 1 2 1 4 5 4 4 6 4 6 2 6 6 3 6 2 5 2 4 1 4 4 2 4 0 4 0 2 0 2 2 1 2
3 3 3 + 2 1 2 = 5 4 5 -> 6 0 6 -> 2 4 2 -> 3 0 3 -> 5 0 5 -> 1 4 1 -> 2 0 2 -> 4 0 4 -> 0 4 0 -> 1 0 1
3 3 3 1 2 1 4 5 4 4 6 4 6 2 6 6 3 6 2 5 2 4 1 4 4 2 4 0 4 0 2 0 2 2 1 2
В этой задаче нас интересует подмножество всех возможных n по n песочниц. В этом подмножестве содержится любая песочница, которую вы можете получить, добавив произвольную песочницу к песочнице all-3s n по n . Например, чуть выше мы увидели, что 212 | 101 | 212
это подмножество, потому что мы получили его, добавив что-то в песочницу all-3.
Теперь у этого подмножества есть интересный элемент: элемент идентичности . Если вы возьмете этот элемент и добавите его к любому другому элементу в подмножестве , сумма не изменится. Другими словами, эта песочница действует как ноль этого подмножества. Так уж получилось, что 212 | 101 | 212
это нулевой элемент для подмножества 3 на 3. Например:
2 2 2 2 1 2 4 3 4 0 5 0 2 1 2 2 2 2
2 2 2 + 1 0 1 = 3 2 3 -> 5 2 5 -> 1 6 1 -> 2 2 2
2 2 2 2 1 2 4 3 4 0 5 0 2 1 2 2 2 2
Теперь это ваша задача: по заданному n найти идентификационный элемент подмножества n по n сетке . Выведите его, назначив уникальный цвет с достаточной контрастностью по вашему выбору для каждого из них 0, 1, 2, 3
и выводя изображение n на n. Ваш код должен быть в состоянии создать случай 50 на 50 менее чем за минуту на разумном современном ПК.
Например, элемент 500 на 500:
Вот синий = 3, зеленый = 2, красный = 1, белый = 0. Но вам не нужно использовать эту цветовую схему в своем ответе.