To golf it a little to make it into an actual one-liner (even if a rather long one!)
#!/usr/bin/perl -l $n=pop;$"=$/;print"@{[w($n)]}";sub w{my($n)=pop;[EMAIL PROTECTED]"":[EMAIL PROTECTED]"()":a;if($n>1){for$k(0..--$n){for$p(w($k))[EMAIL PROTECTED],"($p)$_"for w($n-$k)[EMAIL PROTECTED] -- jas On Nov 15, 2007 2:05 PM, Phil Carmody <[EMAIL PROTECTED]> wrote: > I saw this on sci.math, and thought "one liner" ;-) > I even think a DP non-recursive approach should be quite quick. > Keeping the output in the logical order might cost a few strokes. > > > #!/usr/bin/perl > > $count = $ARGV[0]; > > print join "\n", pren($count), ""; > > sub pren > { > my @list = (); > > (my $n) = @_; > if ($n == 0) {push(@list, "")} > elsif($n == 1) {push(@list, "()")} > elsif($n > 1) > { > foreach $k (0 .. $n-1) > { > foreach $p1 (pren($k)) > { > foreach $p2 (pren($n - 1 - $k)) > { > push @list, sprintf "(%s)%s", $p1, $p2; > } > } > } > } > return @list; > } > ________________________ > > > $ ./parens.pl 5 | cat -n > 1 ()()()()() > 2 ()()()(()) > 3 ()()(())() > 4 ()()(()()) > 5 ()()((())) > 6 ()(())()() > 7 ()(())(()) > 8 ()(()())() > 9 ()((()))() > 10 ()(()()()) > 11 ()(()(())) > 12 ()((())()) > 13 ()((()())) > 14 ()(((()))) > 15 (())()()() > 16 (())()(()) > 17 (())(())() > 18 (())(()()) > 19 (())((())) > 20 (()())()() > 21 (()())(()) > 22 ((()))()() > 23 ((()))(()) > 24 (()()())() > 25 (()(()))() > 26 ((())())() > 27 ((()()))() > 28 (((())))() > 29 (()()()()) > 30 (()()(())) > 31 (()(())()) > 32 (()(()())) > 33 (()((()))) > 34 ((())()()) > 35 ((())(())) > 36 ((()())()) > 37 (((()))()) > 38 ((()()())) > 39 ((()(()))) > 40 (((())())) > 41 (((()()))) > 42 ((((())))) > > > () ASCII ribbon campaign () Hopeless ribbon campaign > /\ against HTML mail /\ against gratuitous bloodshed > > [stolen with permission from Daniel B. Cristofani] > > > > ____________________________________________________________________________________ > Never miss a thing. Make Yahoo your home page. > http://www.yahoo.com/r/hs > -- Jasvir Nagra http://www.cs.auckland.ac.nz/~jas