Я новичок в коде, и у меня есть, как мне кажется, довольно сложная логика c головоломка, которую нужно выяснить для программы, которую я пишу.
Моя цель - уметь вкладывать кольца разных размеров друг в друге (представьте себе одну из тех русских матрешек). В настоящее время моя программа собирает пользовательские входные данные из таблицы входных данных (до 20 размеров) и собирает эти данные в массив объектов, отсортированных по порядку от наибольшего к наименьшему в зависимости от внешнего размера колец.
My объект пользовательских входов называется «входами» и создается настройкой для l oop следующим образом:
inputs[i] = {index: i, inside: id[i], outside: od[i], quantity: qty[i], sheet: qty[i], nested: 0, centers: qty[i]};
Объекты ввода затем сортируются в массив объектов, называемый «all_inputs» (я получил некоторая помощь от некоторых добрых людей здесь, чтобы помочь мне с этой частью также). До этого момента все отлично работало.
Так, например, если пользователь ввел следующие три элемента:
Элемент 1 - внутри: 30 дюймов, снаружи: 36 дюймов и количество: 10
Элемент 2 - внутри: 20 дюймов, снаружи: 24 дюйма и количество: 8
Элемент 3 - внутри: 40 дюймов, снаружи: 44 дюйма и количество: 11
Моя программа сортирует их по порядку от наибольшего к наименьшему, основываясь на внешнем виде: пункт 3, пункт 1, затем пункт 2.
Из этого я легко могу определить, что мои окончательные результаты состоят в том, что весь пункт 3 может содержать весь элемент 1 (с одним неиспользованным оставшимся центром), а элемент 1 может содержать весь элемент 2 (с двумя неиспользованными оставшимися центрами). Также было бы 8 оставшихся центров для элемента 2.
Моя задача состоит в том, чтобы поместить это в код logi c, который бы учитывал бесчисленные комбинации, которые пользователь мог бы ввести.
Мой первый мысль была примерно такой:
function nest() {
var i;
var x;
for (i = 0; i <= 19; i++) {
x = i + 1;
if (all_inputs[X].inside < all_inputs[i].outside && all_inputs[i].centers > 0) {
do {
all_inputs[x].nested++;
all_inputs[x].sheet--;
all_inputs[i].centers--;
}
while (all_inputs[x].sheet > 0 && all_inputs[i].centers > 0);
}
}
}
Однако это не дало никаких результатов, и я также не думаю, что оно будет повторяться так, как мне бы того хотелось. У кого-нибудь есть мысли о том, с чего я мог бы начать с этого ???