@x
@ One of the first goals of this program will be to compute the
``conjugates'' $T^+$, $T^{++}$, and $T^{+++}=T^-$, given a
skew ternary tree~$T$. That tree is specified on the command line,
@y
@ The goal of this variant of {\mc SKEW-TERNARY-CALC} is simply
to compute the four skew ternary trees
$T$, $T^+$, $T^{++}$, and $T^{+++}=T^-$ that are cyclically equivalent
to a given a ternary tree~$T$. That tree is specified on the command line,
@z
@x
checks to make sure that they actually do define a skew ternary tree.
@y
checks to make sure that they actually do define a ternary tree.
@z
@x
@;
@;
@y
@;
@z
@x
if (r<0) {
fprintf(stderr,"Not properly skewed: rank(%c)=-1!\n",p);
exit(-30);
}
@y
if (r=
@y
@ @=
@z
@x
@ @d offset 2 /* difference between |stacked| and the current rank */
@y
@ @d offset 258 /* difference between |stacked| and the current rank */
@z
@x
fun of deciphering it.
@y
fun of deciphering it.
If |minrank<-1|, the topmost |-minrank-1| buds on the stack were actually
matched (in the previous cycle), although the chart's |match| fields don't
show this. I could patch this up, but the |match| fields aren't really used.
We do have to shift the stack entries so that the four truly unmatched
buds appear at the top.
@z
@x
for (j=1;j<4;j++) {
@y
if (minrank<-1)
for (i=1;i>=-2;i--)
stack[i+offset]=stack[i+offset+minrank+1];
for (j=0;j<4;j++) {
@z