Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re: Zeckendorf representation

by jwkrahn (Monsignor)
on Aug 25, 2012 at 02:58 UTC ( #989681=note: print w/ replies, xml ) Need Help??


in reply to Zeckendorf representation

sub is_fibonnacci { my $plus = (5 * $_[0] * $_[0]) + 4; my $mins = (5 * $_[0] * $_[0]) - 4; return is_perfect_square($plus) | is_perfect_square($mins); }

No need to calculate 5 * $_[0] * $_[0] twice, and you probably meant to use the logical or operator instead of the bit-wise or operator.

sub is_fibonnacci { my $plus = (5 * $_[0] * $_[0]) + 4; my $mins = $plus - 8; return is_perfect_square($plus) || is_perfect_square($mins); }

(The logical operators short-circuit so is_perfect_square($mins) will only execute if is_perfect_square($plus) is true.)



sub is_perfect_square { my $sqrt = int(sqrt($_[0])); return $sqrt * $sqrt == $_[0]; }

Or just:

sub is_perfect_square { int( $_[0] ** .5 ) ** 2 == $_[0] }


Comment on Re: Zeckendorf representation
Select or Download Code
Replies are listed 'Best First'.
Re^2: Zeckendorf representation
by thmsdrew (Scribe) on Aug 25, 2012 at 03:11 UTC

    Thanks for your input! What do you mean by "short circuit"? Also, the difference between your is_perfect_square sub and mine is that mine is much more clear. I can afford the extra line for a bit of clarity.

      What do you mean by "short circuit"?
      It means that the part after || will only be evaluated if it is needed know the result of the operator. In the case of the or-operator the second half is redundant if the first is true, since the total will be true no matter what the second part is.

        I don't really understand how that is a problem. If the first part passes, then I want it to return true, and I truly don't care what the second part is. I guess I see how that's redundant, though.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (13)
As of 2015-07-30 12:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (271 votes), past polls