JSFiddle - React, Tailwind, and code Playground
by SwampFall
HTML
<table>
<tr>
<td>n-star</td>
<td><input type="number" id="star"/></td>
</tr>
<tr>
<td>
N
</td>
<td>
<input type="number" id="N"/>
</td>
</tr>
<tr>
<td>
COD
</td>
<td>
<input type="number" id="COD"/>
</td>
</tr>
<tr>
<td>Value</td>
<td><input type="number" id="vn"/></td>
</tr>
<tr>
<td colspan="2">
<button onclick="concod()">
Calculate CONcod
</button>
<button onclick="c()">
Calculate C
</button>
</td>
</tr>
</table>
<br>
<div id="output">
</div><br>
<div id="output2">
</div>
JavaScript
function concod(COD, printi, vn) {
let star = document.getElementById("star").value;
let N = document.getElementById("N").value;
let print = false;
if (COD === undefined) {
COD = document.getElementById("COD").value;
print = true;
}
let CONcod = 0;
let bcon = Math.min(N, 2 * (N - COD[COD.length - 1]));
for (let i = 0; i < star; i++) {
let v = Math.pow(2, i) * Math.max(0, bcon - 2 * COD[i]);
if (printi == i && COD[i] == vn) {
sum += v;
document.getElementById("output2").innerHTML += JSON.stringify(COD) + " - " + bcon + " - " + v + "<br>";
}
CONcod += v;
}
CONcod += bcon;
bcons += bcon;
if (print)
document.getElementById("output").innerHTML = CONcod;
return CONcod;
}
var sum = 0;
var bcons = 0;
function c() {
let star = document.getElementById("star").value;
let N = document.getElementById("N").value;
let print = document.getElementById("COD").value;
if (print == "") {
print = 0;
}
let vn = document.getElementById("vn").value;
if (vn == "") {
vn = 1;
}
sum = 0;
bcons = 0;
let result = 0;
let cod = [];
for (let i = 0; i < star; i++) {
cod.push(i + 1);
}
document.getElementById("output2").innerHTML = "";
let output = document.getElementById("output");
output.innerHTML = "";
let done = false;
while (!done) {
result += concod(cod, print, vn);
let index = star - 1;
while (index >= 0) {
cod[index]++;
for (let j = index; j < star - 1; j++) {
cod[j+1] = cod[j] + 1;
}
if (cod[index] < N - star + 1 + index) {
break;
}
index--;
}
if (cod[star - 1] >= N) {
done = true;
}
}
output.innerHTML += result + "<br>" + bcons + "<br>" + sum;
}