Een matrix kan weergegeven worden als een geneste lijst.

Voorbeeld

De matrix m = $$ \left[ \begin{array}{ccc} 1 & 2 & 3\\ 4 & 5 & 6\\ 7 & 8 & 9\\ \end{array} \right] $$ wordt in Python de lijst m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

Een geneste lijst is een representatie van een vierkante matrix als elke sublijst evenveel elementen telt als de hoofdlijst.

Als in de opgave hieronder een vierkante matrix gegeven wordt, mag je ervan uitgaan dat dit een geneste lijst is die daaraan voldoet. De lege lijst [] wordt als een correcte matrix beschouwd met 0 rijen en 0 kolommen.

Opgave

1. De functie roteer

Schrijf een functie roteer die één argument heeft:

De functie roteert de matrix een kwartslag naar rechts en retourneert een matrix van dezelfde dimensie.

Voorbeeld

De matrix $$ \left[ \begin{array}{ccc} 10 & 8 & 10\\ 4 & 0 & 7\\ 6 & 5 & 7\\ \end{array} \right] $$ wordt na rotatie: $$ \left[ \begin{array}{ccc} 6 & 4 & 10\\ 5 & 0 & 8\\ 7 & 7 & 10\\ \end{array} \right] $$

>>> >>> roteer([[10, 8, 10], [4, 0, 7], [6, 5, 7]])
[[6, 4, 10], [5, 0, 8], [7, 7, 10]]

2. De functie roteren

Schrijf een functie roteren die twee argumenten heeft:

  • m een matrix = een geneste lijst die de representatie is van een vierkante matrix zoals hierboven gedefinieerd
  • g aantal graden = een geheel veelvoud van 90

De functie roteert de matrix over g graden en retourneert een matrix van dezelfde dimensie.

Voorbeelden

1. De matrix $$ \left[ \begin{array}{ccc} 10 & 8 & 10\\ 4 & 0 & 7\\ 6 & 5 & 7\\ \end{array} \right] $$ wordt na rotatie over 90 graden $$ \left[ \begin{array}{ccc} 6 & 4 & 10\\ 5 & 0 & 8\\ 7 & 7 & 10\\ \end{array} \right] $$

2. De matrix $$ \left[ \begin{array}{ccc} 10 & 8 & 10\\ 4 & 0 & 7\\ 6 & 5 & 7\\ \end{array} \right] $$ wordt na rotatie over -90 graden $$ \left[ \begin{array}{ccc} 10 & 7 & 7\\ 8 & 0 & 5\\ 10 & 4 & 6\\ \end{array} \right] $$

>>> >>> roteren([[10, 8, 10], [4, 0, 7], [6, 5, 7]], 90)
[[6, 4, 10], [5, 0, 8], [7, 7, 10]]
>>> roteren([[36, 11], [17, 41]], 180)
[[41, 17], [11, 36]]
>>> roteren([[10, 8, 10], [4, 0, 7], [6, 5, 7]], -90)
[[[10, 7, 7], [8, 0, 5], [10, 4, 6]]

Voetnoot: praktische toepasbaarheid

Afbeelding roteren: Wanneer je een foto of afbeelding wilt draaien, zoals in fotobewerkingssoftware (bijvoorbeeld Photoshop), wordt de afbeelding vaak als een matrix van kleurwaarden (RGB) behandeld. Door de matrix te roteren, wordt de afbeelding gedraaid.