The stupid question is the question not asked PerlMonks

### Re: (Golf) Kaprekar's Process

by MeowChow (Vicar)
 on Jun 16, 2001 at 23:00 UTC Need Help??

in reply to (Golf) Kaprekar's Process

The answers given thus far all fail on numbers (such as 100 and 211) which generate two-digit numbers in their intermediate results. Here's a good test for this particular golf:
```\$| = 1;
for (100..999) {
next if /(.)\1\1/;
print "\$_ : ", k(\$_), \$/;
}
And here's a correct solution at 74 68 63 chars:
```sub k {
\$_=sprintf"%03d",pop;/495/?0:1+k(-(\$_=join'',sort/./g)+reverse)
}
```   MeowChow
s aamecha.s a..a\u\$&owag.print```

Replies are listed 'Best First'.
Re: Re: (Golf) Kaprekar's Process
by Anonymous Monk on Jun 17, 2001 at 00:47 UTC
```sub k {
\$_="000"|"@{[pop]}";/495/?0:1+k(-(\$_=join('',sort/./g)+reverse)
}
62

--sean
Verrrry cool idea... this can actually come down to 56:
```sub k {
\$_="000"|"@_";/495/?0:1+k(-(\$_=join'',sort/./g)+reverse)
}
The interesting thing about this is that it's not the same as right-formatting the number via sprintf, since the 0 goes to the back, but it doesn't matter because the digits are reordered anyway.
```   MeowChow
s aamecha.s a..a\u\$&owag.print```
Yeah, i realized the whole @{[pop]} bit wasn't needed about 20 miles from home, figured someone would've already noticed it by the time i got back.. Here's one more:
```sub k {
\$_=0 x3|"@_";/495/?0:1+k(-(\$_=join'',sort/./g)+reverse)
}
55

--sean
Nope..
by sean (Beadle) on Jun 18, 2001 at 09:01 UTC

Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://89081]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (3)
As of 2024-03-01 19:56 GMT
Voting Booth?
My favourite way to spend a leap day ...

Results (29 votes). Check out past polls.