Ho bisogno di generare permutazioni su una lista data. Sono riuscito a farlo in questo modoPermessi F #
let rec Permute (final, arr) =
if List.length arr > 0 then
for x in arr do
let n_final = final @ [x]
let rest = arr |> List.filter (fun a -> not (x = a))
Permute (n_final, rest)
else
printfn "%A" final
let DoPermute lst =
Permute ([], lst)
DoPermute lst
Ci sono ovvi problemi con questo codice. Ad esempio, gli elementi della lista devono essere unici. Inoltre, questo è più o meno lo stesso approccio che userei per generare un'implementazione diretta in qualsiasi altra lingua. C'è un modo migliore per implementarlo in F #.
Grazie!
correlati (identico?) Domanda: http://stackoverflow.com/questions/286427/calculating-permutations-in -f – Benjol