I'm guessing that this reply was intended for me, regarding the glob solution. Whenever the subject of combinations comes up, a glob solution usually shows up, and someone who hasn't seen it used that way before is delighted or baffled or both.
As the documentation tells you, glob takes a pattern and expands it into all the filenames that the shell would. Of course, we're not dealing with filenames here, but for alternations ({this,that}), glob doesn't really look at filenames. It just generates all the combinations.
So all I did was construct a glob pattern of {A,}{B,}{C,} etc., and glob came up with the strings that matched. Having the empty string as an alternative (as I did) is legal in globs.
Running a quick benchmark, I find that, including the sort I mention in 453284, glob is about 2.5x as fast as your solution, while powerset is 2x-or-so as fast as the glob.
Caution: Contents may have been coded under pressure.
| [reply] [d/l] [select] |