ResistorJS/main.js
2020-11-18 17:37:13 +01:00

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)