Я не уверен насчет правильной терминологии, но мне нужна программа, которая дает все уникальные комбинации для фиксированного количества опций с переменным количеством точек, например:
options: "a", "b", "c"
max spots: 3
output:
a
a a
a b
a c
a a a
a a b
a b b
a a c
a c c
a b c
b
b b
b c
b b b
b b c
b c c
c
c c
c c c
Я в настоящее время У меня есть немного кода, но я не знаю, как сделать его масштабируемым для большего количества мест. Обычно он помещает комбинацию в массив, а не печатает ее, и этот массив позже используется для других вычислений.
$options = array("a", "b", "c");
for ($x = 0; $x < 3; $x++) {
print "$options[$x]\n";
for ($y = $x; $y < 3; $y++) {
print "$options[$x] $options[$y]\n";
for ($z = $y; $z < 3; $z++) {
print "$options[$x] $options[$y] $options[$z]\n";
}
}
}
Другая моя несколько успешная попытка заключалась в помещении сгенерированной комбинации в массив, сортировке этого массива, превращении массива в строку и проверке, существует ли строка в массиве со всеми принятыми строками комбинации. Это кажется ужасно неэффективным, и я надеялся, что есть лучший способ. Я бы предпочел не использовать внешние функции, потому что я хочу стать лучше в PHP и циклах и тому подобное.