From 548872eafd91b87d3b2a45d2d5f62b17a4dc3248 Mon Sep 17 00:00:00 2001
From: dora1405
Date: Sat, 28 Mar 2020 21:33:59 -0700
Subject: [PATCH 1/3] passed tests for max_subarray
---
lib/max_subarray.rb | 27 ++++++++++++++++++++++++---
lib/newman_conway.rb | 22 +++++++++++++++++++++-
test/max_sub_array_test.rb | 2 +-
test/newman_conway_test.rb | 2 +-
4 files changed, 47 insertions(+), 6 deletions(-)
diff --git a/lib/max_subarray.rb b/lib/max_subarray.rb
index 5204edb..cd83d6e 100644
--- a/lib/max_subarray.rb
+++ b/lib/max_subarray.rb
@@ -1,8 +1,29 @@
-# Time Complexity: ?
-# Space Complexity: ?
+# Time Complexity: O(n)
+# Space Complexity: O(1)
def max_sub_array(nums)
return 0 if nums == nil
+ return nums[0] if nums.length == 1
+
+ max = nums[0]
+ current_sum = nums[0]
+
+ i = 1
+
+ while i < nums.length
+ if nums[i] > current_sum + nums[i]
+ current_sum = nums[i]
+ else
+ current_sum += nums[i]
+ end
+
+ if max < current_sum
+ max = current_sum
+ end
+
+ i += 1
+ end
+
+ return max
- raise NotImplementedError, "Method not implemented yet!"
end
diff --git a/lib/newman_conway.rb b/lib/newman_conway.rb
index 4c985cd..3a7eb29 100644
--- a/lib/newman_conway.rb
+++ b/lib/newman_conway.rb
@@ -3,5 +3,25 @@
# Time complexity: ?
# Space Complexity: ?
def newman_conway(num)
- raise NotImplementedError, "newman_conway isn't implemented"
+ raise ArgumentError if num < 1
+
+ return num.to_s if num == 1
+
+ answer = []
+
+ one_previous = 1
+ two_previous = 1
+ n = 2
+
+ while n < num
+ temp = one_previous + two_previous
+ answer << temp
+ two_previous = one_previous
+ one_previous = temp
+ n += 1
+ end
+
+ return answer.join(" ")
+
+
end
\ No newline at end of file
diff --git a/test/max_sub_array_test.rb b/test/max_sub_array_test.rb
index 3253cdf..e27e1ca 100644
--- a/test/max_sub_array_test.rb
+++ b/test/max_sub_array_test.rb
@@ -1,6 +1,6 @@
require_relative "test_helper"
-xdescribe "max subarray" do
+describe "max subarray" do
it "will work for [-2,1,-3,4,-1,2,1,-5,4]" do
# Arrange
input = [-2,1,-3,4,-1,2,1,-5,4]
diff --git a/test/newman_conway_test.rb b/test/newman_conway_test.rb
index 537d376..6a42001 100644
--- a/test/newman_conway_test.rb
+++ b/test/newman_conway_test.rb
@@ -1,6 +1,6 @@
require_relative "test_helper"
-describe "Newman Conway Tests" do
+xdescribe "Newman Conway Tests" do
it "works with 13" do
# Arrange
input = 13
From 8ef214d1f72d973195e6d35653a910b60f9b6e40 Mon Sep 17 00:00:00 2001
From: dora1405
Date: Sat, 28 Mar 2020 22:14:34 -0700
Subject: [PATCH 2/3] passing tests for newman_conway
---
lib/max_subarray.rb | 1 +
lib/newman_conway.rb | 27 +++++++++++++--------------
test/newman_conway_test.rb | 2 +-
3 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/lib/max_subarray.rb b/lib/max_subarray.rb
index cd83d6e..70ed8ca 100644
--- a/lib/max_subarray.rb
+++ b/lib/max_subarray.rb
@@ -8,6 +8,7 @@ def max_sub_array(nums)
max = nums[0]
current_sum = nums[0]
+ # start at num[1] because max and current_sum already set at num[0]
i = 1
while i < nums.length
diff --git a/lib/newman_conway.rb b/lib/newman_conway.rb
index 3a7eb29..0cae3fb 100644
--- a/lib/newman_conway.rb
+++ b/lib/newman_conway.rb
@@ -1,27 +1,26 @@
-# Time complexity: ?
-# Space Complexity: ?
+# Time complexity: O(n)
+# Space Complexity: O(n) because I have an array that is being returned as a string. Array and String both have O(n) space complexity
def newman_conway(num)
raise ArgumentError if num < 1
- return num.to_s if num == 1
-
- answer = []
+ return "1" if num == 1
+
+ sequence = [1, 1]
+
+ return sequence.join(" ") if num == 2
- one_previous = 1
- two_previous = 1
- n = 2
+ # Not sure why it has to start as [0,1,1]? But it works, so.....yeah.
+ array = [0, 1, 1]
+ n = 3
- while n < num
- temp = one_previous + two_previous
- answer << temp
- two_previous = one_previous
- one_previous = temp
+ while n <= num
+ sequence << array[n] = array[array[n - 1]] + array[n - array[n-1]]
n += 1
end
- return answer.join(" ")
+ return sequence.join(" ")
end
\ No newline at end of file
diff --git a/test/newman_conway_test.rb b/test/newman_conway_test.rb
index 6a42001..537d376 100644
--- a/test/newman_conway_test.rb
+++ b/test/newman_conway_test.rb
@@ -1,6 +1,6 @@
require_relative "test_helper"
-xdescribe "Newman Conway Tests" do
+describe "Newman Conway Tests" do
it "works with 13" do
# Arrange
input = 13
From b88fb51846a60ef3a181a3965a9e30ebccccead1 Mon Sep 17 00:00:00 2001
From: dora1405
Date: Sat, 28 Mar 2020 23:03:54 -0700
Subject: [PATCH 3/3] edit base cases
---
lib/newman_conway.rb | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/lib/newman_conway.rb b/lib/newman_conway.rb
index 0cae3fb..9e52e08 100644
--- a/lib/newman_conway.rb
+++ b/lib/newman_conway.rb
@@ -5,10 +5,8 @@
def newman_conway(num)
raise ArgumentError if num < 1
- return "1" if num == 1
-
sequence = [1, 1]
-
+ return sequence[1].to_s if num == 1
return sequence.join(" ") if num == 2
# Not sure why it has to start as [0,1,1]? But it works, so.....yeah.