Ich habe diese Frage kürzlich beim Stackoverflow gesehen. Es ist eine großartige Frage, aber es gibt ein schwerwiegendes Problem mit der Frage. Sie fragen nach dem besten Weg, dies zu tun. ZB am einfachsten zu lesen, am idiomatischsten, am saubersten usw. Wissen sie nicht, dass es nicht darauf ankommt? Sie sollten sich fragen, wie Sie das mit den wenigsten Bytes Code machen sollen!
Da ich bezweifle, dass diese Frage beim Stackoverflow beantwortet wird, habe ich mich entschlossen, sie hier zu stellen.
Die Herausforderung
Sie müssen das kürzestmögliche Programm oder die kürzestmögliche Funktion schreiben, die alle möglichen Möglichkeiten zur Verschachtelung von zwei beliebigen Zeichenfolgen generiert. Wenn zum Beispiel die beiden Zeichenfolgen 'ab'
und sind 'cd'
, lautet die Ausgabe:
['abcd', 'acbd', 'acdb', 'cabd', 'cadb', 'cdab']
Wie Sie sehen, a
ist immer vor b
und c
ist immer vor d
.
IO kann in jedem vernünftigen Format vorliegen. Verwenden Sie diesen Python-Code, um Ihre Ausgabe zu überprüfen. (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
Beispiel 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']
Wie üblich gelten Standardlücken, und die kürzeste Antwort in Bytes gewinnt. Da es sich ursprünglich um Python handelte, würde ich gerne die kürzeste Python-Antwort sehen. (Und nein, Python ist nicht Python). Antworten in jeder Sprache sind jedoch erwünscht.