我正在處理列表中所有值的排列函數。標準ML排列
這是我到目前爲止有:
//MY ROTATE FUNCTION
fun rotate e [] = [[e]]
| rotate e (x::xs)= (e::x::xs)::(List.map (fn l => x::l) (rotate e xs));
//MY CURRENT PERMUTATION FUNCTION
fun perm [] = []
| perm (x::xs) = List.concat(List.map (fn l => (rotate x xs)) xs) @ perm xs;
OUTPUT:
- perm [1,2,3];
val it = [[1,2,3],[2,1,3],[2,3,1],[1,2,3],[2,1,3],[2,3,1],[2,3],[3,2]]
輸出應該是這樣的[1,2,3],[1,3,2] ,[2,1,3],[2,3,1],[3,1,2],[3,2,1]]。正如你所看到的,我在這裏錯過了一些東西。我相信問題是我的3沒有被傳遞爲旋轉3 [1,2]是我從代碼中丟失的兩個2元素列表在這裏出於某種原因。
如何糾正我的燙髮功能以正確顯示輸出?任何幫助無論大小會幫助我很多。
謝謝我會看看這個。 – user494948 2010-11-07 18:03:47