In[]:=
FunctionToApplication[s[s[s[s]][k[s[s[s]][s]][s]]][k[s[s[s]][s]][s][s[s[s]][k[s[s[s]][s]][s]]]]]
Out[]=
s(s(ss)(k(s(ss)s)s))(k(s(ss)s)s(s(ss)(k(s(ss)s)s)))
In[]:=
FunctionToApplication[a[b[c[d[e]]]]]
Out[]=
a(b(c(de)))
In[]:=
InputForm[%]
Out[]//InputForm=
a (b (c (d e)))
In[]:=
FunctionToList[a[b[c[d[e]]]]]/.Listf
Out[]=
f[a,f[b,f[c,f[d,e]]]]
In[]:=
FunctionToList[a[b][c][d][e]]/.Listf
Out[]=
f[f[f[f[a,b],c],d],e]
In[]:=
%33//.(f[x_,y:f[_,_]]f[x,p[y]])
Out[]=
f[a,p[f[b,p[f[c,p[f[d,e]]]]]]]
In[]:=
CombinatorString[expr_,dir:(Right|Left),char_]:=Enclose[Module[{f,p,r},r=ConfirmQuiet[<|Rightf[x:f[_,_],y_]f[p[x],y],Leftf[x_,y:f[_,_]]f[x,p[y]]|>[dir]];expr//.(h_?(!ListQ[#]&))[x_]f[h,x]//.r//.{p[x_]RowBox[{"(",x,")"}],f[x_,y_]RowBox[{x,char,y}]}]]
In[]:=
CombinatorString[a[b][c][d][e],Right,"⊙"]//DisplayForm
Out[]//DisplayForm=
(((a⊙b)⊙c)⊙d)⊙e
In[]:=
CombinatorString[s[s[s[s]][k[s[s[s]][s]][s]]][k[s[s[s]][s]][s][s[s[s]][k[s[s[s]][s]][s]]]],Right,"@"]//DisplayForm
Out[]//DisplayForm=
(s@(s@s@s)@(k@(s@s@s)@s)@s)@((k@(s@s@s)@s)@s)@(s@s@s)@(k@(s@s@s)@s)@s
In[]:=
CombinatorString[s[s[s[s]][k[s[s[s]][s]][s]]][k[s[s[s]][s]][s][s[s[s]][k[s[s[s]][s]][s]]]],Right,""]//DisplayForm
Out[]//DisplayForm=
(s(sss)(k(sss)s)s)((k(sss)s)s)(sss)(k(sss)s)s
In[]:=
ToString[s[s[s[s]][k[s[s[s]][s]][s]]][k[s[s[s]][s]][s][s[s[s]][k[s[s[s]][s]][s]]]]]//StringLength
Out[]=
73
In[]:=
"(s@(s@s@s)@(k@(s@s@s)@s)@s)@((k@(s@s@s)@s)@s)@(s@s@s)@(k@(s@s@s)@s)@s"//StringLength
Out[]=
707
In[]:=
StringReplace[ToString[CombinatorString[s[s[s[s]][k[s[s[s]][s]][s]]][k[s[s[s]][s]][s][s[s[s]][k[s[s[s]][s]][s]]]],Right,""]//DisplayForm]," """]//StringLength
Out[]=
45
In[]:=
StringReplace[ToString[CombinatorString[s[s[s[s]][k[s[s[s]][s]][s]]][k[s[s[s]][s]][s][s[s[s]][k[s[s[s]][s]][s]]]],Right,"@"]//DisplayForm]," """]//StringLength
Out[]=
69
In[]:=
StringReplace[ToString[CombinatorString[s[s[s[s]][k[s[s[s]][s]][s]]][k[s[s[s]][s]][s][s[s[s]][k[s[s[s]][s]][s]]]],Right,"@"]//DisplayForm]," """]
Out[]=
(s@(s@s@s)@(k@(s@s@s)@s)@s)@((k@(s@s@s)@s)@s)@(s@s@s)@(k@(s@s@s)@s)@s
In[]:=
StringCount[%,"("]
Out[]=
10
In[]:=
StringCount[ToString[s[s[s[s]][k[s[s[s]][s]][s]]][k[s[s[s]][s]][s][s[s[s]][k[s[s[s]][s]][s]]]]],"["]
Out[]=
24
In[]:=
FunctionToApplication[s[s[s[s]][k[s[s[s]][s]][s]]][k[s[s[s]][s]][s][s[s[s]][k[s[s[s]][s]][s]]]]]
Out[]=
s(s(ss)(k(s(ss)s)s))(k(s(ss)s)s(s(ss)(k(s(ss)s)s)))
In[]:=
ToString[%]
Out[]=
s (s (s s) (k (s (s s) s) s)) (k (s (s s) s) s (s (s s) (k (s (s s) s) s)))
In[]:=
StringCount[%,"("]
Out[]=
13
In[]:=
CombinatorString[s[s[s[s]][k[s[s[s]][s]][s]]][k[s[s[s]][s]][s][s[s[s]][k[s[s[s]][s]][s]]]],Left,""]//DisplayForm
Out[]//DisplayForm=
s(s(ss)(k(s(ss)s)s))(k(s(ss)s)s(s(ss)(k(s(ss)s)s)))
In[]:=
CombinatorParenCount[expr_,dir:(Right|Left)]:=Enclose[Module[{f,p,r},r=ConfirmQuiet[<|Rightf[x:f[_,_],y_]f[p[x],y],Leftf[x_,y:f[_,_]]f[x,p[y]]|>[dir]];Count[expr//.(h_?(!ListQ[#]&))[x_]f[h,x]//.r,p,{0,Infinity},HeadsTrue]]]
In[]:=
CombinatorParenCount[s[s[s[s]][k[s[s[s]][s]][s]]][k[s[s[s]][s]][s][s[s[s]][k[s[s[s]][s]][s]]]],Left]
Out[]=
13
In[]:=
CombinatorParenCount[s[s[s[s]][k[s[s[s]][s]][s]]][k[s[s[s]][s]][s][s[s[s]][k[s[s[s]][s]][s]]]],Right]
Out[]=
10
In[]:=
Groupings[Table[s,4],Construct2]
Out[]=
{s[s][s][s],s[s[s][s]],s[s[s]][s],s[s[s[s]]],s[s][s[s]]}
In[]:=
CombinatorParenCount[#,Left]&/@Groupings[Table[s,4],Construct2]
Out[]=
{0,1,1,2,1}
In[]:=
CombinatorParenCount[#,Right]&/@Groupings[Table[s,4],Construct2]
Out[]=
{2,1,1,0,1}
In[]:=
CombinatorParenCount[#,Right]&/@Groupings[Table[s,6],Construct2]
Out[]=
{4,3,3,2,3,2,2,1,3,2,2,1,2,1,1,0,3,2,2,1,3,2,3,2,2,1,2,1,3,3,2,2,2,2,1,1,2,2,3,2,2,1}
In[]:=
CombinatorParenCount[#,Left]&/@Groupings[Table[s,6],Construct2]
Out[]=
{0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,1,2,1,2,2,3,2,3,1,1,2,2,2,2,3,3,2,2,1,2,2,3}
In[]:=
Counts[%]
Out[]=
01,110,220,310,41
In[]:=
CombinatorParenCount[#,Right]&/@Groupings[Table[s,6],Construct2]
Out[]=
{4,3,3,2,3,2,2,1,3,2,2,1,2,1,1,0,3,2,2,1,3,2,3,2,2,1,2,1,3,3,2,2,2,2,1,1,2,2,3,2,2,1}
In[]:=
Counts[%]
Out[]=
41,310,220,110,01
In[]:=
Table[KeySort[Counts[CombinatorParenCount[#,Left]&/@Groupings[Table[s,n],Construct2]]],{n,8}]
Out[]=
{,01,01,11,01,13,21,01,16,26,31,01,110,220,310,41,01,115,250,350,415,51,01,121,2105,3175,4105,521,61}
In[]:=
Table[Mean[CombinatorParenCount[#,Left]&/@Groupings[Table[s,n],Construct2]],{n,8}]
Out[]=
Mean[{}],0,,1,,2,,3
1
2
3
2
5
2
In[]:=
FactorInteger[01,121,2105,3175,4105,521,61]
Out[]=
0{{1,1}},1{{3,1},{7,1}},2{{3,1},{5,1},{7,1}},3{{5,2},{7,1}},4{{3,1},{5,1},{7,1}},5{{3,1},{7,1}},6{{1,1}}
In[]:=
Count[s[s[s[s]][k[s[s[s]][s]][s]]][k[s[s[s]][s]][s][s[s[s]][k[s[s[s]][s]][s]]]],_[_],{0,Infinity},HeadsTrue]
Out[]=
24
In[]:=
Count[s[s[s[s]][k[s[s[s]][s]][s]]][k[s[s[s]][s]][s][s[s[s]][k[s[s[s]][s]][s]]]],_[_][_],{0,Infinity},HeadsTrue]
Out[]=
10
Count[s[s[s[s]][k[s[s[s]][s]][s]]][k[s[s[s]][s]][s][s[s[s]][k[s[s[s]][s]][s]]]],_[_][_],{0,Infinity},HeadsTrue]
In[]:=
Count[s[s[s[s]][k[s[s[s]][s]][s]]][k[s[s[s]][s]][s][s[s[s]][k[s[s[s]][s]][s]]]],_[_[_]],{0,Infinity},HeadsTrue]
Out[]=
13
In[]:=
{LeafCount[#],Count[#,_[_][_],{0,Infinity},HeadsTrue],Count[#,_[_[_]],{0,Infinity},HeadsTrue]}&/@SKEvolveList[s[s][s][s[s]][s][s],30]
Out[]=
{{7,4,1},{8,3,3},{8,4,2},{11,4,5},{11,5,4},{11,5,4},{12,4,6},{17,7,8},{25,10,13},{33,13,18},{41,16,23},{50,19,29},{59,23,34},{87,35,50},{115,47,66},{149,61,86},{187,77,108},{215,88,125},{243,99,142},{272,110,160},{301,122,177},{389,158,229},{417,169,246},{426,173,251},{441,179,260},{450,183,265},{459,187,270},{468,191,275},{483,197,284},{492,201,289},{501,205,294}}
In[]:=
ListLinePlot[Transpose[%]]
Out[]=
Out[]//InputForm=
RGBColor[1, 1, 0]