Diciamo che ho due tipi di oggettiQual è un modo intelligente per trovare tutte le possibili combinazioni di questi due gruppi di articoli?
data Item1 = A | B | C
data Item2 = D | E | F
e due set
set1 = [A,B,C]
set2 = [D,E,F]
Mi piacerebbe trovare tutti i modi unici di corrispondere le voci di due set, la risposta dovrebbe essere (in informali notazione):
AD,BE,CF
AD,BF,CE
AE,BD,CF
AE,BF,CD
AF,BD,CE
AF,BE,CD
In altre parole, vorrei qualche funzione che compiere la seguente:
combine :: [Item1] -> [Item2] -> [[(Item1,Item2)]]
combine = undefined
Nota ciascuna combinazione dovrebbe essere una tupla, e ogni riga nello schema di enumerazione sopra dovrebbe essere una lista, ad esempio:
[(A,D),(B,E),(C,F)]
proposito: 'permutations' è parte del modulo 'Data.List'. –
L'inclusione della funzione di ordinamento è solo per dare l'output nell'ordine che hai descritto. Se hai scritto la tua funzione 'permutations', non ne avresti avuto bisogno e potresti rendere la funzione' combine' più generale. – randomusername
@Rhymoid Grazie, ho appena modificato per mostrare questa dipendenza. – randomusername