#массивы #алгоритм #php
Здравствуйте. Частично продвинулся в решении собственной задачи. Теперь есть смысл перефразировать вопрос: есть массив из трех элементов: $arr = array("a","b","c") как возможно генерировать из него уникальные дочерние массивы с двумя элементами в каждом? для заданного примера это: $arr_1 = array("a", "b"); $arr_2 = array("a", "c"); $arr_3 = array("b", "c"); а также как возможно сортировать массив с тремя элементами достигая всех шести возможных последовательностей элементов? для заданного примера это: $arr_1 = array("a","b","c"); * $arr_2 = array("a","c","b"); $arr_3 = array("b","a","c"); $arr_4 = array("b","c","a"); $arr_5 = array("c","a","b"); $arr_6 = array("c","b","a"); * *получить исходный и обратный ему массивы трудностей не составляет. вопрос в остальных четырех вариантах. Может кто-то сможет предложить в какую сторону копать? Нет необходимости писать листинг, мне лишь нужна помощь в составлении алгоритма.
Ответы
Ответ 1
Могу предложить решение для массива с тремя элементами: $arr = array( 'a', 'b', 'c' ); for ($i = 0; $i < 3; $i++) echo ($arr[$i] . ", "); for ($i = 0; $i < 3; $i++) { $c_arr = $arr; array_splice($c_arr, $i, 1); for ($j = 0; $j < 2; $j++) echo ($arr[$i] . $c_arr[$j] . ", "); } for ($i = 0; $i < 3; $i++) { $c_arr = $arr; array_splice($c_arr, $i, 1); echo ($arr[$i] . $c_arr[0] . $c_arr[1] . ","); echo ($arr[$i] . $c_arr[1] . $c_arr[0] . ","); } На самом деле все оказалось не так сложно. Например, мой метод заключается в простой перестановке элементов без модификации исходного массива.Ответ 2
Твой вариант. $arr_1 = array("a", "b"); $arr_2 = array("a", "c"); $arr_3 = array("b", "c"); Вариант мой. $arr[0] = array("a", "a"); $arr[0] = array("a", "b"); $arr[0] = array("a", "c"); $arr[0] = array("b", "a"); $arr[0] = array("b", "b"); $arr[0] = array("b", "c"); $arr[0] = array("c", "a"); $arr[0] = array("c", "b"); $arr[0] = array("c", "c"); Можно еще и так Смысл просто в этом какой? Обычно делают как. Берут массив значений. Делают из него другой массив всех элементов, допустим длиной 4 символа. Т.е. $arr = array("a", "b","c","d","e","r" и т.д.); 4 цикла for вложенных чтобы сделать массив. пример. a b c d . . . . . aaaa aaab aaac aaad . . . . zzzy zzzz и т.д. У тебя будет массив со всеми возможными значениями. Вопрос у тебя такой Генерация уникальных строк из элементов одного массива. Так зачем делать кучу массивов? сделай один и с ним потом что душе угодно.
Комментариев нет:
Отправить комментарий