Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сделать генератор комбинаций? 
:(
    Опции темы
kolombo777
Дата 3.12.2008, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 14.9.2008

Репутация: нет
Всего: нет



Как сделать генератор комбинаций?
Есть такая наука - комбинаторика.
Есть строка: chars4generation = "as";
Есть число (тип int): generation_length = 2;
Строка chars4generation - это символы для генерации комбинаций.
Число generation_length - это длина генерируемой комбинации.
В этом примере должно быть так:
aa
as
sa
ss
Как сделать такой алгоритм?
PM MAIL   Вверх
Sunvas
Дата 4.12.2008, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 8
Всего: 89



Рекурсивно. Берешь сначала первую букву и спариваешь ее со всеми остальными. Потому вторую и т.д. При этом generation_length - это будет глубина рекурсии..


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Dima 2015
Дата 4.12.2008, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 16.3.2008
Где: SPb

Репутация: 2
Всего: 2



Sunvas, а написать могешь?
PM MAIL ICQ   Вверх
bars80080
Дата 4.12.2008, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



ну, Sunvas, ответил на вопрос "как?", а что до самого кода:

Код

<pre>
<?php
function combi($w, $len, $b = '') {
    if($len < 0) $len = 0;
    $sl = strlen($w);
    $nlen = $len - 1;
    for($i = 0; $i < $sl; $i++) {
        $s = substr($w, $i, 1);
        if($nlen > 0) { 
            $a = combi($w, $nlen, $b.$s); $c = count($a);
            for($j = 0; $j < $c; $j++) { $r[] = $a[$j]; }}
        else { $r[$i] = $b.$s; }}
    return $r;
}


$ch = 'abc';
$len = 2;

$a = combi($ch, $len);

var_dump($a);

?>
</pre>

PM MAIL WWW   Вверх
Dima 2015
Дата 4.12.2008, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 16.3.2008
Где: SPb

Репутация: 2
Всего: 2



Зверюги... я чет посидел вчера, и так с ходу и не придумалось :(

Наверно туповат... )))
PM MAIL ICQ   Вверх
Sunvas
Дата 4.12.2008, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 8
Всего: 89



Цитата(Dima 2015 @  4.12.2008,  14:22 Найти цитируемый пост)
Sunvas, а написать могешь?

http://forum.vingrad.ru/forum/topic-113874...y883003/30.html
Когда-то писал для делфи.. Возьми за основу smile


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Dima 2015
Дата 4.12.2008, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 16.3.2008
Где: SPb

Репутация: 2
Всего: 2



Sunvas, хы, пасиб smile Правда я искренне надеюсь что смогу сам осилить, я вроде как шарю... более-менее. Просто щас голова забита до ужаса, оперативки не хватает блин.. учеба, работа, еще вот взял на себя смелость свой проект вести smile
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0505 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.