changed gen_reduced_trees() to match gen_tree() args

This commit is contained in:
2021-01-25 20:41:26 +01:00
parent b41bf41f56
commit 2e83f4b833
3 changed files with 24 additions and 23 deletions

1
.gitignore vendored
View File

@@ -9,3 +9,4 @@ tree
lceb lceb
gmon.out gmon.out
OUT* OUT*
kata*

2
lceb.c
View File

@@ -165,7 +165,7 @@ int main(ac, av)
if (treetype==TREE_CATALAN) { if (treetype==TREE_CATALAN) {
gen_tree(intarray, nops, 0, 0); gen_tree(intarray, nops, 0, 0);
} else { } else {
gen_reduced_trees(nops+1); gen_reduced_trees(nops);
} }
nstacks=n_stacks(); nstacks=n_stacks();
ntrees=n_trees(); ntrees=n_trees();

44
tree.c
View File

@@ -254,25 +254,25 @@ NODE *build_tree(desc, size)
void gen_reduced_trees(n) void gen_reduced_trees(n)
int n; int n;
{ {
int size=n*2-1, i; int size=n*2+1, i;
TREE *tree; TREE *tree;
char name[80]; char name[80];
char *seq2[]= { char *seq1[]= {
"100" "100"
}; };
char *seq3[]= { char *seq2[]= {
"10100" "10100"
}; };
char *seq4[]= { char *seq3[]= {
"1010100", "1010100",
"1100100" "1100100"
}; };
char *seq5[]= { char *seq4[]= {
"101010100", "101010100",
"110010100", "110010100",
"101100100" "101100100"
}; };
char *seq6[]= { char *seq5[]= {
"10101010100", "10101010100",
"11001010100", "11001010100",
"10110010100", "10110010100",
@@ -281,7 +281,7 @@ void gen_reduced_trees(n)
"11010010100" "11010010100"
}; };
if (n<2 || n>MAXINPUT) { if (n<1 || n>=MAXINPUT) {
fprintf(stderr, "gen_reduced_trees: wrong leaves %d\n", n); fprintf(stderr, "gen_reduced_trees: wrong leaves %d\n", n);
return; return;
} }
@@ -290,6 +290,12 @@ void gen_reduced_trees(n)
# endif # endif
switch (n) { switch (n) {
case 1:
ntrees++;
sprintf(name, "Tree %d", ntrees);
tree=new_tree(name);
tree->head=build_tree(seq1[0], size);
break;
case 2: case 2:
ntrees++; ntrees++;
sprintf(name, "Tree %d", ntrees); sprintf(name, "Tree %d", ntrees);
@@ -297,13 +303,15 @@ void gen_reduced_trees(n)
tree->head=build_tree(seq2[0], size); tree->head=build_tree(seq2[0], size);
break; break;
case 3: case 3:
ntrees++; for (i=0; i<2; ++i) {
sprintf(name, "Tree %d", ntrees); ntrees++;
tree=new_tree(name); sprintf(name, "Tree %d", ntrees);
tree->head=build_tree(seq3[0], size); tree=new_tree(name);
tree->head=build_tree(seq3[i], size);
}
break; break;
case 4: case 4:
for (i=0; i<2; ++i) { for (i=0; i<3; ++i) {
ntrees++; ntrees++;
sprintf(name, "Tree %d", ntrees); sprintf(name, "Tree %d", ntrees);
tree=new_tree(name); tree=new_tree(name);
@@ -311,19 +319,11 @@ void gen_reduced_trees(n)
} }
break; break;
case 5: case 5:
for (i=0; i<3; ++i) {
ntrees++;
sprintf(name, "Tree %d", ntrees);
tree=new_tree(name);
tree->head=build_tree(seq5[i], size);
}
break;
case 6:
for (i=0; i<6; ++i) { for (i=0; i<6; ++i) {
ntrees++; ntrees++;
sprintf(name, "Tree %d", ntrees); sprintf(name, "Tree %d", ntrees);
tree=new_tree(name); tree=new_tree(name);
tree->head=build_tree(seq6[i], size); tree->head=build_tree(seq5[i], size);
} }
break; break;
} }
@@ -403,7 +403,7 @@ int main(ac, av)
gen_tree(array, n, 0, 0); gen_tree(array, n, 0, 0);
} else { } else {
printf("generating Wedderburn tree...\n"); printf("generating Wedderburn tree...\n");
gen_reduced_trees(n+1); gen_reduced_trees(n);
} }
print_trees(details); print_trees(details);
exit(0); exit(0);