Lassen Sie uns sagen, ich habe zwei Arten von ProduktenWas ist ein cleverer Weg, um alle möglichen Kombinationen dieser beiden Sätze von Gegenständen zu finden?
data Item1 = A | B | C
data Item2 = D | E | F
und zwei Sätze
set1 = [A,B,C]
set2 = [D,E,F]
Ich mag würde alle einzigartige Möglichkeiten der Anpassung der Produkte von zwei Sätze zu finden, sollte die Antwort (in informeller werden Notation):
AD,BE,CF
AD,BF,CE
AE,BD,CF
AE,BF,CD
AF,BD,CE
AF,BE,CD
Mit anderen Worten, würde ich eine Funktion wie die folgenden erreichen:
combine :: [Item1] -> [Item2] -> [[(Item1,Item2)]]
combine = undefined
Hinweis sollte jede Kombination ein Tupel sein, und jede Zeile in der Aufzählung Schema oben sollte eine Liste sein, zum Beispiel:
[(A,D),(B,E),(C,F)]
FYI: 'permutations' ist Teil des Moduls 'Data.List'. –
Die Einfügung der Sortierfunktion dient nur dazu, die Ausgabe in der von Ihnen beschriebenen Reihenfolge zu geben. Wenn Sie Ihre eigene "Permutations" -Funktion schreiben würden, würden Sie sie nicht brauchen und Sie könnten die "Kombinieren" -Funktion allgemeiner gestalten. – randomusername
@Rhymoid Vielen Dank, ich habe gerade bearbeitet, um diese Abhängigkeit zu zeigen. – randomusername