Voor twee vectoren $$\vec{x}$$ en $$\vec{y}$$ in $$N$$ dimensies, met respectieve coördinaten $$(x_0, x_1, \ldots x_{N-1})$$ en $$(y_0, y_1, \ldots y_{N-1})$$ definieert men de Manhattan-afstand $$d_M(\vec{x},\vec{y})$$ (geïnspireerd op het dambord-achtige stratenpatroon van Manhattan) als:

$$ d_M(\vec{x},\vec{y})=\sum_{i=0}^{N-1} |x_i-y_i| $$

Schrijf een functie $$\verb!manhattan(a, b)!$$ die de hierboven gedefinieerde Manhattan-afstand als resultaat oplevert. De argumenten zijn NumPy-rijen die reële getallen bevatten. Indien de dimensies van de argumentrijen $$\verb!a!$$ en $$\verb!b!$$ niet gelijk zijn, wordt $$-1.0$$ als resultaat gegeven.

Argumenten

2 NumPy-rijen die vectoren voorstellen.

Resultaat

De Manhattan-afstand (reëel getal) tussen deze vectoren, of $$-1.0$$ indien de dimensies van deze vectoren verschillen.

Voorbeeld

 
manhattan(np.array([1.0, 2.0]), np.array([-1.0, -2.0])) = 6.0 
manhattan(np.array([1.0, 2.0]), np.array([1.0, 2.0])) = 0.0 
manhattan(np.array([1.0, 2.0, 3.0]), np.array([-1.0, -2.0])) = -1.0