Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Все возможные комбинации элементво массива [2]
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
tuareg
Отправлено: 27 Июля, 2012 - 09:19:36
Участник
Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010
Помог: 69 раз(а)
EuGen нет. Даже тестовый вариант в первом сообщении выдает только 2 результата.
EuGen
Отправлено: 27 Июля, 2012 - 09:22:49
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
tuareg
Это потому, что задача поставлена не совсем корректно. Не очень понятно, что с чем сравнивать и как в результат должны включаться изначальные массивы (а суда по приведенному примеру результата - должны), если, например, размерность каждого массива не совпадает с числом массивов. Если совпадает - то все просто, достаточно в createAssotiation добавить исходные аргументы членами результирующего массива. Но если нет - ясность теряется.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
tuareg
Отправлено: 27 Июля, 2012 - 09:26:40
Участник
Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010
Помог: 69 раз(а)
Да согласен. Я запустил свой код. У меня получилось
Покинул форум
Сообщений всего: 65
Дата рег-ции: Май 2012
Помог: 0 раз(а)
Что если создать для начала функцию которая перемешивает два массива.
А затем в исходный массив, который содержит минута0 и минута00 добавить 1 элемент - час0 и перемешать два массива (1-й содержит минута0 и минута00, а второй час0), а затем резльтат полученный записать снова в исходный массив и получим что-то типа того:
arrayRez (
1 => 'минута0+минута00
2 => 'минута0 + час0'
3 => минута00+час0');
Затем создать еще 1 массив, который содержит только час00 и по тому же принципу перемешать с массивом arrayRez и т.д.
Или вводить по 2 элемента...
P.S.: Извините что не в коде, что-то не тяну(
NoPaper
Отправлено: 28 Июля, 2012 - 21:53:12
Посетитель
Покинул форум
Сообщений всего: 315
Дата рег-ции: Янв. 2012 Откуда: Минск
Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010
Помог: 69 раз(а)
Все просто. Я умными словами говорить не умею, так что не обессудьте.
Сначала сформировали глобальный массив.
Начали его перебирать. // первый цикл
Каждый элемент массива, мы перебираем со всем массивом //второй цикл
Т.к мы знаем, что нам надо перебрать массив, т.о что получит все возможные комбинации, за исключением совпадения по индексам
Просто пример
1 2 3
4 5 6
Надо получить
123
156
213
246
321
345
423
456
513
546
612
645
Вот и пошли перебирать, смотрим чтобы не совпали индексы. Как раз 3 и 4 цикл.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.