Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re^2: Challenge: Simple algorithm for continuing series of integers

by JavaFan (Canon)
on Oct 19, 2008 at 21:55 UTC ( [id://718096]=note: print w/replies, xml ) Need Help??


in reply to Re: Challenge: Simple algorithm for continuing series of integers
in thread Challenge: Simple algorithm for continuing series of integers

I fully agree.

Note that "magical guessing" the sequence makes it quite hard to improve the ... * operator.

Suppose in perl 6.0, you have such a magical ... * operator, that "guesses" how a sequence continues. Now, for 6.1, someone comes up with an idea to "improve" the operator, allowing it to "better guess" certain classes of sequences. But how would you know such an improvement wouldn't break someone codes? The "improvement" is going to change the guess of certain start sequences (otherwise, there wouldn't be such an improvement). But someone else may be quite content with the 6.0 guess. So this isn't an operator that could easily "tune" itself over releases - unless you don't care about backwards compatability.

  • Comment on Re^2: Challenge: Simple algorithm for continuing series of integers

Replies are listed 'Best First'.
Re^3: Challenge: Simple algorithm for continuing series of integers
by TimToady (Parson) on Oct 20, 2008 at 03:19 UTC
    It would be relatively easy to make a rule that new guessers are allowed to work only on the unguessable residue left over from previous versions. And of course, there's little reason to install guessers that would be opaque to most readers, and I expect that the writer of the program should certainly name the series or the generator function such that it is clear to the reader.

    So actually, I was serious in my proposal that we make it easy to pull well-named generator functions from a well-known database, and then the numbers on the front are just examples of the first few values in the series--the real meat is in the function name. But a name is a useful abstraction, compared to forcing people to write complicated closures that might be just as unreadable as * is. And the standard function derived in a standard fashion may well be more optimizable than the user-written equivalent, where various idiosyncratic usages may make optimization difficult.

    So that's why the spec currently limits * guessing to some very simple cases, and I have no problem with taking a very conservative approach to adding more guessers.

      compared to forcing people to write complicated closures that might be just as unreadable as * is. ... the spec currently limits * guessing to some very simple cases

      If the guesser is limited to simple cases, then the closures it would replace, would be simple also. By the time you get to the point where the closure would give any reasonably competent programmer a problem to understand, the chances of the guesser, guessing correctly are close to nil.

      Even the simplest input to the guesser, say: 1,2,3 currently elicits a gnat's genitalia off of 13,000 matches at the OEIS.

      Adding a fourth term 4 cuts that to 5,500; a fifth gets you 3,500; a 6th, 2,500; a 7th, 2,000; an 8th 2,000. And you're still close to 1,500 by the time you have specified the first 9 terms.

      I didn't keep going to see how many leads you'd have to specify to uniquely identify even this simplest of sequences, but I tried a few others:

      1. 1,4,9,16,25 - 125 possibles.
      2. 1,2,4,8,16 - 346 possibles.
      3. 1,3,5,7,9 - 233 possibles.
      4. 2,4,6,8,10 - 213 possibles.
      5. 1,10,100,1000 - 36 possibles.

      It's frankly hard to see the win from having a "simple" guesser. And hard to see the possibility of something more accurate.

      Especially when it would be so cheap and simple to provide the top ten or 100 most common sequences named as built-ins, or in a core module.


      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://718096]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others wandering the Monastery: (5)
As of 2024-04-25 21:37 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found