Problem
Jedes Neuron beginnt mit derselben Rechnung: Jede Eingabe wird mit ihrem Gewicht multipliziert, dann wird alles addiert. Das ist das Skalarprodukt zweier Vektoren:
a · b = a₁×b₁ + a₂×b₂ + … + aₙ×bₙ
Implementiere dot_product(a, b).
Eingabe
a, b: Zwei Zahlenlisten gleicher Länge.
Ausgabe
Gib das Skalarprodukt als Dezimalzahl zurück.
Einschränkungen
1 ≤ Länge von a = Länge von b ≤ 1.000
-1.000 ≤ jeder Wert ≤ 1.000
Beispiele
Eingabe:
a = [1.0, 2.0, 3.0]
b = [4.0, 5.0, 6.0]
Erwartete Ausgabe:
expected = 32.0
Eingabe:
std::vector<double> a = {1.0, 2.0, 3.0};
std::vector<double> b = {4.0, 5.0, 6.0};
Erwartete Ausgabe:
double expected = 32.0;
Eingabe:
double[] a = new double[] {1.0, 2.0, 3.0};
double[] b = new double[] {4.0, 5.0, 6.0};
Erwartete Ausgabe:
double expected = 32.0;
Erläuterung
1×4 + 2×5 + 3×6 = 4 + 10 + 18 = 32.
Eingabe:
a = [0.5, -1.5]
b = [2.0, 4.0]
Erwartete Ausgabe:
expected = -5.0
Eingabe:
std::vector<double> a = {0.5, -1.5};
std::vector<double> b = {2.0, 4.0};
Erwartete Ausgabe:
double expected = -5.0;
Eingabe:
double[] a = new double[] {0.5, -1.5};
double[] b = new double[] {2.0, 4.0};
Erwartete Ausgabe:
double expected = -5.0;
Erläuterung
0.5×2 + (-1.5)×4 = 1 - 6 = -5.
So gehst du vor
Versuch es zuerst allein und öffne dann einen Hinweis nach dem anderen.
Hinweis 1
Multipliziere passende Positionen aus den beiden Listen und fasse die Ergebnisse zu einer Summe zusammen.
Hinweis 2
Ein einziger Durchlauf reicht, weil jedes Paar unabhängig zum Endwert beiträgt.
Hinweis 3
Stelle sicher, dass die Listen gleich lang sind, und verwende für den Akkumulator einen Zahlentyp, der bei Bedarf Dezimalstellen erhält.
Erwartete Komplexität
Zeit O(n), zusätzlicher Speicher O(1)
Referenzen
Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.