मैंने हाल ही में स्टैकओवरफ्लो पर यह प्रश्न देखा । यह एक महान सवाल है, लेकिन सवाल के साथ एक घातक समस्या है। वे इसे करने का सबसे अच्छा तरीका पूछ रहे हैं। उदाहरण के लिए, पढ़ने में सबसे आसान, सबसे मुहावरेदार, साफ-सुथरा आदि। क्या वे नहीं जानते कि क्या मायने नहीं रखता? आप इसे कोड के सबसे कम बाइट्स के साथ कैसे करें, इसके बारे में पूछने वाले हैं!
चूंकि मुझे संदेह है कि स्टैकओवरफ्लो पर सवाल की सराहना की जाएगी, इसलिए मैंने इसे यहां पूछने का फैसला किया।
चुनौती
आपको सबसे कम संभव प्रोग्राम या फ़ंक्शन लिखना होगा जो किसी भी दो मनमाने तारों को इंटरलेव करने के लिए सभी संभव तरीके उत्पन्न करता है। उदाहरण के लिए, यदि दो तार हैं 'ab'
और 'cd'
, आउटपुट है:
['abcd', 'acbd', 'acdb', 'cabd', 'cadb', 'cdab']
जैसा कि आप देख सकते हैं, a
हमेशा से पहले है b
, और c
हमेशा से पहले है d
।
IO किसी भी उचित प्रारूप में हो सकता है। अपने आउटपुट की जांच करने के लिए इस अजगर कोड का उपयोग करें। (क्रेडिट: 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']
हमेशा की तरह, मानक कमियां लागू होती हैं, और बाइट्स में सबसे कम जवाब जीतता है। चूंकि सवाल मूल रूप से अजगर के बारे में था, इसलिए मुझे सबसे छोटा अजगर जवाब देखना अच्छा लगेगा। (और नहीं, अजगर अजगर नहीं है)। हालाँकि, किसी भी भाषा में उत्तरों को प्रोत्साहित किया जाता है।