Powiedzmy mam dwa rodzaje elementówJaki jest sprytny sposób na znalezienie wszystkich możliwych kombinacji tych dwóch zestawów przedmiotów?
data Item1 = A | B | C
data Item2 = D | E | F
i dwa zestawy
set1 = [A,B,C]
set2 = [D,E,F]
Chciałbym, aby znaleźć wszystkie unikalne sposoby dopasowywania elementów z dwóch zestawów, odpowiedź powinna być (w nieformalny notacja):
AD,BE,CF
AD,BF,CE
AE,BD,CF
AE,BF,CD
AF,BD,CE
AF,BE,CD
innymi słowy, chciałbym jakąś funkcję, która wykonać następujące czynności:
combine :: [Item1] -> [Item2] -> [[(Item1,Item2)]]
combine = undefined
Uwaga każda kombinacja powinna być krotką, a każdy wiersz w systemie wyliczania powyżej powinna być lista, na przykład:
[(A,D),(B,E),(C,F)]
FYI: 'permutations' jest część modułu 'Data.List'. –
Włączenie funkcji sortowania polega na podaniu wyniku w podanej kolejności. Jeśli napisałeś własną funkcję "permutacji", to nie będziesz jej potrzebował i możesz uczynić funkcję "łączenia" bardziej ogólną. – randomusername
@Rhymoid Dziękuję, właśnie edytowałem, aby pokazać tę zależność. – randomusername