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

We definiëren de grootheid score(a,b) als het aantal elementen waar a en b verschillen. Het is de bedoeling om via een reeks bewerkingen op a de score(a,b) zo klein mogelijk te maken (m.a.w. a lijkt gaandeweg meer op b, en wordt idealiter gelijk aan 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]])