Tal vez tu puedas:
Primero haga varias bases de datos de todos los costos de los componentes:
CPUDatabase:
- ¿Cuáles son las ventajas y desventajas de usar cookies frente a sesiones?
- Cómo no sentirte como un fracaso cuando fuiste a una de las mejores escuelas y obtuviste una de las mejores pasantías, solo para ser un mal desarrollador al final
- Cómo usar Handlebars.js con Ruby on Rails
- ¿Cuál es el servicio web más innovador para crear marcos de alambre?
- ¿Hay algún punto en aprender HTML y JavaScript cuando WordPress puede hacer lo que ya hace?
CPU | costo
CPU1 | c1
CPU2 | c2
…
MonitorDatabse:
Monitor | costo
Monitor1 | m1
Monitor2 | m2
…
…
Luego, debido a que el cliente puede requerir una compilación de computadora que tenga una mejor CPU, o tal vez un mejor monitor, necesitamos hacer varios patrones de plan (porcentaje de precio del componente del presupuesto).
Dado un presupuesto de entrada X, hay:
- Patrón 1: CPU (a1% de X), Monitor (b1% de X) …
- Patrón 2: CPU (a2% de X), Monitor (b2% de X) …
- Patrón 3: CPU (a3% de X), Monitor (b3% de X) …
- …
Luego, dadas las bases de datos y el presupuesto X, use la fuerza bruta para verificar los patrones necesarios,
por ejemplo, patrón 1:
CPU-maximum-budget = a1% * X;
Monitor-máximo-presupuesto = b1% * X;
…
Luego, dado el presupuesto máximo de cada componente, recorra la base de datos respectiva del componente, inserte los componentes, que tienen un precio inferior al presupuesto máximo del componente, en una lista respectiva:
lista de CPU esperadas:
Para cada CPU en CPUDatabase:
if (CPU.price <= CPU-maximum-budget) {
empuje la CPU a la lista de CPU esperadas;
}
lista de Monitores esperados:
foreach Monitor en MonitorDatabase:
if (Monitor.price <= Monitor-maximum-budget) {
empujar Monitor a la lista de Monitores esperados;
}
…
Luego debe hacer una lista de todas las combinaciones de componentes de hardware, digamos combinaciones-para-patrón1, y habrá un número de elemento de (lista de CPU esperadas) [math] * [/ math] element-number-of (lista de Monitores esperados) … muchos elementos de combinaciones para patrón1.
Pero como no todas las combinaciones están disponibles, debe crear una gran base de datos que contenga todas las listas de combinaciones disponibles (¿quizás <1000 combinaciones para una pequeña tienda de informática?), Luego, con esta base de datos de combinaciones disponibles, seleccione todas las combinaciones que existen tanto en las combinaciones-para-patrón1 como en la base de datos de combinaciones disponibles, luego elija la que tenga el valor más alto en estas combinaciones (para su propio beneficio).
El trabajo arduo aquí podría ser cómo hacer una base de datos de combinaciones disponibles, en este caso puede codificar todas las combinaciones disponibles en su tienda, o tal vez si según su experiencia tiene un mejor algoritmo para verificar y elegir los componentes disponibles. para hacer combinaciones de las primeras bases de datos que hicimos, luego bricolaje en este caso.