Skip to content
20 changes: 9 additions & 11 deletions fibonacci/fibonacci.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,20 +21,18 @@
# http://ruby-doc.org/core-2.1.5/doc/syntax/methods_rdoc.html

class Fibonacci
def is_fibonacci? (n)
n == 0 ? fib_number = 0
n == 1 ? fib_number = 1
if n > 1
fib_sequence.each {|n|
fib_sequence = [ ] << fib_number = fib[n-1] + fib[n-2]
}
end
end
def is_fibonacci? (check_number)
fibonacci_seq = [0,1]
while check_number > fibonacci_seq.last
fib_num = fibonacci_seq[-1] + fibonacci_seq[-2]
fibonacci_seq.push fib_num
end
fibonacci_seq.include? check_number
end
end



test = Fibonacci.new
test.is_fibonacci?(5)



59 changes: 59 additions & 0 deletions fibonacci/fibonacci_ken.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Original solution
# class Fibonacci
# def is_fibonacci?(n)
# fib_ary = [0,1]
# return true if fib_ary.include?(n)
#
# while n >= get_fibonacci(fib_ary)
# return true if n == get_fibonacci(fib_ary)
# fib_ary << get_fibonacci(fib_ary)
# end
#
# false
# end
#
# private
#
# def get_fibonacci(a)
# a[-1] + a[-2]
# end
# end

#rv means return value
# http://ruby.bastardsbook.com/chapters/enumerables/

# First iteration of inject solution:
# # class Fibonacci
# def is_fibonacci?(n)
# #rv means return value
# # http://ruby.bastardsbook.com/chapters/enumerables/
# n.times.inject([0,1]) { |rv, e| rv << rv[-2] + rv[-1] }.include?(n)
# end
# end
#
# require 'pry'

# Second iteration of inject solution:
class Fibonacci
def is_fibonacci?(n)
return true if n == 0
n.times.inject([0,1]) do |rv, e|
return true if rv.include?(n)
break if rv.last > n
rv << rv[-2] + rv[-1]
end
false
end
end
f = Fibonacci.new
p f.is_fibonacci?(144)



# showing inject method
# cool = [48, 46, 14, 15, 5, 99].inject(0) do |rv, e|
# binding.pry
# rv + e
# end
#
# p cool