Цель: Учитывая матрицу положительных целых чисел , выведите наименьшую центросимметричную матрицу, которая содержит M (эта матрица также может содержать неположительные целые числа).
Центросимметричная матрица - это квадратная матрица с вращательной симметрией порядка 2, т.е. она остается той же самой матрицей после ее двойного вращения. Например, центросимметричная матрица имеет верхний левый элемент такой же, как нижний правый, а элемент выше центра такой же, как элемент ниже центра. Полезную визуализацию можно найти здесь .
Более формально, с учетом матрицы , производит квадратную матрицу N такой , что N центросимметричен и М ⊆ N , и нет никакой другой квадратная матрицы К таким образом, что тусклый К < тусклого N .
является подмножеством B (обозначение: A ⊆ B ) тогда и только тогда, когда каждое значение A i , j появляется в индексе B i + i ′ , j + j ′ для некоторой пары целых чисел ( i ′ , j ′ ) .
Примечание : некоторые матрицы имеют несколько решений (например [[3,3],[1,2]]
, решаются как [[2,1,0],[3,3,3],[0,1,2]]
или [[3,3,3],[1,2,1],[3,3,3]]
); Вы должны вывести хотя бы одно из действительных решений.
Контрольные примеры
input
example output
[[1, 2, 3],
[4, 5, 6]]
[[1, 2, 3, 0],
[4, 5, 6, 0],
[0, 6, 5, 4],
[0, 3, 2, 1]]
[[9]]
[[9]]
[[9, 10]]
[[9, 10],
[10, 9]]
[[100, 200, 300]]
[[100, 200, 300],
[ 0, 0, 0],
[300, 200, 100]]
[[1, 2, 3],
[4, 5, 4]]
[[1, 2, 3],
[4, 5, 4]
[3, 2, 1]]
[[1, 2, 3],
[5, 6, 5],
[3, 2, 1]]
[[1, 2, 3],
[5, 6, 5],
[3, 2, 1]]
[[4, 5, 4],
[1, 2, 3]]
[[3, 2, 1],
[4, 5, 4],
[1, 2, 3]]
[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 9, 9, 9, 9, 9, 9, 9],
[1, 1, 1, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 1]]
[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9],
[1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1],
[9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
источник
Ответы:
Брахилог , 12 байт
Попробуйте онлайн!
Вопреки большинству ответов Brachylog, он принимает входные данные через переменную Output
.
и выводит результат через переменную Input?
(я знаю, что это сбивает с толку).объяснение
8 байтов, дает все действительные матрицы
Технически эта программа также работает:
ṁ↔ᵐ↔?aaᵐ
Но это оставит в качестве переменных ячейки, которые могут принимать любое значение (они показывают как
_XXXXX
, что является внутренним именем переменной Пролога). Так что технически это даже лучше, чем то, что просят, но я думаю, что это не то, что требует задача.источник
≜
сделать отложенную маркировку ...JavaScript (ES6),
192180177 байтПопробуйте онлайн!
Алгоритм
Пример:
Мы проверяем, можем ли мы заполнить матрицу так, чтобы она была центросимметричной.
Пример:
источник
Желе , 27 байт
Попробуйте онлайн!
Новые строки добавлены к фактическому выводу через TIO для ясности.
источник
Python 2 ,
242227226 байтПопробуйте онлайн!
Добавлено:
источник
n=[W*[0]for _ in r(W)]
может бытьn=eval(`[W*[0]]*W`)
.Clojure 254 байта
Jinkies, Scoob
Попробуйте онлайн!
источник