Как сгенерировать все возможности строки с токенами X и значениями Y для каждого токена - PullRequest
1 голос
/ 14 октября 2010

Итак, у меня есть шаблон строки с количеством X токенов в нем. Гипотетически это могло бы выглядеть так:

template = "render=@layer0@-@layer1@-@layer2@-@layer3@-@layer4@"

Жетоны, очевидно, принимают форму @tokenname@. В этом гипотетическом случае у него пять токенов. Каждый токен имеет различный набор возможных значений. Например:

token0Values = ['t0value1'];
token1Values = ['t1value1','t1value2'];
token2Values = ['t2value1','t2value2','t2value3'];
token3Values = ['t3value1','t3value2'];
token4Values = ['t4value1','t4value2','t4value3','t4value4'];

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

1 Ответ

2 голосов
/ 14 октября 2010

Я сделаю удар в Сорта php / AS

токены - это двумерный массив возможных значений

{ [0] = "яблоко", "банан", "груша" [1] = "морковь", "горох" [2] = "картофель", "сельдерей", "масло", "соус" }

function getPermutations(tokens){

       var perms = array();

       //exit condition : there's only one token; 
       //total permutations = values array
       //so just return it

       if (tokens.length == 1)
           return tokens[0];

       //otherwise  
       //strip 1st element of the array as your "prefix"   

       prefices= tokens.shift();

       //get the permuations of the children

       childPermutations = getPermutations(tokens);

       //loop through the possible values, or "prefices"

       foreach (prefices as prefix){

            //concatenate to each of the child permutations

            foreach(childPermutations as perm)
                perms[]=prefix + perm;
       }

       //return the glob
       return perms;
}

это может сработать, или что-то подобное

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...