[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Перемешать слова
kasichvadim
Помогите с таким делом. Есть строка допустим: "Бондаренко Николай Петрович";
Нужен массив, в котором слова данной строки будут чередоваться.
Для примера:
Бондаренко Николай Петрович
Бондаренко Петрович Николай
Николай Бондаренко Петрович
Николай Петрович Бондаренко
Петрович Николай Бондаренко
Петрович Бондаренко Николай

Только есть один момент, что строка может состоять не только из трех слов (может и два слова, а может и пять).

Помогите, а то мозг уже кипит, а рабочее решение не могу придумать sad.gif



Спустя 3 минуты, 53 секунды (22.02.2011 - 17:20) Evilsoul написал(а):
и три и пять и десять, главное что бы было чем разделить
$arr =  explode(' ', 'Бондаренко Николай Петрович');

ну а сортировать можно по разному, смотря что нужно

Спустя 8 минут, 4 секунды (22.02.2011 - 17:28) kasichvadim написал(а):
Ну как разбить эту строку в массив я знаю wink.gif . А как именно получить все возможные чередования слов этой строки?

Вот для строки "Бондаренко Николай Петрович" все возможные чередования представлены ниже:
Бондаренко Николай Петрович
Бондаренко Петрович Николай
Николай Бондаренко Петрович
Николай Петрович Бондаренко
Петрович Николай Бондаренко
Петрович Бондаренко Николай

Именно это мне нужно иметь на выходе.

Спустя 16 минут, 28 секунд (22.02.2011 - 17:45) Evilsoul написал(а):
тебе нужно именно то что ты написал или возможен вариант рандомом?

Спустя 13 минут, 47 секунд (22.02.2011 - 17:58) kasichvadim написал(а):
Мне не важно в какой последовательности. Главное все возможные варианты чередования слов.

Спустя 46 секунд (22.02.2011 - 17:59) Evilsoul написал(а):
$arr =  explode(' ', 'Бондаренко Николай Петрович');
$arr = shuffle($arr);

Спустя 1 час, 43 минуты, 11 секунд (22.02.2011 - 19:42) kasichvadim написал(а):
$arr =  explode(' ', 'Бондаренко Николай Петрович');
$arr = shuffle($arr);


Правильнее будет:

$arr = explode(' ', 'Бондаренко Николай Петрович');
shuffle($arr);

т.к. в вашем варианте в $arr попадет положительный или отрицательный результат работы функции.

Но если бы все было так просто.
Я же выше писал, что мне нужны все варианты чередования, а не один рандомный.
Предположим будем записывать результат shuffle в массив результатов проверяя на дубли. Но это, мне кажется, не совсем правильное решение. В примере только три слова. А их может быть больше.

Спустя 2 часа, 45 минут, 2 секунды (22.02.2011 - 22:27) Evilsoul написал(а):
Цитата
т.к. в вашем варианте в $arr попадет положительный или отрицательный результат работы функции.

Что значит положительный или отрицательный, ты что игровой автомат собрался сделать?
ну тогда извини, я тебе не помогу, теорию вероятности я плохо учил.

Спустя 9 месяцев, 10 дней, 21 час, 27 минут, 48 секунд (5.12.2011 - 18:55) Gradus написал(а):
Решил тему не создавать, тоже интересует ответ на задачу smile.gif
Так не хочется скрипт писать, может есть у кого готовый или может функция существует
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.