Привет, ребята, я пытаюсь создать генератор систематических списков на Java, но у меня возникла небольшая ошибка. Наш пример - пицца.
Проблема: Предположим, у вас есть всего 6 начинок для приготовления пиццы. Сколько вариаций 5 пицц можно сделать?
Так, например:
[пепперони, бекон, ананас, лук, грибы, перец]
[Пепперони, бекон, ананас, лук, грибы, сыр]
и т.д ...
Во время разработки я практиковался с 3 возможными вариантами из 6, поскольку я знаю, что будет три полных комбинации, каждая из которых состоит из двух элементов, что позволит легко создавать мой многомерный массив в это время.
public class SystematicList {
static String options[] = {
"Pepperoni",
"Bacon",
"Cheese"
};
public static void main(String[] args) {
/**
* Generate a multi-dimensional array to represent the combinations of
* pizza toppings we can possibly have from the available <code>options</code>
*
*/
String[][] combos = new String[3][2];
/**
* Ideally what we would like to create.
* combos[0][0] = "Pepperoni";
* combos[0][1] = "Bacon";
* combos[1][0] = "Pepperoni";
* combos[1][1] = "Cheese";
* combos[2][0] = "Bacon";
* combos[2][1] = "Cheese";
*/
for (int pizzas = 0; pizzas < combos.length; pizzas++) {
for (int toppings = 0; toppings < combos[pizzas].length; toppings++) {
combos[pizzas][toppings] = options[0]; // <<< issue : element.
System.out.print(" " + combos[pizzas][toppings]);
}
System.out.println("");
}
/*
* Current Output :
* run:
* Pepperoni Bacon
* Pepperoni Bacon
* Pepperoni Bacon
* BUILD SUCCESSFUL (total time: 0 seconds)
*
* ^ this is obvious, as I currently do not know how I'll select an
* element from the array of topping options before/after a specified
* index [example: 0 which would than range 1 - 2 apposed to 0 - 2
* thus 'dropping' an optional element, making this much easier.
*
* Loop is virtually only doing the actions of :
* 0 : 1,2
* 1 : 1,2
* 2 : 1,2
*/
}
}
Я решил создать 2D-список для хранения значений.
int [# возможных комбинаций] [# возможных значений]
Мой текущий код предполагает, что мы уже знаем возможные комбинации (хотя мы, конечно, не знаем), и независимо от того, что мы всегда можем определить значения (сколько 5, 4, 3, 2 пицц может быть построено)
Как я могу выбрать элемент из параметров [], при этом гарантируя, что никакой другой массив уже не содержит тех элементов, которые вы пытаетесь вставить. Я бы попробовал Arrays.contains или Arrays.equals, однако я бы не знал, что вставлять для сравнения, комбо [pizzas-1]?
if (!Arrays.contains(combos[pizzas], combos[pizzas-1]) {
combos[pizzas][toppings] = options[?];
}