From ee09dd228cef5ddf064bbab1633c0946f64c3a6b Mon Sep 17 00:00:00 2001 From: Sophia Donan Date: Sun, 8 Nov 2020 16:32:02 -0800 Subject: [PATCH 01/10] Completed Factorial Method --- .idea/.gitignore | 8 +++++ .idea/.rakeTasks | 7 ++++ .idea/inspectionProfiles/Project_Default.xml | 6 ++++ .idea/misc.xml | 4 +++ .idea/modules.xml | 8 +++++ .idea/recursion-writing.iml | 27 +++++++++++++++ .idea/vcs.xml | 6 ++++ Gemfile.lock | 36 ++++++++++++++++++++ lib/recursive-methods.rb | 12 +++++-- 9 files changed, 111 insertions(+), 3 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/.rakeTasks create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/recursion-writing.iml create mode 100644 .idea/vcs.xml create mode 100644 Gemfile.lock diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..73f69e0 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/.rakeTasks b/.idea/.rakeTasks new file mode 100644 index 0000000..f88db1a --- /dev/null +++ b/.idea/.rakeTasks @@ -0,0 +1,7 @@ + + diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..b0db9b0 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..510e7fc --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..8457255 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/recursion-writing.iml b/.idea/recursion-writing.iml new file mode 100644 index 0000000..a1a27da --- /dev/null +++ b/.idea/recursion-writing.iml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..630ea95 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,36 @@ +GEM + remote: https://rubygems.org/ + specs: + ansi (1.5.0) + builder (3.2.4) + coderay (1.1.3) + method_source (1.0.0) + minitest (5.14.2) + minitest-reporters (1.4.2) + ansi + builder + minitest (>= 5.0) + ruby-progressbar + minitest-skip (0.0.3) + minitest (~> 5.0) + minitest-spec (0.0.2.1) + minitest (>= 3.0) + pry (0.13.1) + coderay (~> 1.1) + method_source (~> 1.0) + rake (13.0.1) + ruby-progressbar (1.10.1) + +PLATFORMS + ruby + +DEPENDENCIES + minitest + minitest-reporters + minitest-skip + minitest-spec + pry + rake + +BUNDLED WITH + 2.1.4 diff --git a/lib/recursive-methods.rb b/lib/recursive-methods.rb index fbf6faa..782f43d 100644 --- a/lib/recursive-methods.rb +++ b/lib/recursive-methods.rb @@ -1,9 +1,15 @@ # Authoring recursive algorithms. Add comments including time and space complexity for each method. -# Time complexity: ? -# Space complexity: ? +# Time complexity: O(n) +# Space complexity: O(n) def factorial(n) - raise NotImplementedError, "Method not implemented" + if n == 0 + return 100 + elsif n < 0 + raise ArgumentError + else + return n * factorial(n-1) + end end # Time complexity: ? From c1f668fe6676db889d19256acc7f00a7f7b45c78 Mon Sep 17 00:00:00 2001 From: Sophia Donan Date: Sun, 8 Nov 2020 16:34:35 -0800 Subject: [PATCH 02/10] fixed typo in factorial method --- lib/recursive-methods.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/recursive-methods.rb b/lib/recursive-methods.rb index 782f43d..3ad449b 100644 --- a/lib/recursive-methods.rb +++ b/lib/recursive-methods.rb @@ -4,7 +4,7 @@ # Space complexity: O(n) def factorial(n) if n == 0 - return 100 + return 1 elsif n < 0 raise ArgumentError else From 8dd13ee0610c931b069bb26515296ac3d308741d Mon Sep 17 00:00:00 2001 From: Sophia Donan Date: Sun, 8 Nov 2020 16:41:56 -0800 Subject: [PATCH 03/10] Completed Reverse Method --- lib/recursive-methods.rb | 80 +++++++++++++++++++++------------------- 1 file changed, 42 insertions(+), 38 deletions(-) diff --git a/lib/recursive-methods.rb b/lib/recursive-methods.rb index 3ad449b..b8ecbb3 100644 --- a/lib/recursive-methods.rb +++ b/lib/recursive-methods.rb @@ -12,44 +12,48 @@ def factorial(n) end end -# Time complexity: ? -# Space complexity: ? +# Time complexity: O(n) +# Space complexity: O(n) def reverse(s) - raise NotImplementedError, "Method not implemented" -end - -# Time complexity: ? -# Space complexity: ? -def reverse_inplace(s) - raise NotImplementedError, "Method not implemented" -end - -# Time complexity: ? -# Space complexity: ? -def bunny(n) - raise NotImplementedError, "Method not implemented" -end - -# Time complexity: ? -# Space complexity: ? -def nested(s) - raise NotImplementedError, "Method not implemented" -end - -# Time complexity: ? -# Space complexity: ? -def search(array, value) - raise NotImplementedError, "Method not implemented" -end - -# Time complexity: ? -# Space complexity: ? -def is_palindrome(s) - raise NotImplementedError, "Method not implemented" + if s.length <= 1 + return s + else + return reverse(s[1..-1]) + s[0] + end end -# Time complexity: ? -# Space complexity: ? -def digit_match(n, m) - raise NotImplementedError, "Method not implemented" -end \ No newline at end of file +# # Time complexity: ? +# # Space complexity: ? +# def reverse_inplace(s) +# raise NotImplementedError, "Method not implemented" +# end +# +# # Time complexity: ? +# # Space complexity: ? +# def bunny(n) +# raise NotImplementedError, "Method not implemented" +# end +# +# # Time complexity: ? +# # Space complexity: ? +# def nested(s) +# raise NotImplementedError, "Method not implemented" +# end +# +# # Time complexity: ? +# # Space complexity: ? +# def search(array, value) +# raise NotImplementedError, "Method not implemented" +# end +# +# # Time complexity: ? +# # Space complexity: ? +# def is_palindrome(s) +# raise NotImplementedError, "Method not implemented" +# end +# +# # Time complexity: ? +# # Space complexity: ? +# def digit_match(n, m) +# raise NotImplementedError, "Method not implemented" +# end \ No newline at end of file From a16907b2f973102888a603a5316bdb322619d13b Mon Sep 17 00:00:00 2001 From: Sophia Donan Date: Sun, 8 Nov 2020 16:50:45 -0800 Subject: [PATCH 04/10] Completed Reverse_Inplace --- lib/recursive-methods.rb | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/recursive-methods.rb b/lib/recursive-methods.rb index b8ecbb3..292ff26 100644 --- a/lib/recursive-methods.rb +++ b/lib/recursive-methods.rb @@ -22,11 +22,15 @@ def reverse(s) end end -# # Time complexity: ? -# # Space complexity: ? -# def reverse_inplace(s) -# raise NotImplementedError, "Method not implemented" -# end +# # Time complexity: O(1) +# # Space complexity: O(1) +def reverse_inplace(s) + if s.length <= 1 + return s + else + return s.reverse! + end +end # # # Time complexity: ? # # Space complexity: ? From 445118c6b5e5faee8afca5435862862dd6c9e6a1 Mon Sep 17 00:00:00 2001 From: Sophia Donan Date: Sun, 8 Nov 2020 16:55:48 -0800 Subject: [PATCH 05/10] Completed Bunny Method --- lib/recursive-methods.rb | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/recursive-methods.rb b/lib/recursive-methods.rb index 292ff26..dd50384 100644 --- a/lib/recursive-methods.rb +++ b/lib/recursive-methods.rb @@ -34,9 +34,13 @@ def reverse_inplace(s) # # # Time complexity: ? # # Space complexity: ? -# def bunny(n) -# raise NotImplementedError, "Method not implemented" -# end +def bunny(n) + if n == 0 + return 0 + else + return 2 + bunny(n-1) + end +end # # # Time complexity: ? # # Space complexity: ? From b115bb13358ab272d41e9a021314d416e16efd42 Mon Sep 17 00:00:00 2001 From: Sophia Donan Date: Sun, 8 Nov 2020 16:56:52 -0800 Subject: [PATCH 06/10] added time/space complexity to Bunny --- lib/recursive-methods.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/recursive-methods.rb b/lib/recursive-methods.rb index dd50384..1a74a29 100644 --- a/lib/recursive-methods.rb +++ b/lib/recursive-methods.rb @@ -32,8 +32,8 @@ def reverse_inplace(s) end end # -# # Time complexity: ? -# # Space complexity: ? +# # Time complexity: O(n) +# # Space complexity: O(n) def bunny(n) if n == 0 return 0 From 1ee2c0fd0ecb54c5806459aebcbf1552095d0ced Mon Sep 17 00:00:00 2001 From: Sophia Donan Date: Sun, 8 Nov 2020 17:03:36 -0800 Subject: [PATCH 07/10] completed Nested Method --- lib/recursive-methods.rb | 17 ++++++++++++----- test/recursion_writing_test.rb | 2 +- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/lib/recursive-methods.rb b/lib/recursive-methods.rb index 1a74a29..f041679 100644 --- a/lib/recursive-methods.rb +++ b/lib/recursive-methods.rb @@ -42,11 +42,18 @@ def bunny(n) end end # -# # Time complexity: ? -# # Space complexity: ? -# def nested(s) -# raise NotImplementedError, "Method not implemented" -# end +# # Time complexity: O(n^2) * not sure about this one +# # Space complexity: O(n^2) * same here? +def nested(s) + if s == "" + return true + elsif + s[0] == "(" && s[-1] == ")" + return nested(s[1..-2]) + else + return false + end +end # # # Time complexity: ? # # Space complexity: ? diff --git a/test/recursion_writing_test.rb b/test/recursion_writing_test.rb index 3b30725..ba7bc41 100644 --- a/test/recursion_writing_test.rb +++ b/test/recursion_writing_test.rb @@ -167,7 +167,7 @@ end end -xdescribe "nested" do +describe "nested" do it "will return true for empystring" do # Arrange string = "" From b7a60d3af6928c6490e477b09ef84f5e3bac26ab Mon Sep 17 00:00:00 2001 From: Sophia Donan Date: Sun, 8 Nov 2020 17:07:49 -0800 Subject: [PATCH 08/10] Created Search Method --- lib/recursive-methods.rb | 17 ++++++++++++----- test/recursion_writing_test.rb | 2 +- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/lib/recursive-methods.rb b/lib/recursive-methods.rb index f041679..54d77f4 100644 --- a/lib/recursive-methods.rb +++ b/lib/recursive-methods.rb @@ -55,11 +55,18 @@ def nested(s) end end # -# # Time complexity: ? -# # Space complexity: ? -# def search(array, value) -# raise NotImplementedError, "Method not implemented" -# end +# # Time complexity: O(n) +# # Space complexity: O(n^2) +def search(array, value) + if array.nil? + return false + elsif + array[0] == value + return true + else + return search(array[1..-1], value) + end +end # # # Time complexity: ? # # Space complexity: ? diff --git a/test/recursion_writing_test.rb b/test/recursion_writing_test.rb index ba7bc41..5cf6281 100644 --- a/test/recursion_writing_test.rb +++ b/test/recursion_writing_test.rb @@ -213,7 +213,7 @@ end end -xdescribe "search" do +describe "search" do it "will return false for empty array" do # Arrange item = "a" From 01b69976542144e97b7248e67169cf90ab4c0524 Mon Sep 17 00:00:00 2001 From: Sophia Donan Date: Sun, 8 Nov 2020 17:10:38 -0800 Subject: [PATCH 09/10] completed Is_Palindrome method --- lib/recursive-methods.rb | 16 +++++++++++----- test/recursion_writing_test.rb | 2 +- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/recursive-methods.rb b/lib/recursive-methods.rb index 54d77f4..d3bed8b 100644 --- a/lib/recursive-methods.rb +++ b/lib/recursive-methods.rb @@ -68,11 +68,17 @@ def search(array, value) end end # -# # Time complexity: ? -# # Space complexity: ? -# def is_palindrome(s) -# raise NotImplementedError, "Method not implemented" -# end +# # Time complexity: O(n) +# # Space complexity: O(n) +def is_palindrome(s) + if s.length <= 1 + return true + elsif s[0] != s[-1] + return false + else + return is_palindrome(s[1..-2]) + end +end # # # Time complexity: ? # # Space complexity: ? diff --git a/test/recursion_writing_test.rb b/test/recursion_writing_test.rb index 5cf6281..94dc6cd 100644 --- a/test/recursion_writing_test.rb +++ b/test/recursion_writing_test.rb @@ -263,7 +263,7 @@ end end -xdescribe "is_palindrome" do +describe "is_palindrome" do it "will return true for emptystring" do # Arrange string = "" From d0f3ed7ad2a595ad1287515b4390769dd5b5ecec Mon Sep 17 00:00:00 2001 From: Sophia Donan Date: Sun, 8 Nov 2020 17:14:46 -0800 Subject: [PATCH 10/10] left note on digit_match --- lib/recursive-methods.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/recursive-methods.rb b/lib/recursive-methods.rb index d3bed8b..ea87ebe 100644 --- a/lib/recursive-methods.rb +++ b/lib/recursive-methods.rb @@ -82,6 +82,7 @@ def is_palindrome(s) # # # Time complexity: ? # # Space complexity: ? -# def digit_match(n, m) -# raise NotImplementedError, "Method not implemented" -# end \ No newline at end of file +def digit_match(n, m) + #Not sure how to get started on this one. +end +