Пытаюсь реализовать вывод 4-х значных значений имея набор символов : $a = array('1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
Так как тут 36 символов, а знаков 4, то комбинаций должно выйти 1679616 (36^4 степени) Мне нужно в таком формате: 1111 1112 1113 .... 111z, далее, после 111z идет: 1121 1122 1123 .... 112z и т.д. Как написать подобный функционал? Спасибо!
Можно сделать свою реализацию счётчика с переносом: символ в последнем разряде заменяется на последующий, пока это возможно. Если символ 'z' (или индекс 35), то он сбрасывается в '1' (или индекс 0) и инкрементируется второй справа символ (если возможно, иначе сбрасываем разряд и идём дальше и т.д.).
Можно и просто сделать цикл от 0 до 1679615 и представлять счётчик цикла в 36-разрядной системе счисления.
Нууууу.... Как вариант, а там может быть кто-то и годнее предложит. Оптимизацией займетесь сами если она вам нужна.
function gen_comb(&$last_key, &$alphabet = array(), $a = 0, $b = 0, $c = 0, $d = 0) {
$GEN = array($a,$b,$c,$d);
// RETURN
var_dump($alphabet[$GEN[0]].$alphabet[$GEN[1]].$alphabet[$GEN[2]].$alphabet[$GEN[3]]);
// NEW
$GEN[3]++;
for ($i=3; $i >= 1; $i--) {
if ($GEN[$i] > $last_key) {
$GEN[$i] = 0;
$GEN[$i-1]++;
}
}
// REPEAT?
if ($GEN[0] > $last_key) {
return;
}else{
gen_comb($last_key, $alphabet, $GEN[0], $GEN[1], $GEN[2], $GEN[3]);
}
}
$array = array(1,2,3,4,5,6);
end($array);
gen_comb(key($array), $array);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Имеется массив полей формы, где каждое поле представлено в виде уникального подмассива:
Поставил CMake (без CLang), добавил в переменную path путь к cmake-39