Problème
Chaque neurone commence par le même calcul : multiplier chaque entrée par son poids, puis tout additionner. C'est le produit scalaire de deux vecteurs :
a · b = a₁×b₁ + a₂×b₂ + … + aₙ×bₙ
Implémentez dot_product(a, b).
Entrée
a, b : deux listes de nombres de même longueur.
Sortie
Renvoyez le produit scalaire sous forme de nombre décimal.
Contraintes
1 ≤ longueur de a = longueur de b ≤ 1 000
-1 000 ≤ chaque valeur ≤ 1 000
Exemples
Entrée :
a = [1.0, 2.0, 3.0]
b = [4.0, 5.0, 6.0]
Sortie attendue :
expected = 32.0
Entrée :
std::vector<double> a = {1.0, 2.0, 3.0};
std::vector<double> b = {4.0, 5.0, 6.0};
Sortie attendue :
double expected = 32.0;
Entrée :
double[] a = new double[] {1.0, 2.0, 3.0};
double[] b = new double[] {4.0, 5.0, 6.0};
Sortie attendue :
double expected = 32.0;
Explication
1×4 + 2×5 + 3×6 = 4 + 10 + 18 = 32.
Entrée :
a = [0.5, -1.5]
b = [2.0, 4.0]
Sortie attendue :
expected = -5.0
Entrée :
std::vector<double> a = {0.5, -1.5};
std::vector<double> b = {2.0, 4.0};
Sortie attendue :
double expected = -5.0;
Entrée :
double[] a = new double[] {0.5, -1.5};
double[] b = new double[] {2.0, 4.0};
Sortie attendue :
double expected = -5.0;
Explication
0.5×2 + (-1.5)×4 = 1 - 6 = -5.
Comment l'aborder
Essayez d'abord seul, puis ouvrez les indices un par un.
Indice 1
Multiplie les positions correspondantes des deux listes et combine les résultats en un total.
Indice 2
Un seul passage suffit, car chaque paire contribue indépendamment à la valeur finale.
Indice 3
Assure-toi que les listes ont la même longueur, et garde l’accumulateur dans un type numérique qui préserve les décimales si nécessaire.
Complexité attendue
temps O(n), espace supplémentaire O(1)
Références
Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.