2011-02-08 7 views
5

すべてのレベルの式を並べ替えるのに良い方法はありますか?例えば すべてのレベルの式を並べ替える

Map[Sort, {expr}, Depth[expr] - 1] 
次の式は、長方形の構造を持っているときに私が何をしたいんが、私はそれが非矩形の表現のために働くしたいだけでなく

、以下は真

sorted = deepSort[{{{1, 3, 8}, {3, 7, 6}, {10, 4, 9}, {3, 8, 10, 
     6}, {8, 2, 5, 10}, {8, 5, 10, 
     9}}, {{{1, 3, 8}, {3, 8, 10, 6}}, {{3, 7, 6}, {3, 8, 10, 
     6}}, {{10, 4, 9}, {8, 5, 10, 9}}, {{3, 8, 10, 6}, {8, 2, 5, 
     10}}, {{8, 2, 5, 10}, {8, 5, 10, 9}}}}]; 
checkSortedLevel[k_] := Map[OrderedQ, sorted, {k}]; 
And @@ Flatten[checkSortedLevel /@ Range[0, 2]] 

答えて

8

deepSort[expr_] := Map[Sort, expr, {0, -2}]を印刷する必要があります

これは、exprにリスト以外のヘッドが含まれていても機能することに注意してください。

3

リスト以外のヘッドを含む式があり、それらをソートしたくない場合は、これが便利な場合があります。

expr /. List :> Composition[Sort, List] 
+0

自己紹介:_壊れていないものを修正しないでください_ –

関連する問題