首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >儿童基因型

儿童基因型
EN

Code Golf用户
提问于 2016-03-31 01:06:04
回答 1查看 532关注 0票数 7

挑战

每个人都喜欢遗传学,对吧?在这个挑战中,你将被给予两个父母的基因型。你必须找到每一个可能的基因型,一个孩子生产的父母。你必须考虑显性和隐性等位基因以及不完全显性和共显性。

为父母提供的一个例子可以是:

代码语言:javascript
复制
R'RxRr

父母一方(左侧)有一个不完全显性的R等位基因和一个显性的R等位基因。父母二人(右边)有一个显性R等位基因和一个隐性等位基因。

每个父级由x分隔,输入将不包含x等位基因。

一个不完全占优势的等位基因后面跟着一个撇号(')。共显性等位基因只是指多种不同类型的等位基因组合在一起(例如A和W)。

规则

  • 最短代码获胜(以字节为单位)。
  • 每种可能的基因型都必须用逗号从其他基因型中分离出来。
  • 表型不重要。
  • 任何字母都可以在输入中使用,除了x(它区分了父母)。
  • 重复基因型只能打印一次。
    • 重复包含相同情况和等位基因类型的完全相同的字母。如果你的答案中有WY和YW,它们被认为是重复的。

  • 在一个输入中将不超过三个不同的字母。
  • 输出中字母的顺序并不重要。
  • 答案可以是字符串或数组的形式。

示例

输入1(前面的例子):

代码语言:javascript
复制
R'RxRr

产出1:

代码语言:javascript
复制
R'R,R'r,RR,Rr

备用输出1(数组):

代码语言:javascript
复制
{R'R,R'r,RR,Rr}

投入2:

代码语言:javascript
复制
RWxRR

产出2:

代码语言:javascript
复制
RR,WR
//Or an array, whichever you want

投入3:

代码语言:javascript
复制
WYxY'y

产出3:

代码语言:javascript
复制
WY',Wy,YY',Yy
//Once again, an array is fine
EN

回答 1

Code Golf用户

发布于 2016-04-01 04:33:02

Python3.5-196字节:

代码语言:javascript
复制
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。我也希望这样可以。如果这些条件中有任何一个是问题,请告诉我,我会解决的。

票数 1
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/76661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档