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:
- Cuando un símbolo positivo (`+`) interactúa con otro positivo, permanece positivo.
- Cuando un símbolo negativo (`-`) interactúa con otro negativo, permanece negativo.
- Pero cuando un símbolo negativo interactúa con un símbolo positivo, se neutralizan y se muestran como el número `0`.
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:
- Las vocales son solo "aeiou", así que no cuentes la letra "y".
- La argumento de entrada siempre será un string.
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.
- La puntuación de ambos equipos tendrá un rango de 0-9.
- El árbitro puede decir la puntuación de diversas maneras, por ejemplo:
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:
- calado: Una estimación del peso total del barco basado en cuán bajo se encuentra en el agua
- tripulación: El número de miembros de la tripulación a bordo del barco.
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.
- Cada miembro de la tripulación suma 1.5 unidades al calado del barco.
- Si el calado sigue siendo más de 20 unidades después de contabilizar el peso de la tripulación, ¡entonces el barco vale la pena ser saqueado!
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;