Gegeven twee rechthoekige, gehele tabellen $$\verb!a!$$ en $$\verb!b!$$, waarbij gegeven is dat elk element in $$\verb!a!$$ of $$\verb!b!$$ ofwel gelijk is aan $$+1$$ of gelijk is aan $$-1$$.

We definiëren de grootheid $$\verb!score(a,b)!$$ als het aantal elementen waar $$\verb!a!$$ en $$\verb!b!$$ verschillen. Het is de bedoeling om via een reeks bewerkingen op $$\verb!a!$$ de $$\verb!score(a,b)!$$ zo klein mogelijk te maken (m.a.w. $$\verb!a!$$ lijkt gaandeweg meer op $$\verb!b!$$, en wordt idealiter gelijk aan $$\verb!b!$$, waardoor de score 0 wordt). Hierbij zijn volgende bewerkingen toegelaten:

. Schrijf volgende functies: Je mag veronderstellen dat de argumenttabellen dezelfde dimensies hebben, uit minstens 1 rij en minstens 1 kolom bestaan, en enkel de waarden $$+1$$ en $$-1$$ bevatten.

Voorbeeld

a0 = np.array([[1, 1, 1], [-1, -1, -1], [1, -1, 1]])
a1 = np.array([[1, 1, 1], [-1, -1, -1], [-1, 1, -1]])
a2 = np.array([[1, 1, 1], [-1, -1, -1], [-1, 1, -1]])

b0 = np.array([[1, 1, 1], [1, 1, 1], [1, 1, 1]])
b1 = np.array([[1, 1, 1], [-1, -1, -1], [-1, 1, -1]])
b2 = np.array([[-1, -1, -1], [-1, -1, -1], [-1, -1, -1]])

score(a0,b0) = 4
score(a1,b1) = 0
score(a2,b2) = 4

volgende(a0,b0) = (np.array([[1, 1, 1], [1, 1, 1], [1, -1, 1]]), 1)
volgende(a1,b1) = (np.array([[1, 1, 1], [-1, -1, -1], [-1, 1, -1]], 0)
volgende(a2,b2) = (np.array([[-1, -1, -1], [-1, -1, -1], [-1, 1, -1]], 1)

losOp(a0,b0) = np.array([[1, 1, 1], [1, 1, 1], [1, -1, 1]])
losOp(a1,b1) = np.array([[1, 1, 1], [-1, -1, -1], [-1, 1, -1]])
losOp(a2,b2) = np.array([[-1, -1, -1], [-1, -1, -1], [-1, 1, -1]])