import { Resistor, SeriesResistor, ParallelResistor } from './modules/resistors.js'; window.Resistor = Resistor window.SeriesResistor = SeriesResistor window.ParallelResistor = ParallelResistor var resistorValues = [100, 1000] var N = 4 var maxValue = Math.max(...resistorValues) var numberline = new Array(N * maxValue + 1) numberline.fill(-1) var dp = new Map() // Initialize DP array and number line for (var i = 0; i < resistorValues.length; i++) { var value = resistorValues[i]; var resistor = new Resistor(value); dp.set(value, resistor); numberline[value] = resistor; } function bottomUpDP() { var addition = new Set() dp.forEach(e1 => { dp.forEach(e2 => { var r1 = new SeriesResistor(e1, e2); var r2 = new ParallelResistor(e1, e2); addition.add(r1); addition.add(r2); }); }); addition.forEach( e => { value = Math.round(e.getOhmage()); if (!dp.has(value)) { dp.set(value, e) numberline[value] = e; } }); } console.log("Starting Computation of DP array."); console.log(`Parameters: N = ${N}, values = ${resistorValues} `); for (i = 0; i < N; i++) bottomUpDP(); console.log("Finished computation of DP array"); window.numberline = numberline function missings() { var missing = new Set() for (i = 0; i < N * maxValue + 1; i++) { if (numberline[i] == -1) missing.add(i); } return missing; } console.log(`We found a composite resistor for every value in the range [1, ${N * maxValue + 1}] but for: ${[...missings()].join(",")}`)