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:
- Un ingrediente principal: Cada platillo debe tener un solo ingrediente principal.
- Un método de cocción: Cada platillo debe tener un solo método de cocción.
- 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.