Problema
Una neurona artificial multiplica cada entrada por un peso, suma un sesgo y pasa el resultado por una función de activación:
z = x₁×w₁ + x₂×w₂ + … + xₙ×wₙ + bias
salida = sigmoid(z) = 1 / (1 + e^(-z))
Implementa neuron_output(inputs, weights, bias).
Entrada
inputs: Los valores de entrada.
weights: Un peso por entrada (misma longitud que inputs).
bias: El sesgo de la neurona.
Salida
Devuelve la salida de la neurona, un número decimal entre 0 y 1.
Restricciones
1 ≤ longitud de inputs = longitud de weights ≤ 100
-10 ≤ cada entrada, peso y sesgo ≤ 10
Ejemplos
Entrada:
bias = 0.5
inputs = [1.0, 2.0, 3.0]
weights = [0.2, 0.4, 0.6]
Salida esperada:
expected = 0.964429
Entrada:
double bias = 0.5;
std::vector<double> inputs = {1.0, 2.0, 3.0};
std::vector<double> weights = {0.2, 0.4, 0.6};
Salida esperada:
double expected = 0.964429;
Entrada:
double bias = 0.5;
double[] inputs = new double[] {1.0, 2.0, 3.0};
double[] weights = new double[] {0.2, 0.4, 0.6};
Salida esperada:
double expected = 0.964429;
Explicación
z = 1×0.2 + 2×0.4 + 3×0.6 + 0.5 = 3.3, y sigmoid(3.3) ≈ 0.964429.
Entrada:
bias = 0.0
inputs = [0.5, -1.0]
weights = [2.0, 1.0]
Salida esperada:
expected = 0.5
Entrada:
double bias = 0.0;
std::vector<double> inputs = {0.5, -1.0};
std::vector<double> weights = {2.0, 1.0};
Salida esperada:
double expected = 0.5;
Entrada:
double bias = 0.0;
double[] inputs = new double[] {0.5, -1.0};
double[] weights = new double[] {2.0, 1.0};
Salida esperada:
double expected = 0.5;
Explicación
z = 0.5×2 + (-1)×1 + 0 = 0, y sigmoid(0) = 0.5: la neurona está exactamente indecisa.
Cómo abordarlo
Inténtalo primero por tu cuenta y luego abre las pistas una a una.
Pista 1
Esto es solo una suma ponderada de las entradas más un sesgo, seguida de una sigmoid.
Pista 2
Empareja cada entrada con su peso correspondiente y acumula los productos antes de añadir el sesgo.
Pista 3
Fíjate en que la salida final pase por sigmoid, no que se devuelva la suma cruda.
Complejidad esperada
tiempo O(n), espacio extra O(1)
Referencias
Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.