%{
#include <stdio.h>
int wordlen[50]; // Array to count words of different lengths
%}
%%
[ \t\n]+ { /* ignore whitespace */ }
[A-Za-z]+ { wordlen[yyleng]++; } // count word length
. { /* ignore other characters */ }
%%
int main() {
yylex();
printf("\nHistogram of Word Lengths:\n");
for (int i = 1; i < 50; i++) {
if (wordlen[i] > 0) {
printf("%2d: ", i);
for (int j = 0; j < wordlen[i]; j++)
printf("*");
printf("\n");
}
}
return 0;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CmludCB3b3JkbGVuWzUwXTsgIC8vIEFycmF5IHRvIGNvdW50IHdvcmRzIG9mIGRpZmZlcmVudCBsZW5ndGhzCiV9CgolJQpbIFx0XG5dKyAgICAgICAgICAgeyAvKiBpZ25vcmUgd2hpdGVzcGFjZSAqLyB9CltBLVphLXpdKyAgICAgICAgICB7IHdvcmRsZW5beXlsZW5nXSsrOyB9ICAgLy8gY291bnQgd29yZCBsZW5ndGgKLiAgICAgICAgICAgICAgICAgIHsgLyogaWdub3JlIG90aGVyIGNoYXJhY3RlcnMgKi8gfQolJQoKaW50IG1haW4oKSB7CiAgICB5eWxleCgpOwogICAgcHJpbnRmKCJcbkhpc3RvZ3JhbSBvZiBXb3JkIExlbmd0aHM6XG4iKTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDwgNTA7IGkrKykgewogICAgICAgIGlmICh3b3JkbGVuW2ldID4gMCkgewogICAgICAgICAgICBwcmludGYoIiUyZDogIiwgaSk7CiAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgd29yZGxlbltpXTsgaisrKQogICAgICAgICAgICAgICAgcHJpbnRmKCIqIik7CiAgICAgICAgICAgIHByaW50ZigiXG4iKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMDsKfQo=