Найти все возможные варианты цепочки букв - PullRequest
1 голос
/ 02 ноября 2011

Программист-новичок здесь, я больше всего знаком с Python, но также изучаю C и Java, так что любой из 3 подойдет.
У меня есть цепочка букв, скажем:

ABXDEYGH

Однако, скажите,

X может быть М и N.
Y может быть P и Q.

В этом примере я хотел бы, в основном, напечатать все возможные варианты этой цепочки букв.
Нравится:

ABMDEPGH
ABNDEPGH
ABMDEQGH
ABNDEQGH

Любая помощь будет оценена. Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 02 ноября 2011

Это сводится к простой проблеме перестановок. Что вас волнует, так это та часть текста, которая может измениться; переменные. Остальное можно игнорировать, пока вы не захотите его отобразить.

Таким образом, ваш вопрос можно сформулировать проще: каковы все возможные перестановки одного элемента из набора X и другого элемента из набора Y? Это известно как перекрестный продукт , иногда также просто называемый продукт .

Вот возможное решение Python:

import itertools

x = set(['M', 'N'])
y = set(['P', 'Q'])

for items in itertools.product(x, y)
    print 'AB{0}DE{1}GH'.format(*items)

Обратите внимание, что в команде print ''.format() используется обозначение "unpack arguments", описанное здесь .

1 голос
/ 02 ноября 2011

почему вы не пишете две петли. один для замены всех возможных символов на X и один для Y.

foreach(char c in charSet1){
   // replaces X
   foreach(char ch in charSet2){
     // replace Y 
   }

}
...