Geçenlerde stackoverflow'ta bu soruyu gördüm . Bu harika bir soru, ancak soruda ölümcül bir sorun var. Bunu yapmanın en iyi yolunu istiyorlar. Örneğin, okunması en kolay, en salak, en temiz vb. Önemli değil ki bilmiyorlar mı? En az baytlık kodla nasıl yapacağınızı sormanız gerekiyor!
Bu sorunun stackoverflow'ta beğenileceğinden şüphelendiğimden, burada sormaya karar verdim.
Meydan okuma
İki rastgele dizgiyi bir araya getirmek için mümkün olan tüm yolları oluşturan en kısa programı veya işlevi yazmalısınız. Örneğin, iki dize 'ab'
ve 'cd'
çıktı ise:
['abcd', 'acbd', 'acdb', 'cabd', 'cadb', 'cdab']
Gördüğünüz gibi a
, her zaman önce b
ve c
her zaman önce d
.
GÇ makul bir biçimde olabilir. Çıktınızı kontrol edip etmediğinizi doğrulamak için bu python kodunu kullanın. (kredi: 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
Örnek 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']
Her zaman olduğu gibi standart boşluklar uygulanır ve bayt cinsinden en kısa cevap kazanır. Asıl soru python ile ilgili olduğundan, en kısa python cevabını görmeyi çok isterim. (Ve hayır, pyth python değildir). Ancak, herhangi bir dilde cevaplar teşvik edilmektedir.