我最近在stackoverflow上看到了这个问题。这是一个很好的问题,但是这个问题有一个致命的问题。他们正在寻求最佳方法。例如,最容易阅读,最惯用,最整洁等。他们不知道这并不重要吗?您应该问如何用最少的代码字节来做!
因为我怀疑这个问题会在stackoverflow上得到赞赏,所以我决定在这里提问。
挑战
您必须编写最短的程序或函数,以生成所有可能的方式来交织任意两个任意字符串。例如,如果两个字符串是'ab'
和'cd'
,则输出为:
['abcd', 'acbd', 'acdb', 'cabd', 'cadb', 'cdab']
如您所见,a
总是在b
,并且c
总是在d
。
IO可以采用任何合理的格式。使用此python代码进行验证以检查您的输出。(信用:JeD)
def shuffle(s,t):
if s=="":
return [t]
elif t=="":
return [s]
else:
leftShuffle=[s[0]+val for val in shuffle(s[1:],t)]
rightShuffle=[t[0]+val for val in shuffle(s,t[1:])]
leftShuffle.extend(rightShuffle)
return leftShuffle
样本IO:
shuffle("$", "1234"):
['$1234', '1$234', '12$34', '123$4', '1234$']
shuffle("az", "by"):
['azby', 'abzy', 'abyz', 'bazy', 'bayz', 'byaz']
shuffle("code", "golf"):
['codegolf', 'codgeolf', 'codgoelf', 'codgolef', 'codgolfe', 'cogdeolf', 'cogdoelf',
'cogdolef', 'cogdolfe', 'cogodelf', 'cogodlef', 'cogodlfe', 'cogoldef', 'cogoldfe',
'cogolfde', 'cgodeolf', 'cgodoelf', 'cgodolef', 'cgodolfe', 'cgoodelf', 'cgoodlef',
'cgoodlfe', 'cgooldef', 'cgooldfe', 'cgoolfde', 'cgoodelf', 'cgoodlef', 'cgoodlfe',
'cgooldef', 'cgooldfe', 'cgoolfde', 'cgolodef', 'cgolodfe', 'cgolofde', 'cgolfode',
'gcodeolf', 'gcodoelf', 'gcodolef', 'gcodolfe', 'gcoodelf', 'gcoodlef', 'gcoodlfe',
'gcooldef', 'gcooldfe', 'gcoolfde', 'gcoodelf', 'gcoodlef', 'gcoodlfe', 'gcooldef',
'gcooldfe', 'gcoolfde', 'gcolodef', 'gcolodfe', 'gcolofde', 'gcolfode', 'gocodelf',
'gocodlef', 'gocodlfe', 'gocoldef', 'gocoldfe', 'gocolfde', 'goclodef', 'goclodfe',
'goclofde', 'goclfode', 'golcodef', 'golcodfe', 'golcofde', 'golcfode', 'golfcode']
像往常一样,存在标准漏洞,而最短的答案以字节为单位。由于问题最初是关于python的,所以我希望看到最短的python答案。(不,pyth不是python)。但是,鼓励使用任何语言的答案。