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\\ 10 & 11 & 12\\ \end{array} \right] $$ wordt in Python de lijst
m = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]

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

Als in de opgave hieronder een 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

Schrijf een functie rand die één argument heeft:

De functie creëert een nieuwe lijst, bestaande uit de elementen op de "rand" van de matrix, te beginnen linksboven en dan met de klok mee de elementen van de eerste rij, de laatste kolom, de laatste rij (van rechts naar links) en de eerste kolom (van onder naar boven).

Elk element komt maar één keer voor, ook als de matrix maar één rij of één kolom zou hebben.

Voorbeeld

De matrix $$ \left[ \begin{array}{ccc} \mathbf{10} & \mathbf{8} & \mathbf{10} \\ \mathbf{4} & 0 & \mathbf{7} \\ \mathbf{6} & 5 & \mathbf{7} \\ \mathbf{10} & \mathbf{11} & \mathbf{12} \\ \end{array} \right] $$ heeft als rand de lijst: [10, 8, 10, 7, 7, 12, 11, 10, 6, 4]

De matrix $$ \left[ \begin{array}{ccc} 10 \\ 4 \\ 6 \\ 10 \\ \end{array} \right] $$ heeft als rand de lijst: [10, 4, 6, 10]

>>> >>> rand([[10, 8, 10], [4, 0, 7], [6, 5, 7], [10, 11, 12]])
[10, 8, 10, 7, 7, 12, 11, 10, 6, 4]
>>> >>> rand([[10, 8, 10]])
[10, 4, 6, 10]

Voetnoot: praktische toepasbaarheid

Toepassing: In simulaties van fysieke systemen (zoals warmteverspreiding of vloeistofstromen), kunnen grids of matrices worden gebruikt om gegevens te modelleren. De rand van een matrix wordt vaak afzonderlijk behandeld, omdat de rand de interactie met externe invloeden (zoals omgevingstemperatuur) vertegenwoordigt.