JSFiddle - React, Tailwind, and code Playground
HTML
<form>
Plage 1
min<input type="text" name="r1min" value="1"/>
max<input type="text" name="r1max" value="16"/>
<br/>
Plage 2
min<input type="text" name="r2min" value="2"/>
max<input type="text" name="r2max" value="17"/>
<br/>
Plage 3
min<input type="text" name="r3min" value="3"/>
max<input type="text" name="r3max" value="18"/>
<br/>
Plage 4
min<input type="text" name="r3min" value="4"/>
max<input type="text" name="r3max" value="19"/>
<br/>
Plage 5
min<input type="text" name="r3min" value="5"/>
max<input type="text" name="r3max" value="20"/>
<br/>
Plage 6
min<input type="text" name="r3min" value="1"/>
max<input type="text" name="r3max" value="4"/>
<br/>
Plage 7
min<input type="text" name="r3min" value="2"/>
max<input type="text" name="r3max" value="5"/>
<br/>
<input type="submit" value="go"/>
</form>
<hr/>
<div id="output"></div>
JavaScript
function getCombis(r1,r2,r3,r4,r5,r6,r7){
var combis = [];
for(var i = r1[0]; i<=r1[1];++i){
for(var j = Math.max(i+1, r2[0]); j<=r2[1]; ++j){
for(var k = Math.max(j+1, r3[0]); k<=r3[1]; ++k){
for(var l = Math.max(k+1, r4[0]); l<=r4[1]; ++l){
for(var m = Math.max(l+1, r5[0]); m<=r5[1]; ++m){
for(var n = Math.max(m+1, r6[0]); n<=r6[1]; ++n){
for(var o = Math.max(n+1, r7[0]); o<=r7[1]; ++o){
combis.push([i,j,k,l,m,n,o>9?String.fromCharCode(55+o):o].join(''))
}
}
}
}
}
}
}
return combis;
}
var f = document.getElementsByTagName('form')[0];
var outputNode = document.getElementById('output');
f.onsubmit = function(e){
try{
['r1','r2','r3','r4','r5','r6','r7'].forEach(x=>{
window[x] = [parseInt(this[x+'min'].value, 50), parseInt(this[x+'max'].value, 50)];
}, this)
var combis = getCombis(r1,r2,r3,r4,r5,r6,r7)
outputNode.innerHTML = combis.join('<br/>')+'<br/>total combis '+combis.length;
}catch(e){
console.log('e :' , e)
}
return false;
}