我正在处理列表中所有值的排列函数。标准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