En los últimos días, necesitaba completar una prueba de nombre de codificación que expuso el siguiente problema que necesitaba ser resuelto:
En este ejercicio, debes analizar registros de temperatura para encontrar el más cercano a cero. Temperaturas de muestra. Aquí, -1,7 es lo más cercano a 0. Implemente la función closestToZero
para devolver la temperatura más cercana a cero que pertenece a la matriz ts
.
- Si
ts
está vacío, devuelve 0 (cero). - Si dos números están tan cerca de cero, considere el número positivo como el más cercano a cero (por ejemplo, si
ts
contiene -5 y 5, devuelve 5).
- Las temperaturas siempre se expresan con números de punto flotante que van desde -273 a 5526.
ts
es siempre una matriz válida y nunca lo esnull
.
Solución
Según los datos expuestos, la siguiente implementación resuelve el problema:
/**
* De una colección de números dentro de una matriz, devuelve el valor más cercano a cero.
*/
function closestToZero(numbers) {
if(!numbers.length){
return 0;
}
let closest = 0;
for (let i = 0; i < numbers.length ; i++) {
if (closest === 0) {
closest = numbers[i];
} else if (numbers[i] > 0 && numbers[i] <= Math.abs(closest)) {
closest = numbers[i];
} else if (numbers[i] < 0 && - numbers[i] < Math.abs(closest)) {
closest = numbers[i];
}
}
return closest;
}
Puede probar el código con diferentes ejemplos propios:
let items = [7,-10, 13, 8, 4, -7.2,-12,-3.7,3.5,-9.6, 6.5,-1.7, -6.2,7];
// Result: -1.7
console.log("Result: " + closestToZero(items));
items = [5, 6, 7, 9 , 2, - 2];
// Result: 2
console.log("Result: " + closestToZero(items));
items = [];
// Result: 0
console.log("Result: " + closestToZero(items));
Alternativamente, una de las soluciones de la comunidad incluye también esta otra opción:
function closestToZero(numbers)
{
if (numbers.length === 0) return 0;
let closest = numbers[0];
for(let i = 0; i < numbers.length;i++){
let number = numbers[i];
let absNumber = Math.abs(number);
let absClosest = Math.abs(closest);
if (absNumber < absClosest)
{
closest = number;
}
else if (absNumber === absClosest && closest < 0)
{
closest = number;
}
}
return closest;
}
Que te diviertas ❤️!
Conviertete en un programador más sociable