Here is what I mean by commified. Consider the following
2 versions of the same map statement:
...map{"@$_\n"}@a...
...map"@$_\n",@a...
The first form is more general, you can put more complex
logic inside the block. The second form replaces the block
with a comma and shaves a character. Often you can shave
a few characters off of someone's solution by seeing that
a few map's or grep's can switch over to the version
with the comma.
Sometimes it is not obvious that you can. So sometimes I
just have to try it out. As in the case:
...map{$$_[0]>$i?():[$i,@$_]}P($n-$i)...
...map$$_[0]>$i?():[$i,@$_],P($n-$i)...
Incidentally the following version is the same size, but
has slightly nicer (IMHO) output:
sub P{
my$i=pop;[$i],map{--$i;map$$_[0]>$i?():[$i,@$_],P($_-1)}2..$i
}
|