Een matrix $$\mathbf{A}$$ is rechthoekig, en bevat reële getallen. We willen bepalen of 1 of meerdere kolommen kunnen geschreven worden als som van twee andere kolommen. Het resultaat is een matrix met drie kolommen, waarbij per rij 3 kolomnummers staan. Noemen we deze waarden $$i$$, $$j$$ en $$k$$, dan betekent dit dat de $$k$$-de kolom van $$\mathbf{A}$$ gelijk is aan de som van de $$i$$-de kolom van $$\mathbf{A}$$ en de $$j$$-de kolom van $$\mathbf{A}$$. Om te vermijden dat we dubbele oplossingen zouden krijgen, eisen we dat $$i \lt j$$. Tevens moet gelden dat $$k \neq i$$ en $$k \neq j$$ (zodat per rij van het resultaat altijd drie verschillende getallen staan). Programmeer dit in de functie zoek_som() met als enig argument de matrix $$\mathbf{A}$$ (voorgesteld door een 2-dimensionale NumPy-tabel) en als resultaat de gevraagde matrix met 3 kolommen (opnieuw voorgesteld een 2-dimensionale NumPy-tabel).

Argumenten

Een NumPy-tabel gevuld met reële getallen.

Resultaat

Een NumPy-matrix met 3 kolommen, met inhoud zoals hierboven gedefineerd. Het aantal rijen van deze matrix hangt af van het gevonden aantal combinaties.

Voorbeeld

A = np.array([[  1.,   3.,  13.,  -5.,  -2.,  -5.,   8.,  -9.],
 [ -7.,  17.,   3.,   7.,   9.,   5.,  10.,  13.],
 [ -1., -27.,  -7., -10., -15., -12., -17.,  -5.],
 [ 10.,   4.,   0.,   2., -14.,   6.,   2.,  -1.]])
zoek_som(A) 
#[[2 3 6]
# [3 6 1]]