#50 👨‍🍳 Combinaciones Culinarias | Retos de JavaScript

👨‍🍳 Combinaciones Culinarias

Dada una lista de ingredientes y sus posibles métodos de cocción, crea un algoritmo que genere todas las combinaciones posibles de platillos, donde cada platillo contiene exactamente un ingrediente principal y un método de cocción. Además, algunos ingredientes podrían tener restricciones sobre con qué otros ingredientes pueden ser combinados. ¡Es hora de poner a prueba tus habilidades culinarias con código!

Completado por 4 personas

¡Prepárate!

La dificultad de este desafío es alta, pero no imposible.

Descripción

Eres un chef que busca innovar en la cocina. Tienes a tu disposición una lista de ingredientes y diferentes métodos de cocción. Tu objetivo es crear un algoritmo que genere todas las combinaciones posibles de platillos, considerando ciertas restricciones:

  1. Un ingrediente principal: Cada platillo debe tener un solo ingrediente principal.
  2. Un método de cocción: Cada platillo debe tener un solo método de cocción.
  3. Restricciones de ingredientes: Algunos ingredientes pueden tener restricciones sobre con qué otros ingredientes pueden o no ser combinados.

Formato de Entrada

Recibirás dos parámetros:

  • ingredientes: Un array de objetos. Cada objeto representa un ingrediente y tiene el siguiente formato:
    • nombre: Nombre del ingrediente (string).
    • restricciones: Un array de strings con los nombres de los ingredientes con los que NO se puede combinar este ingrediente. Puede estar vacío si no hay restricciones.
  • metodosCoccion: Un array de strings, donde cada string es un método de cocción.

Formato de Salida

Tu función debe retornar un array de strings. Cada string representa un platillo válido en el formato ‘Ingrediente principal - Método de cocción’.

Ejemplo

ingredientes = [
  { nombre: 'Pollo', restricciones: ['Pescado'] },
  { nombre: 'Carne', restricciones: [] },
  { nombre: 'Pescado', restricciones: ['Carne'] },
];

metodosCoccion = ['Horneado', 'Frito', 'Asado'];

generarCombinaciones(ingredientes, metodosCoccion);
// Resultado esperado:
// [
//   'Pollo - Horneado',
//   'Pollo - Frito',
//   'Pollo - Asado',
//   'Carne - Horneado',
//   'Carne - Frito',
//   'Carne - Asado',
//   'Pescado - Horneado',
//   'Pescado - Frito',
//   'Pescado - Asado'
// ]

Consejos

  • Considera utilizar estructuras de datos como conjuntos o mapas para manejar las restricciones de combinación de ingredientes.
  • Puedes utilizar recursión o iteración para generar las combinaciones.
LibreCounter - Privacy-friendly web analytics