From e0302f8dcebb66d7d6431baf15f000c95daa89c9 Mon Sep 17 00:00:00 2001 From: Erika Date: Wed, 20 Nov 2019 10:44:07 -0800 Subject: [PATCH 1/7] Fibonacci + helper method completed. --- lib/fibonacci.rb | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/lib/fibonacci.rb b/lib/fibonacci.rb index 7465c25..7400b2f 100644 --- a/lib/fibonacci.rb +++ b/lib/fibonacci.rb @@ -1,8 +1,26 @@ +require 'pry' # Improved Fibonacci -# Time Complexity - ? +# Time Complexity - I think O(n)? # Space Complexity - ? (should be O(n)) # Hint, you may want a recursive helper method def fibonacci(n) - + return fib_helper(n, fib_array = [0,1], fib = 2) end + +def fib_helper(n, fib_array, fib) + if n < 0 + raise ArgumentError + elsif n == 0 || n == 1 + return n + elsif fib == n + return fib_array[1] + fib_array[0] + end + + temp = fib_array[1] + fib_array[1] = fib_array[1] + fib_array[0] + fib_array[0] = temp + + return fib_helper(n, fib_array, fib + 1) +end + From 745d2132a977bc2c818dfe19ecd0f940cce6dc04 Mon Sep 17 00:00:00 2001 From: Erika Date: Wed, 20 Nov 2019 10:54:01 -0800 Subject: [PATCH 2/7] Added time/space complexitu --- lib/fibonacci.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/fibonacci.rb b/lib/fibonacci.rb index 7400b2f..e97b000 100644 --- a/lib/fibonacci.rb +++ b/lib/fibonacci.rb @@ -2,7 +2,8 @@ # Improved Fibonacci # Time Complexity - I think O(n)? -# Space Complexity - ? (should be O(n)) +# Space Complexity - TThere's an array being created, but it isn't dependent on the length of the array, so I think O(1) + # Hint, you may want a recursive helper method def fibonacci(n) return fib_helper(n, fib_array = [0,1], fib = 2) From 37ca94fa1533a84ca4463fa6ad9d00e29d2a7b95 Mon Sep 17 00:00:00 2001 From: Erika Date: Wed, 20 Nov 2019 10:54:40 -0800 Subject: [PATCH 3/7] One digit superdigit passing --- lib/super_digit.rb | 8 +++++--- test/fibonacci_test.rb | 2 +- test/super_digit_test.rb | 4 ++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/super_digit.rb b/lib/super_digit.rb index 33e367f..8de9612 100644 --- a/lib/super_digit.rb +++ b/lib/super_digit.rb @@ -3,13 +3,15 @@ # Time Complexity - ? # Space Complexity - ? def super_digit(n) - + if n < 10 + return n + end end # Time Complexity - ? # Space Complexity - ? -def refined_super_digit(n, k) +# def refined_super_digit(n, k) -end +# end \ No newline at end of file diff --git a/test/fibonacci_test.rb b/test/fibonacci_test.rb index 639f3b1..e6c2a7b 100644 --- a/test/fibonacci_test.rb +++ b/test/fibonacci_test.rb @@ -1,6 +1,6 @@ require_relative "test_helper" -describe "Fibonacci" do +xdescribe "Fibonacci" do it "will raise an error for n < 0" do expect { # Act diff --git a/test/super_digit_test.rb b/test/super_digit_test.rb index 60da3a1..20973f1 100644 --- a/test/super_digit_test.rb +++ b/test/super_digit_test.rb @@ -1,6 +1,6 @@ require_relative "test_helper" -xdescribe "super_digit" do +describe "super_digit" do it "will return 2 for super_digit(9875)" do # Act answer = super_digit(9875) @@ -33,7 +33,7 @@ expect(answer).must_equal 6 end - describe "refined superdigit" do + xdescribe "refined superdigit" do it "will return 1 for n = 1 and k = 1" do # Act answer = refined_super_digit(1, 1) From 19e3f971772acb6641add1d4d3dbdb20d8dea4ef Mon Sep 17 00:00:00 2001 From: Erika Date: Wed, 20 Nov 2019 11:08:57 -0800 Subject: [PATCH 4/7] Superdigit added and passing --- lib/super_digit.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/super_digit.rb b/lib/super_digit.rb index 8de9612..1b99c65 100644 --- a/lib/super_digit.rb +++ b/lib/super_digit.rb @@ -6,6 +6,9 @@ def super_digit(n) if n < 10 return n end + + + return super_digit(n.digits.sum) end From aad732ad7acfd4b240378af4e613b127adccb82d Mon Sep 17 00:00:00 2001 From: Erika Date: Wed, 20 Nov 2019 11:10:51 -0800 Subject: [PATCH 5/7] Added time and space complexity --- lib/super_digit.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/super_digit.rb b/lib/super_digit.rb index 1b99c65..4e1d791 100644 --- a/lib/super_digit.rb +++ b/lib/super_digit.rb @@ -1,7 +1,7 @@ # Superdigit -# Time Complexity - ? -# Space Complexity - ? +# Time Complexity - O(n) ... It's dependent on the length of the string, but also only by half...so I think still O(n)? +# Space Complexity - I thin O(1) because you're not creating any structures to calculate it def super_digit(n) if n < 10 return n From 6108372a5a498e22b948d7152075052b7be6230c Mon Sep 17 00:00:00 2001 From: Erika Maust Date: Thu, 2 Jul 2020 00:24:21 -0700 Subject: [PATCH 6/7] fibonacci updated --- lib/fibonacci.rb | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/lib/fibonacci.rb b/lib/fibonacci.rb index e97b000..397e3f1 100644 --- a/lib/fibonacci.rb +++ b/lib/fibonacci.rb @@ -1,27 +1,15 @@ -require 'pry' + # Improved Fibonacci -# Time Complexity - I think O(n)? -# Space Complexity - TThere's an array being created, but it isn't dependent on the length of the array, so I think O(1) +# Time Complexity - O(n) +# Space Complexity - O(n) # Hint, you may want a recursive helper method def fibonacci(n) - return fib_helper(n, fib_array = [0,1], fib = 2) -end -def fib_helper(n, fib_array, fib) - if n < 0 - raise ArgumentError - elsif n == 0 || n == 1 - return n - elsif fib == n - return fib_array[1] + fib_array[0] - end + return 1 if n == 1 + return 0 if n == 0 - temp = fib_array[1] - fib_array[1] = fib_array[1] + fib_array[0] - fib_array[0] = temp - - return fib_helper(n, fib_array, fib + 1) + fibonacci(n - 2) + fibonacci(n - 1) + end - From 2f8ca429752bd64577dc68cada9f5c04d59c4c7b Mon Sep 17 00:00:00 2001 From: Erika Maust Date: Fri, 3 Jul 2020 02:11:53 -0700 Subject: [PATCH 7/7] Fixed fibonacci, completed super_digit and refined_super_digit --- lib/fibonacci.rb | 6 ++++-- lib/super_digit.rb | 27 +++++++++++++++------------ 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/lib/fibonacci.rb b/lib/fibonacci.rb index 397e3f1..fbd3b01 100644 --- a/lib/fibonacci.rb +++ b/lib/fibonacci.rb @@ -7,9 +7,11 @@ # Hint, you may want a recursive helper method def fibonacci(n) - return 1 if n == 1 + return 1 if n == 1 || n == 2 return 0 if n == 0 + raise ArgumentError if n < 0 - fibonacci(n - 2) + fibonacci(n - 1) + fibonacci(n - 1) + fibonacci(n - 2) end + diff --git a/lib/super_digit.rb b/lib/super_digit.rb index 4e1d791..64e8c71 100644 --- a/lib/super_digit.rb +++ b/lib/super_digit.rb @@ -1,20 +1,23 @@ # Superdigit -# Time Complexity - O(n) ... It's dependent on the length of the string, but also only by half...so I think still O(n)? -# Space Complexity - I thin O(1) because you're not creating any structures to calculate it +# Time Complexity - O(n) +# Space Complexity - O(n) + def super_digit(n) - if n < 10 - return n - end - - return super_digit(n.digits.sum) + return n if n < 10 + super_digit(n.digits.sum) + end - # Time Complexity - ? # Space Complexity - ? -# def refined_super_digit(n, k) - -# end - \ No newline at end of file +def refined_super_digit(n, k) + + n = n.digits.sum * k + super_digit(n) + +end + + +p refined_super_digit(3212, 4)