Tornado matrycowe jest jak każde inne tornado: składa się z rzeczy obracających się wokół środka. W tym przypadku elementy macierzy zamiast powietrza.
Oto przykład tornada matrycowego:
Najpierw zaczynamy od podzielenia macierzy na kwadratowe pierścienie, każda sekcja składa się z elementów, które są dalej od granicy o tę samą odległość. Sekcje te zostaną obrócone zgodnie z ruchem wskazówek zegara wokół środka. W prawdziwych tornadach nasilenie zwiększa się w kierunku środka, podobnie jak krok rotacji w tornado matrycowym: najbardziej zewnętrzna sekcja (czerwona) jest obracana o 1 stopień, kolejna (żółta) jest obracana o 2, i tak na. Krok obrotu to obrót o 90 ° wokół środka.
Zadanie:
Twoim zadaniem, jeśli je zaakceptujesz, jest napisanie funkcji lub programu, który przyjmuje jako dane wejściowe macierz kwadratową, stosuje do niej efekt tornado, a następnie wypisuje wynikową macierz.
Wkład:
Dane wejściowe powinny być kwadratową macierzą rzędu n
gdzie n >= 1
. Nie należy zakładać, że elementy macierzy mogą być czymkolwiek.
Wydajność:
Matryca kwadratowa tego samego rzędu, która byłaby wynikiem zastosowania efektu tronado do matrycy wejściowej.
Przykłady:
Macierz porządku n = 1
:
[['Hello']] ===> [['Hello']]
Macierz porządku n = 2
:
[[1 , 2], ===> [[5 , 1],
[5 , 0]] [0 , 2]]
Macierz porządku n = 5
:
[[A , B , C , D , E], [[+ , 6 , 1 , F , A],
[F , G , H , I , J], [- , 9 , 8 , 7 , B],
[1 , 2 , 3 , 4 , 5], ===> [/ , 4 , 3 , 2 , C],
[6 , 7 , 8 , 9 , 0], [* , I , H , G , D],
[+ , - , / , * , %]] [% , 0 , 5 , J , E]]
;)