У меня когда-то был красивый прямоугольный массив. Это было очень симметрично, но, к сожалению, оно развалилось, и теперь у меня есть только верхний левый угол. Ваша задача будет восстановить исходный массив.
Ваша программа получит двумерный массив целых чисел. Для простоты синтаксического анализа вы можете предположить, что все они находятся между 1 и 9. Ваша задача состоит в том, чтобы перевернуть столбцы массива, его строки и оба, сшить вместе результирующие углы и вернуть полученный массив.
Вы можете предположить, что размеры массива будут как минимум 1x1.
Тестовые случаи:
Input:
1 2 3
4 5 6
Output:
1 2 3 3 2 1
4 5 6 6 5 4
4 5 6 6 5 4
1 2 3 3 2 1
Input:
1
Output:
1 1
1 1
Input:
9
9
9
Output:
9 9
9 9
9 9
9 9
9 9
9 9
Это код-гольф , побеждает меньше байтов!
WS⟦ι⟧‖M→↓
возможно? 5 байтов для чтения ввода и 4 для его отражения.╬
(или с каким-то похожим персонажем), просто не могу вспомнить, какой: cОтветы:
Протон , 29 байт
Попробуйте онлайн!
Есть несколько других интересных подходов:
Протон , 29 байт
Попробуйте онлайн!
Вы можете определить зеркальную подфункцию
g
in-line, потому что Proton. Это не короче, хотя.Протон , 36 байт
Попробуйте онлайн!
Это должно быть
(a=>zip(*(a+a[by-1])))*2
24 байта, но функция zip полностью нарушена. По сути, вы зеркально отражаете это и архивируете, а затем делаете это дважды (вы можете умножить функцию на положительное целое число, чтобы применить функцию несколько раз).источник
Холст , 1 байт
Попробуй это здесь!
Выводится как многострочная строка
источник
Haskell,
2524 байтаПопробуйте онлайн!
источник
Python 3, 38 байт
Попробуйте онлайн!
Принимает список списков и возвращает список списков.
Объяснение:
источник
Шелуха ,
76 байтПо совпадению, Эрик разместил точно такой же код в чате Husk примерно за минуту до того, как я опубликовал это.
Попробуйте онлайн!
Предыдущая версия, 7 байт :
источник
Сетчатка , 13 байт
Попробуйте онлайн!
объяснение
В каждой строке (
%
) сопоставьте конец строки ($
), вставьте в начало ($^
) обратную ( ) всей строки$`
и напечатайте результат с помощью завершающего перевода строки (\
). Это делает отражение вдоль вертикальной оси и печатает первую половину вывода.Это просто переворачивает всю строку, что эквивалентно повороту на 180 ° или, в нашем случае (из-за горизонтальной симметрии), отражению вдоль горизонтальной оси. Таким образом, это работает в том, что
V
(обратное) регулярное выражение по умолчанию(?m:^.*$)
, которое обычно соответствует каждой строке строки. Тем не менее, мы активируем однострочную опциюs
, которая также.
сопоставляет перевод строки, и поэтому это регулярное выражение по умолчанию фактически соответствует всей строке.Результат этого печатается автоматически в конце программы, давая нам вторую половину результата.
источник
$
в первой строке. ;) Я добавлю объяснение позже.05AB1E , 2 байта
Попробуйте онлайн!
Кредит для г Xcoder указывая на то , что массивы строки могут считаться 2D массивов и Павла для его подтверждения.
источник
Желе , 5 байт
Попробуйте онлайн!
источник
m0Z$⁺
(от Hyper Neutrino).MATL , 5 байтов
Попробуйте онлайн!
Объяснение:
источник
Октава ,
3329 байтСпасибо @Giuseppe за игру в четыре байта!
Попробуйте онлайн!
источник
JavaScript (Node.js) ,
62554946 байтПопробуйте онлайн!
Поскольку
Array.prototype.reverse()
массив на месте переворачивается, мне сначала нужно сделать неглубокую копию.A=>(j=x=>[...x,...x.reverse()])(A).map(j)
не работает.источник
J , 12 байт
Попробуйте онлайн!
объяснение
источник
awk, 88 байт
источник
Треугольность , 31 байт
Попробуйте онлайн!
объяснение
Удаление символов, которые составляют отступы, вот что делает программа:
источник
R , 57 байт
Попробуйте онлайн!
источник
APL + WIN, 11 байт
Запрашивает двумерный массив целых чисел.
источник
Stax , 5 байт
Запустите и отладьте его онлайн
:m
означает зеркало, которое естьinput.concat(reverse(input))
.m
, в этом контексте означает вывод каждой строки после применения ...Итак, отразите массив строк, а затем отразите каждую строку и вывод.
источник
Japt , 6 байт
Попробуй здесь
объяснение
источник
Mathematica , 29 байт
Попробуйте онлайн!
источник
SOGL V0.12 , 2 байта
-1 байт благодаря dzaima.
Попробуй это здесь!
источник
APL (Dyalog Classic) , 7 байтов
Попробуйте онлайн!
источник
Рубин , 35 байт
Попробуйте онлайн!
Лямбда, принимающая 2D-массив и возвращающая 2D-массив. Это просто, но в любом случае вот версия без загадок:
источник
Java 8,
140131 байтОбъяснение:
Попробуйте онлайн.
источник
J 11 байт
Функция анонимного молчаливого префикса.
Попробуйте онлайн!
|:
транспонирования@(…)
результат:,
аргумент, сопровождаемый|.
его обратный^:2
и все это сделано дваждыисточник
СНОБОЛ4 (CSNOBOL4) ,
119113 байтовПопробуйте онлайн!
Принимает ввод в виде строк на STDIN, без пробелов. Это работает только потому, что цифры бывают
1-9
и не получится в противном случае.источник
REVERSE
; насколько я могу судить, оригинал поддерживал только целочисленную арифметику.C (gcc) ,
114111 байтовПопробуйте онлайн!
C (gcc) , 109 байт (злоупотребляя простотой разбора)
Попробуйте онлайн!
источник
for(i=h+h;i-->0;puts(""))for(j=w+w;j-->0;)
printf("%d"
дополнительном байте -1.Древесный уголь , 5 байт
Попробуйте онлайн!
Спасибо только ASCII за лучший формат ввода.
источник
[]
не делает ее двухмерной).Добавить ++ , 30 байт
Попробуйте онлайн!
Нижний колонтитул просто преобразует вложенный массив в формат в вопросе. Определяет функцию
f
, которая ожидает матрицу (вложенный массив) в качестве аргумента.источник
Юлия 0,6 ,
5549 байтПопробуйте онлайн!
~(i)
это функция для создания среза отi
вниз до1
.Так
~end
дает ломтикend:-1:1
!(x)
это функция для перестройки массива.источник
V , 12 байт
Попробуйте онлайн!
Объяснение:
источник