Gần đây tôi đã thấy câu hỏi này trên stackoverflow. Đó là một câu hỏi hay, nhưng có một vấn đề nghiêm trọng với câu hỏi. Họ đang yêu cầu cách tốt nhất để làm điều đó. Ví dụ, dễ đọc nhất, thành ngữ nhất, gọn gàng nhất v.v ... Họ không biết đó không phải là vấn đề? Bạn phải hỏi về cách thực hiện với ít byte mã nhất!
Vì tôi nghi ngờ câu hỏi đó sẽ được đánh giá cao trên stackoverflow, tôi quyết định hỏi nó ở đây.
Các thách thức
Bạn phải viết chương trình hoặc hàm ngắn nhất có thể tạo ra tất cả các cách có thể để xen kẽ bất kỳ hai chuỗi tùy ý. Ví dụ: nếu hai chuỗi là 'ab'
và 'cd'
, đầu ra là:
['abcd', 'acbd', 'acdb', 'cabd', 'cadb', 'cdab']
Như bạn có thể thấy, a
luôn luôn là trước b
và c
luôn luôn là trước d
.
IO có thể ở bất kỳ định dạng hợp lý. Sử dụng mã python này để xác minh để kiểm tra đầu ra của bạn. (tín dụng: 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
Mẫu 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']
Như thường lệ, các sơ hở tiêu chuẩn được áp dụng và câu trả lời ngắn nhất tính theo byte sẽ thắng. Vì câu hỏi ban đầu là về con trăn, tôi rất muốn xem câu trả lời ngắn nhất về con trăn. (Và không, pyth không phải là trăn). Tuy nhiên, câu trả lời trong bất kỳ ngôn ngữ được khuyến khích.