Skip to main content

Command Palette

Search for a command to run...

Retos diarios 01/01/2023

Updated
4 min read
Retos diarios 01/01/2023

Encontrar el carácter del medio

Te van a dar una palabra. Tu trabajo es devolver el carácter central de la palabra. Si la longitud de la palabra es impar, devuelve el carácter del medio. Si la longitud de la palabra es par, devuelve los 2 caracteres del medio.

Ejemplo

Kata.getMiddle("test") should return "es"

Kata.getMiddle("testing") should return "t"

Kata.getMiddle("middle") should return "dd"

Kata.getMiddle("A") should return "A"

Input

Una palabra (cadena) de longitud 0 < str < 1000 (En javascript puede obtener un poco más de 1000 en algunos casos de prueba debido a un error en los casos de prueba). No es necesario probar esto. Esto es sólo para decirle que usted no necesita preocuparse por su solución de tiempo de espera.

Output

El(los) carácter(es) central(es) de la palabra representado(s) como una cadena.

Mi solución

function getMiddle(s)
{
// Almaceno en una variable el índice del carácter del medio
 let middle = s.length / 2
// Si la palabra tiene una cantidad de caracteres pares devuelvo los dos 
// caracteres del medio, de lo contrario devuelvo el del medio.
  if (s.length % 2 == 0) {
    return (s.charAt(middle - 1) + (s.charAt(middle)))
  } else {
    return s.charAt(middle)
  }
}

Link del problema

Calculo del BMI

Escribe la función bmi que calcula el índice de masa corporal (bmi = peso / altura2).

si bmi <= 18.5 devuelve "Bajo peso"

si bmi <= 25.0 devuelve "Normal"

si bmi <= 30,0 devuelve "Sobrepeso".

si el bmi > 30 devuelve "Obeso".

Mi solución

function bmi(weight, height) {
// Almaceno en una variable la división entre el peso y la altura elevada al cuadrado
  let bodyMass = weight / (Math.pow(height, 2));
// Con un condicional evaluó el resultado de la variable y devuelvo su correspondiente clasificación
  if (bodyMass <= 18.5) {
    return "Underweight"
  } else if (bodyMass <= 25) {
    return "Normal"
  } else if(bodyMass <=30){
    return "Overweight"
  } else {
    return "Obese"
  }
}

Link del problema

Sobrevivira?

Un héroe se dirige al castillo para completar su misión. Sin embargo, le han dicho que el castillo está rodeado de un par de poderosos dragones! cada dragón necesita 2 balas para ser derrotado, nuestro héroe no tiene ni idea de cuántas balas debe llevar.. Suponiendo que va a coger un número determinado de balas y avanzar para luchar contra otro número determinado de dragones, ¿sobrevivirá?

Devuelve True si es así, False en caso contrario :)

Mi solución

function hero(bullets, dragons){
// En un condicional verifico si la cantidad de balas / 2 es menor que la cant. de dragones entonces el héroe morirá, de lo contrario sobrevivirá.
  if (Math.floor(bullets / 2) < dragons) {
    return false
  } else {
    return true
  }
}

Link del problema

La cola del supermercado

En el supermercado hay una cola de espera para las cajas automáticas. Tu tarea es escribir una función que calcule el tiempo total que necesitan todos los clientes para pasar por caja.

Entrada

  • Clientes: un array de enteros positivos que representan la cola. Cada entero representa a un cliente, y su valor es la cantidad de tiempo que necesitan para pasar por caja.

  • n: un entero positivo, el número de cajas.

Salida

La función debe devolver un entero, el tiempo total requerido.

Ejemplos

queueTime([5,3,4], 1)
// debe devolver 12
// porque cuando hay 1 caja, el tiempo total es sólo la suma de los tiempos

queueTime([10,2,3,3], 2)
// debe devolver 10
// porque aquí n=2 y las personas 2ª, 3ª y 4ª de la 
// cola termina antes de que la 1ª persona haya terminado.

queueTime([2,3,10], 2)
// debe devolver 12

Aclaración

  • Sólo hay UNA cola que sirve a muchas cajas, y

  • El orden de la cola NUNCA cambia, y

  • El primero de la cola (es decir, el primer elemento de la matriz/lista) pasa a una caja tan pronto como queda libre.

Mi solución

function queueTime(customers, n) {
  // Creo un array nuevo de longitud n (cajas) y lo lleno de 0s
  let arr = new Array(n).fill(0);  
  // En un bucle recorro el array de clientes ingresandolos por orden de llegada a las cajas
  for (let i = 0; i < customers.length; i++) {
    // Por cada ciclo inicializo la variable index que contiene el indice del valor mas bajo
    let index = arr.indexOf(Math.min(...arr));
    // en el arreglo que cree al inicio con el indice que tome en el ciclo le agrego en esa posicion al cliente i.
    arr[index] += customers[i];
  }
  // devuelvo el valor maximo del array, osea el tiempo de espera maximo de la cola.
  return Math.max(...arr);
}

Link del problema

Son las soluciones a las cual llegue, si alguien quiere compartir su propia solución siéntase libre de hacerlo :D