ClearAll[getHad]

getHad[n_,1]:=(StringPartition[First[#],1]/.{"+"->1,"-"->-1})&/@Take[Import["http://neilsloane.com/hadamard/had."<>ToString[n]<>".txt","Table"],n];

getHad[n_,num_,offset_:0]:=((StringPartition[First[#],1]/.{"+"->1,"-"->-1})&/@Take[Import["http://neilsloane.com/hadamard/had."<>ToString[n]<>"."<>ToString[#-offset]<>".txt","Table"],n])&/@Range[num];

frob[A_,B_]:=((Length[A])^2)-Tr[Transpose[A].B]

trips[hads_]:=Sort[{frob[#[[1]],#[[2]]],frob[#[[2]],#[[3]]],frob[#[[3]],#[[1]]]}]&/@Subsets[hads,{3}]

h12=getHad[12,1];

h16=getHad[16,5,1];

h20=getHad[20,3];

h24=getHad[24,60];

h28=getHad[28,487];

.

Tr[Transpose[h16[[1]]].h16[[1]]]

(16^2)

trips[h20]

t16=trips[h16];

t16

Histogram3D[{#[[1]],#[[3]]-#[[2]]}&/@t16]

t24=trips[h24];

Max[Flatten[t24]]

(24^2)

Max[#[[3]]-#[[2]]&/@t24]

Histogram3D[{#[[1]],#[[3]]-#[[2]]}&/@t24]

t28=trips[h28];

(24^2)

hists24=Import["~/doc/research/hadamard/triangles/hists_24.dat","Table"];

hists28=Import["~/doc/research/hadamard/triangles/hists_28.dat","Table"];

hists32=Import["~/doc/research/hadamard/triangles/hists_32.dat","Table"];

ListPlot3D[{{#1/(24^2),#2/(24^2),(24^4)#3/Total[hists24[[All,3]]]}&@@@N[hists24],{#1/(28^2),#2/(28^2),(28^4)#3/Total[hists28[[All,3]]]}&@@@N[hists28],{#1/(32^2),#2/(32^2),(32^4)#3/Total[hists32[[All,3]]]}&@@@N[hists32]},PlotRange->All,PlotLegends->{24,28,32}]

ListPlot3D[{{#1,#2,#3/Evaluate[Total[Flatten[hists28,1][[All,3]]]]}&@@@Select[Flatten[hists28,1],#[[3]]≠0&],Select[Flatten[hists24,1]/Total[Flatten[hists24,1][[All,3]]],#[[3]]≠0&]},PlotRange->All]

ListPlot3D[Flatten[hists28,1]]

(2^32)

UnitConvert[Quantity[13710027 (32^2)32,"Bits"],"GB"]//N

5975401

Binomial[13710027,3]/100000000//N

UnitConvert[Quantity[37.65, "Seconds"]/10000000 Binomial[13710027,3]/64,"Years"]