Kiedyś miałem piękny prostokątny układ. To było bardzo symetryczne, ale niestety rozpadło się i teraz mam tylko lewy górny róg. Twoim zadaniem będzie odbudowanie oryginalnej tablicy.
Twój program otrzyma 2-wymiarową tablicę liczb całkowitych. Aby ułatwić parsowanie, możesz założyć, że wszystkie mają wartość od 1 do 9. Twoim zadaniem jest odwrócenie kolumn tablicy, jej wierszy i obu elementów, zszycie powstałych narożników i zwrócenie powstałej tablicy.
Możesz założyć, że wymiary tablicy będą wynosić co najmniej 1x1.
Przypadki testowe:
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
To jest golf golfowy , wygrywa najmniej bajtów!
WS⟦ι⟧‖M→↓
może? 5 bajtów na odczyt danych wejściowych i 4 na odzwierciedlenie.╬
(lub jakąś podobną postacią), po prostu nie pamiętam, który: cOdpowiedzi:
Proton , 29 bajtów
Wypróbuj online!
Istnieje jednak kilka innych ciekawych podejść:
Proton , 29 bajtów
Wypróbuj online!
Możesz zdefiniować funkcję lustrzaną
g
w linii, ponieważ Proton. Nie jest jednak krótszy.Proton , 36 bajtów
Wypróbuj online!
Powinno to wynosić
(a=>zip(*(a+a[by-1])))*2
24 bajty, ale funkcja zip jest całkowicie zepsuta. Zasadniczo tworzysz kopię lustrzaną i kompresujesz, a następnie robisz to dwukrotnie (możesz pomnożyć funkcję przez dodatnią liczbę całkowitą, aby zastosować tę funkcję wiele razy).źródło
Płótno , 1 bajt
Wypróbuj tutaj!
Wyjścia w postaci ciągu wielowierszowego
źródło
Haskell,
2524 bajtówWypróbuj online!
źródło
Python 3, 38 bajtów
Wypróbuj online!
Pobiera listę list i zwraca listę list.
Wyjaśnienie:
źródło
Łuska ,
76 bajtówPrzypadkowo Erik opublikował dokładnie ten sam kod na czacie Husk na minutę przed opublikowaniem tego.
Wypróbuj online!
Wersja poprzednia, 7 bajtów :
źródło
Siatkówka , 13 bajtów
Wypróbuj online!
Wyjaśnienie
W każdym wierszu (
%
) dopasuj koniec wiersza ($
) i wstaw odwrotną stronę ($^
) całej linii ($`
) i wydrukuj wynik za pomocą końcowego wiersza (\
). To powoduje odbicie wzdłuż osi pionowej i drukuje pierwszą połowę wydruku.To po prostu odwraca cały łańcuch, co odpowiada obrotowi o 180 °, lub w naszym przypadku (z powodu symetrii poziomej) odbicie wzdłuż osi poziomej. W ten sposób działa to, że
V
domyślnym wyrażeniem regularnym (odwrotnym) jest(?m:^.*$)
, który zwykle pasuje do każdej linii łańcucha. Aktywujemy jednak opcję singlelines
, która sprawia, że.
dopasowywanie linii również się zgadza i dlatego ten domyślny regex faktycznie pasuje do całego łańcucha.Wynik tego jest drukowany automatycznie na końcu programu, dając nam drugą połowę wyniku.
źródło
$
pierwsza linia. ;) Dodam wyjaśnienie później.05AB1E , 2 bajty
Wypróbuj online!
Podziękowania dla pana Xcodera wskazującego, że tablice ciągów znaków mogą być liczone jako tablice 2D i Pavel za potwierdzenie.
źródło
Galaretka , 5 bajtów
Wypróbuj online!
źródło
m0Z$⁺
(przez Hyper Neutrino).MATL , 5 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
Oktawa ,
3329 bajtówDzięki @Giuseppe za grę w golfa cztery bajty!
Wypróbuj online!
źródło
JavaScript (Node.js) ,
62554946 bajtówWypróbuj online!
Ponieważ
Array.prototype.reverse()
odwraca tablicę na miejscu, najpierw muszę wykonać płytką kopię.A=>(j=x=>[...x,...x.reverse()])(A).map(j)
nie działa.źródło
J , 12 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
awk, 88 bajtów
źródło
Trójkątność , 31 bajtów
Wypróbuj online!
Wyjaśnienie
Usuwając znaki, które składają się na wypełnienie, oto co robi program:
źródło
R , 57 bajtów
Wypróbuj online!
źródło
APL + WIN, 11 bajtów
Monituje o tablicę liczb całkowitych 2d.
źródło
Stax , 5 bajtów
Uruchom i debuguj online
:m
oznacza lustro, które jestinput.concat(reverse(input))
.m
, w tym kontekście oznacza wyjście każdej linii po zastosowaniu ...Odzwierciedlaj tablicę wierszy, a następnie odbijaj każdy wiersz i dane wyjściowe.
źródło
Japt , 6 bajtów
Wypróbuj tutaj
Wyjaśnienie
źródło
Mathematica , 29 bajtów
Wypróbuj online!
źródło
SOGL V0.12 , 2 bajty
-1 bajt dzięki dzaima.
Wypróbuj tutaj!
źródło
APL (Dyalog Classic) , 7 bajtów
Wypróbuj online!
źródło
Rubin , 35 bajtów
Wypróbuj online!
Lambda akceptuje tablicę 2D i zwraca tablicę 2D. To proste, ale i tak jest wersja bez golfisty:
źródło
Java 8,
140131 bajtówWyjaśnienie:
Wypróbuj online.
źródło
J , 11 bajtów
Anonimowa ukryta funkcja prefiksu.
Wypróbuj online!
|:
transponować@(…)
wynik:,
argument, po którym następuje|.
odwrotnie^:2
i wszystko to zrobiono dwa razyźródło
SNOBOL4 (CSNOBOL4) ,
119113 bajtówWypróbuj online!
Pobiera dane wejściowe jako ciągi znaków na STDIN, bez spacji. Działa to tylko dlatego,
1-9
że w przeciwnym razie cyfry są i mogłyby zawieść.źródło
REVERSE
; o ile wiem, oryginalna obsługiwana była również arytmetyka liczb całkowitych.C (gcc) ,
114111 bajtówWypróbuj online!
C (gcc) , 109 bajtów (nadużywanie łatwości parsowania)
Wypróbuj online!
źródło
for(i=h+h;i-->0;puts(""))for(j=w+w;j-->0;)
printf("%d"
dodatkowego bajtu -1.Węgiel drzewny , 5 bajtów
Wypróbuj online!
Dzięki tylko ASCII dla lepszego formatu wejściowego.
źródło
[]
nie robi dokładnie 2D).Dodaj ++ , 30 bajtów
Wypróbuj online!
Stopka po prostu przekształca zagnieżdżoną tablicę do formatu w pytaniu. Definiuje funkcję
f
, która oczekuje macierzy (tablicy zagnieżdżonej) jako argumentu.źródło
Julia 0.6 ,
5549 bajtówWypróbuj online!
~(i)
to funkcja służąca do tworzenia wycinka odi
do1
.Więc
~end
daje plasterekend:-1:1
!(x)
jest funkcją do przebudowania tablicy.źródło
V , 12 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło