Saya baru-baru ini melihat pertanyaan ini di stackoverflow. Ini pertanyaan yang bagus, tetapi ada satu masalah fatal dengan pertanyaan itu. Mereka meminta cara terbaik untuk melakukannya. Misalnya, paling mudah dibaca, paling idiomatis, paling rapi, dll. Tidakkah mereka tahu itu bukan masalah? Anda seharusnya bertanya tentang bagaimana melakukannya dengan byte kode paling sedikit!
Karena saya ragu pertanyaan itu akan dihargai di stackoverflow, saya memutuskan untuk menanyakannya di sini.
Tantangan
Anda harus menulis program atau fungsi sesingkat mungkin yang menghasilkan semua cara yang memungkinkan untuk menjalin hubungan dua string sembarang. Misalnya, jika dua string adalah 'ab'
dan 'cd'
, outputnya adalah:
['abcd', 'acbd', 'acdb', 'cabd', 'cadb', 'cdab']
Seperti yang Anda lihat, a
selalu sebelumnya b
, dan c
selalu sebelumnya d
.
IO dapat dalam format apa pun yang masuk akal. Gunakan kode python ini untuk memverifikasi untuk memeriksa output Anda. (kredit: 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
Sampel 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']
Seperti biasa, celah standar berlaku, dan jawaban terpendek dalam byte akan menang. Karena pertanyaannya awalnya tentang python, saya ingin melihat jawaban python terpendek. (Dan tidak, pyth bukan python). Namun, jawaban dalam bahasa apa pun dianjurkan.