Генерация всех комбинаций букв - PullRequest
2 голосов
/ 08 марта 2012

Я пытаюсь создать приложение, которое может шифровать вводимые буквы. Я нашел примеры кода, которые можно переставить:

abc в cba, acb и т. Д.

Я пытаюсь сделать то же, что и выше, но также могу выводить более короткие комбинации, используя только введенные буквы.

Таким образом, мое желаемое приложение сможет сортировать abc по a, bc, acb и т. Д.

Я понимаю, что для этого может потребоваться какой-то алгоритм, но я не смог найти ничего связанного в Интернете.

Спасибо!

Ответы [ 4 ]

2 голосов
/ 08 марта 2012

Вам необходимо использовать понятие «комбинации» в комбинаторике - оно сочетает перестановки с выбором подмножеств:

Алгоритм возврата всех комбинаций k элементов из n

0 голосов
/ 13 апреля 2013

Делайте это до тех пор, пока строка не перебирает все свои индексы. Строка с индексом, равным разыскиваемому номеру, по модулю числовой базы плюс код набора символов.

0 голосов
/ 08 марта 2012

Если вы знаете, как получить все комбинации всех доступных букв, просто добавьте пробел в список возможных символов и получите все комбинации, обрезая что-нибудь слева от пробела и включая пробел (и игнорируйте пустые регистры) ,

Например, для слова IF у вас есть «IF» и «FI». Если вы относитесь к пространству как можно более, у вас есть

' IF', ' FI', 'I F', 'F I', 'IF ', 'FI '

, который, обрезая все, что осталось, включая пространство, становится

'IF', 'FI', 'F', 'I', '', ''

Игнорирование пустых кейсов, это ваши возможные комбинации, включая короткие слова.

0 голосов
/ 08 марта 2012

Готовы ли вы сделать это в php?Если это так - функция

 array_rand ($array, $num);

будет отлично работать.Первым аргументом является рассматриваемый массив: a.сделать массив из AZ, второй аргумент - сколько «букв» или компонентов массива выбрать b.используйте:

 rand($min, $max);

, чтобы сгенерировать случайное число от 1 до 26 (символы в алфавите).с.Зацикливайте эту функцию столько раз, сколько захотите.

...