Wolfram mathematica mathematica中的一个特殊计数函数

Wolfram mathematica mathematica中的一个特殊计数函数,wolfram-mathematica,Wolfram Mathematica,我想知道如何编写一个特殊的计数函数,它将下列列表{code>{{{1,0}、{2,1,3}、{1,1}、{0,1,1}、{2,1,2}、{3,2}、{1,0}、{2,1}、{2,1}视为: 只要尺寸匹配,它就是等效的。例如,{{1,0}、{2,1,3}和{1,1}、{0,1,1}是等价的,但与{1,0}、{2,1}不是等价的 订购也不重要。例如,{{1,0}、{2,1,3}和{2,1,2}、{3,2}是等价的 级别1列表的元素可以艺术地嵌套。如何编写这样的函数 非常感谢。(1)用0替换所有整数。

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

  • 只要尺寸匹配,它就是等效的。例如,
    {{1,0}、{2,1,3}
    {1,1}、{0,1,1}
    是等价的,但与
    {1,0}、{2,1}
    不是等价的
  • 订购也不重要。例如,
    {{1,0}、{2,1,3}
    {2,1,2}、{3,2}
    是等价的
  • 级别
    1
    列表的元素可以艺术地嵌套。如何编写这样的函数

    非常感谢。

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

     ll2 = Map[Sort, ll /. aa_Integer -> 0]
    
    Out[9]={{{0,0},{0,0,0},{{0,0},{0,0,0},{{0,0},{0,0,0,0, 0},{0,0},{0,0}

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

    丹尼尔·利奇布劳
    Wolfram Research

    与@Daniel的答案非常相似,但每个类别保留一名成员:

    In[9]:= Tally[list, (Sort[Length /@ #] == Sort[Length /@ #2]) &]
    
    Out[9]= {{{{1, 0}, {2, 1, 3}}, 3}, {{{1, 0}, {2, 1}}, 1}}
    
    使用

    给出了与相同的东西,或者

    这就给了我们。或者,我个人的最爱

    SelectEquivalents[list, Dimensions, #&, {#1, Length@#2}&]
    

    {{{2},3}, {{2,2}, 1}}
    
    但是,这暴露了使用
    维度时的一个缺陷,即当子列表的DIM不同时,它不知道报告什么,因此如果我们将
    维度
    替换为
    Sort@Map[Length,#,{1,Infinity}]&
    ,我们可以开始处理任意维度。这给

    {{{2, 3}, 3}, {{2, 2}, 1}}
    
    因此,每个子列表的维度被揭示。这并没有排序低于第一维度,我不知道如何能立即修复它

    {{{2},3}, {{2,2}, 1}}
    
    {{{2, 3}, 3}, {{2, 2}, 1}}