xxxxxxxxxx
64
function setup() {
// createCanvas(400, 400);
noCanvas();
select("#calc").mouseClicked(getAssignPattern);
}
function draw() {
//background(220);
}
var studio_pattern = [];
var assign_pattern = [];
function getCandidateStudioCombination(A) {
var min = int(document.getElementById("min").value);
var max = int(document.getElementById("max").value);
var sum_studio = int(document.getElementById("sum_studio").value);
//# 終端条件 --- 10 重ループまで回したら処理して打ち切り
if (A.length == (max - min + 1)) {
let sum = 0;
A.forEach(a => {
sum += a;
});
if (sum == sum_studio) {
studio_pattern.push(A.concat());
}
return;
}
for (let i = 0; i <= int(max); i++) {
A.push(i)
getCandidateStudioCombination(A)
A.pop() //# これが結構ポイント
}
}
function getAssignPattern() {
assign_pattern = [];
var min = document.getElementById("min").value;
var max = document.getElementById("max").value;
var sum_studio = document.getElementById("sum_studio").value;
var sum_student = document.getElementById("sum_student").value;
// 合計が12になるスタジオ構成のすべての組み合わせを返す
getCandidateStudioCombination([]);
studio_pattern.forEach(r => {
let sum = 0;
var num = [];
for( let i = max; i >= min; i--){
num.push(int(i));
}
sum = 0;
for( let i = 0; i < r.length; i++ ){
sum += r[i]*num[i];
}
if( sum == sum_student ){
assign_pattern.push(r);
}
});
console.log(assign_pattern);
}