http://www.perlmonks.org?node_id=89090


in reply to Re: Re: (Golf) Kaprekar's Process
in thread (Golf) Kaprekar's Process

Oh, I see: 100 - 001 is 99; 99 - 99 is zero. Now we've got an infinite loop. Just out of curiosity, how would you solve that? Your solution gives 6 (which is most likely right), I just don't see how.

The 15 year old, freshman programmer,
Stephen Rawls

Replies are listed 'Best First'.
Re: Re: Re: Re: (Golf) Kaprekar's Process
by MeowChow (Vicar) on Jun 17, 2001 at 00:11 UTC
    That's what the sprintf is there for. It formats a two-digit result into a three-digit string, eg. 099. After sorting and reversal, you get 990 - 099.
       MeowChow                                   
                   s aamecha.s a..a\u$&owag.print
      Ok, I get it. I can modify yours than, and improve it by two chars:
      sub a { $_=pop;s/^..$/0$&/;/495/?0:1+a(-($_=join'',sort/./g)+reverse) }

      The 15 year old, freshman programmer,
      Stephen Rawls