mathematica中的特殊Tally函数

Qia*_* Li 0 wolfram-mathematica

我想知道如何编写一个特殊的Tally函数,它将以下列表{{{1,0},{2,1,3}},{{1,1},{0,1,1}},{{2,1,2},{3,2}},{{1,0},{2,1}}}视为:

  1. 只要尺寸匹配,它就是等价的.例如,{{1,0},{2,1,3}}并且{{1,1},{0,1,1}}是等价的,但不是{{1,0},{2,1}}.
  2. 订购也没关系.例如,{{1,0},{2,1,3}}并且{{2,1,2},{3,2}}是等价的.

级别1列表的元素可以是艺术嵌套的.我怎么写这样的功能?

非常感谢.

Dan*_*lau 7

(1)用0替换所有整数.(2)在第一级排序.这为列表中的每个类提供了唯一的代表.

 ll2 = Map[Sort, ll /. aa_Integer -> 0]
Run Code Online (Sandbox Code Playgroud)

Out [9] = {{{0,0},{0,0,0}},{{0,0},{0,0,0}},{{0,0},{0,0, 0}},{{0,0},{0,0}}}

Tally[ll2]
Run Code Online (Sandbox Code Playgroud)

Out [10] = {{{{0,0},{0,0,0}},3},{{{0,0},{0,0}},1}}

Daniel Lichtblau Wolfram Research