From 054841358a064d12e9b2c50aabdbebdba5c0cc5b Mon Sep 17 00:00:00 2001 From: Yoshimi Date: Thu, 18 Dec 2014 10:54:28 +0900 Subject: [PATCH 01/12] changed it using an array --- fibonacci/fibonacci.rb | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/fibonacci/fibonacci.rb b/fibonacci/fibonacci.rb index 9ec0ddd..f7a6946 100644 --- a/fibonacci/fibonacci.rb +++ b/fibonacci/fibonacci.rb @@ -21,15 +21,22 @@ # 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] + def is_fibonacci? (check_number) + + def getting_fibonacci(n) + + fibonacci_seq = Array.new(n+1) + n == 0 ? fib_number = 0 + n == 1 ? fib_number = 1 + while n > 1 + fibonacci_seq.each {|n| + fibonacci_number = fibonacci_number[n-1] + fibonacci_number[n-2] } end - end + + fibonacci_seq.include? check_number + end + end @@ -38,3 +45,4 @@ def is_fibonacci? (n) test.is_fibonacci?(5) + From d25b6a583caf98998af01f00fb565559a17b14ae Mon Sep 17 00:00:00 2001 From: Yoshimi Date: Thu, 18 Dec 2014 12:05:24 +0900 Subject: [PATCH 02/12] using .inject method --- fibonacci/fibonacci.rb | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/fibonacci/fibonacci.rb b/fibonacci/fibonacci.rb index f7a6946..25d42f6 100644 --- a/fibonacci/fibonacci.rb +++ b/fibonacci/fibonacci.rb @@ -22,21 +22,13 @@ class Fibonacci def is_fibonacci? (check_number) - - def getting_fibonacci(n) - - fibonacci_seq = Array.new(n+1) - n == 0 ? fib_number = 0 - n == 1 ? fib_number = 1 - while n > 1 - fibonacci_seq.each {|n| - fibonacci_number = fibonacci_number[n-1] + fibonacci_number[n-2] - } - end - + fibonacci_seq = [0,1] + fibonacci_seq << fibonacci_seq.inject{|sum,n| + sum+n + } fibonacci_seq.include? check_number - end - + + end end From 58cebecfdddea5d0efc93646e645959ae3007020 Mon Sep 17 00:00:00 2001 From: Yoshimi Date: Thu, 18 Dec 2014 12:32:41 +0900 Subject: [PATCH 03/12] need to fix, looping 01010101... --- fibonacci/fibonacci.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/fibonacci/fibonacci.rb b/fibonacci/fibonacci.rb index 25d42f6..588c9a5 100644 --- a/fibonacci/fibonacci.rb +++ b/fibonacci/fibonacci.rb @@ -23,9 +23,10 @@ class Fibonacci def is_fibonacci? (check_number) fibonacci_seq = [0,1] - fibonacci_seq << fibonacci_seq.inject{|sum,n| - sum+n + fibonacci_seq.inject{|sum,n| + sum + n } + puts fibonacci_seq fibonacci_seq.include? check_number end From ba254c2c1479ec9bda05c7e642e26eb1a1f1f450 Mon Sep 17 00:00:00 2001 From: Yoshimi Date: Fri, 19 Dec 2014 08:36:11 +0900 Subject: [PATCH 04/12] add while loop --- fibonacci/fibonacci.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/fibonacci/fibonacci.rb b/fibonacci/fibonacci.rb index 588c9a5..621fa1c 100644 --- a/fibonacci/fibonacci.rb +++ b/fibonacci/fibonacci.rb @@ -23,12 +23,15 @@ class Fibonacci def is_fibonacci? (check_number) fibonacci_seq = [0,1] - fibonacci_seq.inject{|sum,n| + while check_number > fibonacci_seq.last + fib_num = fibonacci_seq.inject{|sum,n| sum + n } + fibonacci_seq.push fib_num + print fib_num puts fibonacci_seq + end fibonacci_seq.include? check_number - end end From 810f5f68f5002952e2de07265773cf929309af13 Mon Sep 17 00:00:00 2001 From: Yoshimi Date: Fri, 19 Dec 2014 12:31:17 +0900 Subject: [PATCH 05/12] tried to use #inject but should've not --- fibonacci/fibonacci.rb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/fibonacci/fibonacci.rb b/fibonacci/fibonacci.rb index 621fa1c..0be90af 100644 --- a/fibonacci/fibonacci.rb +++ b/fibonacci/fibonacci.rb @@ -23,14 +23,16 @@ class Fibonacci def is_fibonacci? (check_number) fibonacci_seq = [0,1] + while check_number > fibonacci_seq.last - fib_num = fibonacci_seq.inject{|sum,n| - sum + n + fib_num = fibonacci_seq.last(2).inject{|fb1,fb2| + fb1 + fb2 } + p fib_num fibonacci_seq.push fib_num - print fib_num puts fibonacci_seq end + fibonacci_seq.include? check_number end end From 7b821808fcecef238f07c0c19ccc08dd44be55eb Mon Sep 17 00:00:00 2001 From: Kenneth Bruce Uy Date: Thu, 18 Dec 2014 22:47:45 -0500 Subject: [PATCH 06/12] remove debug statements, fix indentation --- fibonacci/fibonacci.rb | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/fibonacci/fibonacci.rb b/fibonacci/fibonacci.rb index 0be90af..fb5f3a6 100644 --- a/fibonacci/fibonacci.rb +++ b/fibonacci/fibonacci.rb @@ -22,18 +22,16 @@ class Fibonacci def is_fibonacci? (check_number) - fibonacci_seq = [0,1] - - while check_number > fibonacci_seq.last - fib_num = fibonacci_seq.last(2).inject{|fb1,fb2| - fb1 + fb2 - } - p fib_num - fibonacci_seq.push fib_num - puts fibonacci_seq - end - - fibonacci_seq.include? check_number + fibonacci_seq = [0,1] + + while check_number > fibonacci_seq.last + fib_num = fibonacci_seq.last(2).inject{|fb1,fb2| + fb1 + fb2 + } + fibonacci_seq.push fib_num + end + + fibonacci_seq.include? check_number end end From efec3fc6fd614b1ffd5ac09ca097a94df006c69a Mon Sep 17 00:00:00 2001 From: Kenneth Bruce Uy Date: Thu, 18 Dec 2014 22:54:13 -0500 Subject: [PATCH 07/12] use shovel operator instead of #push --- fibonacci/fibonacci.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fibonacci/fibonacci.rb b/fibonacci/fibonacci.rb index fb5f3a6..b667330 100644 --- a/fibonacci/fibonacci.rb +++ b/fibonacci/fibonacci.rb @@ -28,7 +28,7 @@ def is_fibonacci? (check_number) fib_num = fibonacci_seq.last(2).inject{|fb1,fb2| fb1 + fb2 } - fibonacci_seq.push fib_num + fibonacci_seq << fib_num end fibonacci_seq.include? check_number From dd4032b4719ecf52590f7e95f804cfd3ba837d8c Mon Sep 17 00:00:00 2001 From: Kenneth Bruce Uy Date: Thu, 18 Dec 2014 23:04:59 -0500 Subject: [PATCH 08/12] push ken's solutions to view --- fibonacci/fibonacci_ken.rb | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 fibonacci/fibonacci_ken.rb diff --git a/fibonacci/fibonacci_ken.rb b/fibonacci/fibonacci_ken.rb new file mode 100644 index 0000000..d300c3c --- /dev/null +++ b/fibonacci/fibonacci_ken.rb @@ -0,0 +1,30 @@ +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 +# require 'pry' +# +# 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 +f = Fibonacci.new +p f.is_fibonacci?(7) From 7b3f49c36913e8b39a145c12910ca8359af2efeb Mon Sep 17 00:00:00 2001 From: Kenneth Bruce Uy Date: Fri, 19 Dec 2014 00:30:29 -0500 Subject: [PATCH 09/12] improve on one line solution We came up on how to make the solution faster so when given incredibly long numbers as arguments, it would stop short --- fibonacci/fibonacci_ken.rb | 71 ++++++++++++++++++++++++++------------ 1 file changed, 49 insertions(+), 22 deletions(-) diff --git a/fibonacci/fibonacci_ken.rb b/fibonacci/fibonacci_ken.rb index d300c3c..42eab31 100644 --- a/fibonacci/fibonacci_ken.rb +++ b/fibonacci/fibonacci_ken.rb @@ -1,30 +1,57 @@ -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 +# 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 - false - end +#rv means return value +# http://ruby.bastardsbook.com/chapters/enumerables/ - private - - def get_fibonacci(a) - a[-1] + a[-2] - end -end -# require 'pry' -# -# class Fibonacci +# First iteration: +# # 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 +# endrequire 'pry' + +# Second iteration: +class Fibonacci + def is_fibonacci?(n) + return true if n == 0 + n.times.inject([0,1]) do |rv, e| + binding.pry + 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?(7) +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 From 74a4fdf32a7c1ef81f0bda13db0111fe1ec1b6fe Mon Sep 17 00:00:00 2001 From: Kenneth Bruce Uy Date: Fri, 19 Dec 2014 00:31:49 -0500 Subject: [PATCH 10/12] fix comments --- fibonacci/fibonacci_ken.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/fibonacci/fibonacci_ken.rb b/fibonacci/fibonacci_ken.rb index 42eab31..9794fc7 100644 --- a/fibonacci/fibonacci_ken.rb +++ b/fibonacci/fibonacci_ken.rb @@ -1,3 +1,4 @@ +# Original solution # class Fibonacci # def is_fibonacci?(n) # fib_ary = [0,1] @@ -21,7 +22,7 @@ #rv means return value # http://ruby.bastardsbook.com/chapters/enumerables/ -# First iteration: +# First iteration of inject solution: # # class Fibonacci # def is_fibonacci?(n) # #rv means return value @@ -30,7 +31,7 @@ # end # endrequire 'pry' -# Second iteration: +# Second iteration of inject solution: class Fibonacci def is_fibonacci?(n) return true if n == 0 From bd878838819facefe7619f607a3a89743492a000 Mon Sep 17 00:00:00 2001 From: Kenneth Bruce Uy Date: Fri, 19 Dec 2014 00:35:07 -0500 Subject: [PATCH 11/12] remove rpy binding --- fibonacci/fibonacci_ken.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/fibonacci/fibonacci_ken.rb b/fibonacci/fibonacci_ken.rb index 9794fc7..ec283fd 100644 --- a/fibonacci/fibonacci_ken.rb +++ b/fibonacci/fibonacci_ken.rb @@ -29,14 +29,15 @@ # # http://ruby.bastardsbook.com/chapters/enumerables/ # n.times.inject([0,1]) { |rv, e| rv << rv[-2] + rv[-1] }.include?(n) # end -# endrequire 'pry' +# 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| - binding.pry return true if rv.include?(n) break if rv.last > n rv << rv[-2] + rv[-1] From f271f772ff01759aa5f3f311e0bd0f60fdff5c53 Mon Sep 17 00:00:00 2001 From: Yoshimi Date: Sat, 20 Dec 2014 10:36:06 +0900 Subject: [PATCH 12/12] simplified the line for calculation --- fibonacci/fibonacci.rb | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/fibonacci/fibonacci.rb b/fibonacci/fibonacci.rb index 0be90af..3189f3a 100644 --- a/fibonacci/fibonacci.rb +++ b/fibonacci/fibonacci.rb @@ -25,12 +25,8 @@ def is_fibonacci? (check_number) fibonacci_seq = [0,1] while check_number > fibonacci_seq.last - fib_num = fibonacci_seq.last(2).inject{|fb1,fb2| - fb1 + fb2 - } - p fib_num - fibonacci_seq.push fib_num - puts fibonacci_seq + fib_num = fibonacci_seq[-1] + fibonacci_seq[-2] + fibonacci_seq.push fib_num end fibonacci_seq.include? check_number