From 2e83f4b83380ba5e4a989d6f5799f3edf2eb7001 Mon Sep 17 00:00:00 2001 From: Bruno Raoult Date: Mon, 25 Jan 2021 20:41:26 +0100 Subject: [PATCH] changed gen_reduced_trees() to match gen_tree() args --- .gitignore | 1 + lceb.c | 2 +- tree.c | 44 ++++++++++++++++++++++---------------------- 3 files changed, 24 insertions(+), 23 deletions(-) diff --git a/.gitignore b/.gitignore index 88be8dd..ab2bd2f 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ tree lceb gmon.out OUT* +kata* diff --git a/lceb.c b/lceb.c index 60993ae..f2ddf06 100644 --- a/lceb.c +++ b/lceb.c @@ -165,7 +165,7 @@ int main(ac, av) if (treetype==TREE_CATALAN) { gen_tree(intarray, nops, 0, 0); } else { - gen_reduced_trees(nops+1); + gen_reduced_trees(nops); } nstacks=n_stacks(); ntrees=n_trees(); diff --git a/tree.c b/tree.c index 417d2b9..e30ae18 100644 --- a/tree.c +++ b/tree.c @@ -254,25 +254,25 @@ NODE *build_tree(desc, size) void gen_reduced_trees(n) int n; { - int size=n*2-1, i; + int size=n*2+1, i; TREE *tree; char name[80]; - char *seq2[]= { + char *seq1[]= { "100" }; - char *seq3[]= { + char *seq2[]= { "10100" }; - char *seq4[]= { + char *seq3[]= { "1010100", "1100100" }; - char *seq5[]= { + char *seq4[]= { "101010100", "110010100", "101100100" }; - char *seq6[]= { + char *seq5[]= { "10101010100", "11001010100", "10110010100", @@ -281,7 +281,7 @@ void gen_reduced_trees(n) "11010010100" }; - if (n<2 || n>MAXINPUT) { + if (n<1 || n>=MAXINPUT) { fprintf(stderr, "gen_reduced_trees: wrong leaves %d\n", n); return; } @@ -290,6 +290,12 @@ void gen_reduced_trees(n) # endif switch (n) { + case 1: + ntrees++; + sprintf(name, "Tree %d", ntrees); + tree=new_tree(name); + tree->head=build_tree(seq1[0], size); + break; case 2: ntrees++; sprintf(name, "Tree %d", ntrees); @@ -297,13 +303,15 @@ void gen_reduced_trees(n) tree->head=build_tree(seq2[0], size); break; case 3: - ntrees++; - sprintf(name, "Tree %d", ntrees); - tree=new_tree(name); - tree->head=build_tree(seq3[0], size); + for (i=0; i<2; ++i) { + ntrees++; + sprintf(name, "Tree %d", ntrees); + tree=new_tree(name); + tree->head=build_tree(seq3[i], size); + } break; case 4: - for (i=0; i<2; ++i) { + for (i=0; i<3; ++i) { ntrees++; sprintf(name, "Tree %d", ntrees); tree=new_tree(name); @@ -311,19 +319,11 @@ void gen_reduced_trees(n) } break; 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) { ntrees++; sprintf(name, "Tree %d", ntrees); tree=new_tree(name); - tree->head=build_tree(seq6[i], size); + tree->head=build_tree(seq5[i], size); } break; } @@ -403,7 +403,7 @@ int main(ac, av) gen_tree(array, n, 0, 0); } else { printf("generating Wedderburn tree...\n"); - gen_reduced_trees(n+1); + gen_reduced_trees(n); } print_trees(details); exit(0);