Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re: Re (tilly) 2: (Golf as well): List of Partitions

by danger (Priest)
on May 07, 2001 at 00:52 UTC ( #78385=note: print w/replies, xml ) Need Help??


in reply to Re (tilly) 2: (Golf as well): List of Partitions
in thread (Golf as well): List of Partitions

Hmm, and we can shave that down to 71 chars:

sub P{ [@_],map{my$i=$_;grep{!grep$_>$i,@$_}map[$i,@$_],P($_[0]-$i)}1..$_[0]- +1 }

Replies are listed 'Best First'.
Re (tilly) 4: (Golf as well): List of Partitions
by tilly (Archbishop) on May 07, 2001 at 01:04 UTC
    Nice, now slimed down to 64 on the knowledge that the partitions are always sorted from largest number to smallest...
    sub P{ [@_],map{my$i=$_;map$$_[0]>$i?():[$i,@$_],P($_[0]-$i)}1..$_[0]-1 }
    UPDATE
    Saved an additional char because my map could be commified.

    UPDATE 2
    Scraping the barrel for 61:

    sub P{ my$i;[@_],map{map$$_[0]>$i?():[$i,@$_],P($_[0]-++$i)}2..$_[0] }

      Tilly, i would say something, but it would sound clunky compared to the beautiful code above. It would be nice if i could ++ you more than once for that snippet.

      One question though, what's commified? i'm not sure if i've ever heard the term...

      jynx

        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 }

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://78385]
help
Chatterbox?
[BarApp]: I need help accessing perl files. I need permission!!!
[Cosmic37]: I wish thee a peachy life and express gratitude for considering my pathetic questions
[erix]: record separator
[Cosmic37]: Permissions are interesting earthlings. Did nature determine who gives permission and who asks permission. Who was the first to get permission? Are you not related to them as one big earthling family?
[karlgoethebier]: Cojones! We need cojones!
[karlgoethebier]: Ouch! Permissions! We need permissions!

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (8)
As of 2017-06-29 16:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    How many monitors do you use while coding?















    Results (672 votes). Check out past polls.