58 lines
1.5 KiB
JavaScript
58 lines
1.5 KiB
JavaScript
import { Resistor, SeriesResistor, ParallelResistor } from './modules/resistors.js';
|
|
|
|
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");
|
|
|
|
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(",")}`)
|
|
|
|
numberline[420].draw() // Draw the Resistor diagram for 420 Ohm as SVG
|
|
|
|
console.log(numberline)
|