Escriba una función squareWave(arr) que tome la siguiente array : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 ], y comienza a reemplazar los números, uno por uno, con ceros , hasta llegar a un múltiplo de 5 . A partir de ese momento, comienza a reemplazar los números con 1, hasta llegar al siguiente múltiplo de 5.
Luego, desde ese punto en adelante, comience a reemplazar con 0 nuevamente , luego 1 nuevamente , y así sucesivamente hasta llegar al final de la matriz. Mi código no funciona ¿Alguien puede ayudarme?
let input = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]; function squareWave(arr) { let zeros = true; let output = []; for (let i = 0; i < arr.length; i++) { if (arr[i] % 5) { arr[i] = 0; } else if (arr[i] !== 5) { arr[i] = 1; } } console.log(arr) }La salida debe ser = [0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1]
No está realizando un seguimiento de si la entrada actual debe ser 0 o 1. Además, no está utilizando variables zeros y output
En lugar de un valor booleano, puede mantener un 0 o un 1 en los zeros de la variable y cambiar el valor cuando la mod de 5 sea igual a cero.
if (arr[i] % 5 === 0) { Luego, para cada iteración, escriba el valor de zeros
let input = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]; function squareWave(arr) { let zeros = 0; let output = []; for (let i = 0; i < arr.length; i++) { if (arr[i] % 5 === 0) { zeros = 1 - zeros } output[i] = zeros; } return output; } console.log(squareWave(input));O en resumen:
let input = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]; let res = input.map(i => Math.abs(Math.floor(i / 5) % 2)) console.log(res)Puede utilizar la función de map de Array. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
let control = 0; const list = input.map(value => { if (value % 5 === 0) { control = control === 0 ? 1 : 0; } return control; }); console.log(list);Como esta es claramente una pregunta de tarea, no le daré la respuesta, pero sugeriré sus próximos pasos. De hecho, casi tienes la idea de la respuesta, pero en realidad no la implementaste.
Supongo que la salida de su código actual se parece a [0, 0, 0, 0, 1, 0, 0, 0, 0, 1, ...]
Al comienzo de su código, tiene una variable booleana llamada zeros . ¿Para qué crees que sirve este valor booleano y por qué no lo has usado en tu bucle?
Entonces, su código actual genera 1 cuando el valor es un múltiplo de 5, pero luego se olvida inmediatamente después. ¿Cómo podrías arreglar eso?