Camilo Torres

Funciones

Instrucciones

Completa las funciones del archivo `funciones.js` siguiendo las indicaciones a fin de que los test de la página test.html pasen exitosamente. Deja una copia de tu código en esta página.

Función `interactuarCadenas`

Descripción

Dadas dos cadenas de texto compuestas por los símbolos `+` y `-`, tu tarea es devolver una nueva cadena que muestre cómo interactúan las dos cadenas originales de la siguiente manera:

Requerimiento

Escribe una función `interactuarCadenas` que toma dos cadenas de igual longitud como argumentos y devuelve una nueva cadena de acuerdo con las reglas de interacción mencionadas.

Ejemplo


  const resultado = interactuarCadenas("+-+", "+--");
  console.log(resultado); // Devuelve "+-0"

Respuesta


  function interactuarCadenas(cadena1, cadena2) {
    let string = "";
    const char1 = cadena1.split("");
    const char2 = cadena2.split("");
    const lengthMin = Math.min(char1.length, char2.length);
  
  for(let i = 0; i < lengthMin; i++)  
    if(char1[i] === char2[i]){
      string += char1[i]
    }else{string += "0";}
    return string;
  }
  const resultado = interactuarCadenas("+-+","+--")
  console.log(resultado); //"+-0"

Función `generarApodo`

Descripción

Tu objetivo es escribir una función llamada `generarApodo` que tome un string `nombre` como argumento y devuelva los primeros 3 o 4 caracteres como un apodo.

Requerimiento

Si la tercera letra es una consonante, devuelve las primeras 3 letras.


  generarApodo("Roberto") // "Rob"
  generarApodo("Kimberly") // "Kim"
  generarApodo("Samuel") // "Sam"           

Si la tercera letra es una vocal, devuelve las primeras 4 letras.


  generarApodo("Jeannie") // "Jean"
  generarApodo("Douglas") // "Doug"
  generarApodo("Gregory") // "Greg"                   

Si el string tiene menos de 4 caracteres, lanza un Error con el mensaje "Nombre muy corto".

Ten cuenta que:

Respuesta


  function generarApodo(nombre) {
    if(nombre.length < 4){
      throw new Error("Nombre muy corto");
    }
  
    const vocales = ['a', 'e', 'i', 'o', 'u'];
  
    let nuevoApodo;
    if(vocales.includes(nombre[2])){
      nuevoApodo = 4;
    }else {
      nuevoApodo = 3;
    }
    const apodo = nombre.slice(0, nuevoApodo);
    return apodo;
  }
  generarApodo("Robert") // "Rob" 
  generarApodo("Kimberly") // "Kim" 
  generarApodo("Samuel") // "Sam"  
  generarApodo("Jeannie") // "Jean" 
  generarApodo("Douglas") // "Doug"
  generarApodo("Gregory") // "Greg"            

Función `obtenerMarcador`

Descripción

Trabajas en un estadio de fútbol de ligas menores y has decido implementar un sistema para automatizar el marcador del juego. Tienes un módulo de reconocimiento de voz que convierte lo que el árbitro dice en una cadena de texto. Tu reto actual es convertir ese texto en un par de números que representen el marcador actual.

Requerimiento

Escribe una función `obtenerMarcador` que recibe un texto y retorna un arreglo con dos números que representa el marcador del juego.


  obtenerMarcador("El marcador es cuatro cero") // [4, 0]
  obtenerMarcador("nuevo marcador: dos tres") // [2, 3]
  obtenerMarcador("dos dos") // [2, 2]
  obtenerMarcador("Arsenal acaba de recibir otro gol, dos cero") // [2, 0]

El valor de retorno de la función siempre debe ser un array de dos números. Si no hay números en el texto de entrada se asume que el marcador es 0 a 0.

Respuesta


  function obtenerMarcador(texto) {
  
    const rango = {
      "cero": 0, 
      "uno" : 1,
      "dos" : 2,
      "tres": 3,
      "cuatro": 4,
      "cinco": 5,
      "seis": 6,
      "siete": 7,
      "ocho": 8,
      "nueve": 9,
    }
    const arr = texto.split(" ");
    let marcador = [];
  
    for (let propiedad of arr){
      if(propiedad in rango){
        marcador.push(rango[propiedad]); 
      }
    }
    if(marcador.length === 0){
      marcador = [0,0];
    }
    return marcador;
  }
  
  obtenerMarcador("El marcador es cuatro cero") // [4, 0]
  obtenerMarcador("nuevo marcador: dos tres") // [2, 3]
  obtenerMarcador("dos dos") // [2, 2]
  obtenerMarcador("Arsenal acaba de recibir otro gol, dos cero") // [2, 0]

Clase `Barco`

Descripción

Eres el astuto líder de una ágil tripulación pirata, siempre en busca de valiosos tesoros. Como todo pirata versado en tecnología, planeas utilizar la Programación Orientada a Objetos (OOP) para crear un sistema que ayude a identificar barcos cargados con tesoro.

En estos tiempos modernos, la gente pesa bastante y esto suma al peso del barco. ¿Cómo puedes asegurarte de que el barco que eliges esté lleno de oro y no solo cargado con una tripulación pesada?

Requerimiento

Tu tarea es crear una clase llamada `Barco`. Esta clase debe tener un constructor con dos parámetros:

Adicionalmente, la clase debe tener un método llamado `valeLaPena`. Este método debe retornar `true` o `false` según si el barco vale la pena ser saqueado o no.


  const PerlaNegra = new Barco(32, 5);
  PerlaNegra.valeLaPena(); //deberia retornar true;
  
  const titanic = new Barco(15, 10);
  titanic.valeLaPena();//deberia retornar false;

Respuesta


  class Barco {
    constructor(calado, tripulacion){
      this.calado = calado;
      this.tripulacion = tripulacion;
    }
    valeLaPena() {
      const totalCalado = this.calado - (this.tripulacion * 1.5);
      return totalCalado > 20;
    }
  }
  
  const PerlaNegra = new Barco(32, 5);
  PerlaNegra.valeLaPena(); //deberia retornar true;
  
  const titanic = new Barco(15, 10);
  titanic.valeLaPena();//deberia retornar false;