Вдохновлен этим вопросом переполнения стека .
Соревнование
вход
Массив квадратных матриц, содержащий неотрицательные целые числа.
Выход
Квадратная матрица построена из входных матриц следующим образом.
Пусть будет размером каждой входной матрицы, а - количеством входных матриц.
Для ясности рассмотрим следующий пример входных матриц ( , ):
3 5
4 10
6 8
12 11
2 0
9 1
- Начните с первой входной матрицы.
- Сдвиньте вторую входную матрицу на N -1 ступеньки вниз и N -1 ступеньки вправо, чтобы ее левый верхний элемент совпадал с нижним правым элементом предыдущего.
Представьте себе вторую сдвинутую матрицу, как если бы она была сложена поверх первой. Суммируйте два значения в совпадающей записи. Запишите остальные значения и заполните оставшиеся записи,
0
чтобы получить матрицу . С примерами ввода результат пока3 5 0 4 16 8 0 12 11
Для каждой оставшейся входной матрицы разнесите ее так, чтобы ее левый верхний угол совпадал с правым нижним краем накопленной матрицы результатов. В приведенном примере третья входная матрица дает
3 5 0 0 4 16 8 0 0 12 13 0 0 0 9 1
Выходной результат - это матрица полученная после включения последней входной матрицы.
Дополнительные правила и разъяснения
- и являются положительными целыми числами.
- При желании вы можете использовать и качестве дополнительных входов.
- Ввод и вывод могут быть приняты любым разумным способом . Их формат, как обычно, гибкий.
- Программы или функции разрешены на любом языке программирования . Стандартные лазейки запрещены .
- Самый короткий код в байтах побеждает.
Тестовые случаи:
В каждом случае сначала отображаются входные матрицы, а затем выходные данные.
, :
3 5 4 10 6 8 12 11 2 0 9 1 3 5 0 0 4 16 8 0 0 12 13 0 0 0 9 1
, :
3 5 4 10 3 5 4 10
, :
4 7 23 5 39
, :
11 11 8 6 8 12 11 0 4 4 1 13 9 19 11 13 4 2 11 11 8 0 0 6 8 12 0 0 11 0 8 1 13 0 0 9 19 11 0 0 13 4 2
, :
14 13 10 0 13 20 21 3 9 22 0 8 17 3 19 16 14 13 0 0 0 10 13 20 0 0 0 21 12 22 0 0 0 0 25 3 0 0 0 19 16
источник
Ответы:
Желе ,
1512 байтПопробуйте онлайн!
Как это устроено
источник
R ,
8881 байтПопробуйте онлайн!
Принимает
list
матрицы,A
,N
, иP
.Создает необходимую матрицу нулей
o
и поэлементно добавляет содержимоеA
соответствующих подматриц вo
.источник
JavaScript (ES6), 102 байта
Принимает вход как
(n,p,a)
.Попробуйте онлайн!
Как?
где неопределенные ячейки заменяются нулями.
источник
Python 2 , 124 байта
Попробуйте онлайн!
источник
Желе , 12 байт
Попробуйте онлайн!
12 байт
Если бы допускались дополнительные нули
ZŻ€‘ɼ¡)⁺S
- это классное 9-байтовое решение. TIO .источник
Желе , 20 байт
Попробуйте онлайн!
Бах, у Желе сегодня отношение ...
источник
Пип , 37 байт
Функция, которая принимает список списков списков. Попробуйте онлайн!
источник
Python 2 , 124 байта
Попробуйте онлайн!
источник
Древесный уголь , 52 байта
Попробуйте онлайн! Ссылка на подробную версию кода и включает два байта для удобного форматирования. Я начал с версии, которая дополняла все массивы, а затем суммировал их, но я смог поиграть в эту версию, чтобы она была короче. Объяснение:
Уменьшить входное значениеN ,
Вычислить размер результата( N- 1 ) П+ 1 и дважды отображать неявный диапазон, получая матрицу результата, которая печатается неверно.
Сопоставить неявный диапазон с входным значениемп и умножить каждый элемент на N- 1 , Затем отобразите полученный диапазон и суммируйте окончательный результат.
Убедитесь, что ни один из индексов не выходит за пределы допустимого диапазона.
Смещение в исходный ввод для получения желаемого значения.
источник