Sha256: d04948ea45b40616579b13332ac2fd243c97fb2ff74ee10b9facb1115dd7f5a6
Contents?: true
Size: 360 Bytes
Versions: 20
Compression:
Stored size: 360 Bytes
Contents
class Integer def leonardo? n = self return 1 if n <= 1 phi = Hash[[:+, :-].map{|sign| [sign, (1.send(sign, Math.sqrt(5)) / 2) ]}] divisor = phi[:+] - phi[:-] (1..n).any? do |m| sum = ((2 * ( ( phi[:+]**(m+1) - phi[:-]**(m+1) ).fdiv( divisor ) )) - 1) return false unless sum.finite? sum.floor == self end end end
Version data entries
20 entries across 20 versions & 1 rubygems