Ejercicio resuelto: semáforo con JavaScript

En este post veremos la solución a un ejercicio sencillo de JavaScript. Se trata de crear una función que regrese “amarillo”, “rojo”, o “verde” dependiendo del argumento que reciba indicando la luz encendida actualmente.

La función va a indicar cuál es la luz que debería encender de acuerdo a la que está encendida actualmente.

Si la luz es “rojo” entonces debe mostrar “verde”, si es “verde” debe mostrar “amarillo” y finalmente si es “amarillo” debe mostrar “rojo”.

Por cierto, este es un ejercicio de Codewars.

Semáforo con JavaScript

La función es sencilla y se puede resolver usando if. Veamos la definición de la función:

const actualizarSemaforo = (colorActual) => {
  if (colorActual === "amarillo") return "rojo";
  if (colorActual === "rojo") return "verde";
  if (colorActual === "verde") return "amarillo";
}

// Probar

const colores = [
  "amarillo", "rojo", "verde"
];

colores.forEach(color => {
  console.log(`Para ${color} la siguiente luz debe ser: ${actualizarSemaforo(color)}`)
});

Son 3 if que regresan el color dependiendo del actual.

Esta solución tiene alternativas; por ejemplo, usando el operador ternario o switch.

Otra versión usando hashmap

En estructura de datos un hashmap es un diccionario que tiene claves y valores. Al consultar una clave, regresa el valor asociado con esa clave.

Un hashmap o diccionario en JavaScript es un simple objeto. Como la luz actual cambia únicamente a un valor podemos definir un diccionario:

const diccionario = {
  verde: "amarillo",
  amarillo: "rojo",
  rojo: "verde",
};

Cada valor tiene su equivalente. Si accedemos a diccionario["amarillo"] devolverá "rojo" y lo mismo para otros valores, así que basta con regresar diccionario[valor] y nos ahorramos ifs.

Combinándolo con las funciones flecha podemos hacer una función más corta que queda así:

const actualizarSemaforo = colorActual => ({
  verde: "amarillo",
  amarillo: "rojo",
  rojo: "verde",
}[colorActual])
// Probar

const colores = [
  "amarillo", "rojo", "verde"
];

colores.forEach(color => {
  console.log(`Para ${color} la siguiente luz debe ser: ${actualizarSemaforo(color)}`)
});

Los hashmap sirven para muchas cosas más, y son extremadamente rápidos, pues su tiempo de acceso es constante y no necesitamos andar buscando la clave, eso sí, debemos programar de tal manera que se pueda saber la clave de lo que necesitamos.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *