挑战
每个人都喜欢遗传学,对吧?在这个挑战中,你将被给予两个父母的基因型。你必须找到每一个可能的基因型,一个孩子生产的父母。你必须考虑显性和隐性等位基因以及不完全显性和共显性。
为父母提供的一个例子可以是:
R'RxRr父母一方(左侧)有一个不完全显性的R等位基因和一个显性的R等位基因。父母二人(右边)有一个显性R等位基因和一个隐性等位基因。
每个父级由x分隔,输入将不包含x等位基因。
一个不完全占优势的等位基因后面跟着一个撇号(')。共显性等位基因只是指多种不同类型的等位基因组合在一起(例如A和W)。
输入1(前面的例子):
R'RxRr产出1:
R'R,R'r,RR,Rr备用输出1(数组):
{R'R,R'r,RR,Rr}投入2:
RWxRR产出2:
RR,WR
//Or an array, whichever you want投入3:
WYxY'y产出3:
WY',Wy,YY',Yy
//Once again, an array is fine发布于 2016-04-01 04:33:02
def b(r):import itertools,re;r=[];[r.append(h)for h in itertools.permutations(re.sub("(?<=[a-zA-Z'])(?=[a-zA-Z])",' ',r.replace('x','')).split(' '),2)if h[::-1]not in r and h not in r];return r一个不错的班轮,使用一些正则表达式。
注意:在每个带有撇号的字母周围都是双引号,我希望这是可以的(例如,在输出中,R'将以"R'"的形式出现)。另外,对于最后一个测试用例,它返回[('W', "Y'"), ('W', 'y'), ('Y', 'W'), ('Y', "Y'"), ('Y', 'y'), ('y', "Y'")],而不是只返回WY',Wy,YY',Yy。我也希望这样可以。如果这些条件中有任何一个是问题,请告诉我,我会解决的。
https://codegolf.stackexchange.com/questions/76661
复制相似问题