Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

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

by Anonymous Monk
on Jun 17, 2001 at 02:49 UTC ( #89111=note: print w/replies, xml ) Need Help??


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

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

Replies are listed 'Best First'.
Re: Re: Re: Re: Re: (Golf) Kaprekar's Process
by srawls (Friar) on Jun 18, 2001 at 05:19 UTC
    Nice ... It took me a sec to notice it was | and not ||. You can shave off a char by replacing "@_" with pop. I tried to save more, but each time I came up with the same # of chars, just a different way to do it. It almost looks obfuscated now : ), but here's a solution at 54:
    sub k { $_=$-x3|pop;!/495/&&1+k(-($_=join$k,sort/./g)+reverse) }

    Update:Nice catch Sean. I tested it, just not against numbers like 100 233. It looks like the am wins then, unless that can be beaten.

    The 15 year old, freshman programmer,
    Stephen Rawls

    Nope..
    by sean (Beadle) on Jun 18, 2001 at 09:01 UTC
      Nope, you can't use pop, unless you use it like this: "@{[pop]}" .. The quotes turn it into a string instead of an integer, so the | does a bitstring or instead of a numeric or. If either of the operands are numeric, you'll get the numeric or:
      perl -we 'print "000"|1' 1
      that doesn't work for us, we need this:
      perl -we 'print "000"|"1"' 100
      --sean

      and yeah, i came up with a handful of slightly different attempts that all came in at 55 too.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://89111]
help
Chatterbox?
[choroba]: What about [metadoc:// Algorithm::Loops]?
[Corion]: choroba: Yeah, but handing off the request to Dancer,Plack, Mojolicious,LWP is easy once I have the data filled into some structure ;))
[choroba]: Algorithm::Loops
[Corion]: choroba: I'm using that to generate the permutations, but I don't know how the user can pass the intended values to my function in a sane way
[Corion]: I have a prototype that permutes the get_parameters, but the values used for the get parameters should be different from the values used for the headers and potentially for parts of the URL
[Corion]: But yes, in general, my approach will be "split the URL into another set of parameters, generate an array of allowed values for each parameter and then NestedLoops() over the set"
[choroba]: hmm... so you need something like bag from Test::Deep, but not for checking, but for generation
[Corion]: This has the dual use of easily requesting sequential URLs and also being suitable for testing
[Corion]: For testing, I want to skip all tests with the same value(s) once one test fails to cut down on the number of failing tests
[Corion]: choroba: Yes, in a way I

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (5)
As of 2017-01-17 08:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Do you watch meteor showers?




    Results (152 votes). Check out past polls.