2011-11-01 71 views
1

Newb程序员在这里,我最熟悉Python,但也学习C和Java,所以3中的任何一个都可以。
我所拥有的是一串字母,说:查找所有可能的字符串变体

ABXDEYGH

但是说,

X可以是M和N
Y是可能的是P和Q.

在这个例子中,我想要basic盟友打印这串字母的所有可能的变化。
像:

ABMDEPGH
ABNDEPGH
ABMDEQGH
ABNDEQGH

任何帮助,将不胜感激。在此先感谢

+0

[计算一系列的所有组合]的可能重复(http://stackoverflow.com/questions/759259/calculate-all-combinations-of-a-series) –

回答

2

这归结为一个简单的排列问题。你关心的是可以改变的文本部分;变量。剩下的可以被忽略,直到你想显示它。

所以你的问题可以更简单地说明:从集X和另一个项目集Y 1项目可能的所有可能的排列?这被称为交叉产品,有时也简称为product

这里是一个可能的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()命令使用 “解包参数” 符号描述here

1

为什么不写你的两个循环。一个用X代替所有可能的字符,一个用Y代替。

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

} 
相关问题