From 23d99fd809ad3a5e368ed44da22bb6abc05d015c Mon Sep 17 00:00:00 2001 From: Brianna Kemp Date: Thu, 19 Sep 2019 13:27:26 -0700 Subject: [PATCH 1/8] Updated sort_by_length test file name so that it runs with rake --- test/{sort_by_length.rb => sort_by_length_test.rb} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename test/{sort_by_length.rb => sort_by_length_test.rb} (100%) diff --git a/test/sort_by_length.rb b/test/sort_by_length_test.rb similarity index 100% rename from test/sort_by_length.rb rename to test/sort_by_length_test.rb From 28e3bfa1d3fe845aa9fedaf1467a8f3a67e6881c Mon Sep 17 00:00:00 2001 From: Brianna Kemp Date: Fri, 27 Sep 2019 22:54:28 -0700 Subject: [PATCH 2/8] Initial wave 1 implemented, still needs refactoring/error handling --- lib/sort_by_length.rb | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/lib/sort_by_length.rb b/lib/sort_by_length.rb index a5713ad..65d6b36 100644 --- a/lib/sort_by_length.rb +++ b/lib/sort_by_length.rb @@ -1,7 +1,20 @@ # A method which will return an array of the words in the string # sorted by the length of the word. -# Time complexity: ? -# Space complexity: ? +# Time complexity: n^2 +# Space complexity: O(1=n) def sort_by_length(my_sentence) - raise NotImplementedError, "Method not implemented" -end + my_sorted_array = [] + my_array = my_sentence.split + + until my_array.length == 0 do + current_word = my_array[0] + my_array.each do |word| + if word.length < current_word.length + current_word = word + end + end + my_sorted_array.push(current_word) + my_array.delete(current_word) + end + return my_sorted_array +end \ No newline at end of file From 6b9c49bf773156970f02b4533a4427ef25e0298c Mon Sep 17 00:00:00 2001 From: Brianna Kemp Date: Fri, 27 Sep 2019 22:55:28 -0700 Subject: [PATCH 3/8] error handling added --- lib/sort_by_length.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/sort_by_length.rb b/lib/sort_by_length.rb index 65d6b36..5859599 100644 --- a/lib/sort_by_length.rb +++ b/lib/sort_by_length.rb @@ -3,6 +3,8 @@ # Time complexity: n^2 # Space complexity: O(1=n) def sort_by_length(my_sentence) + return nil if my_sentence.nil? + my_sorted_array = [] my_array = my_sentence.split From 7d7f7e61fd92d74d9028f328246bf7b2be0ef9bf Mon Sep 17 00:00:00 2001 From: Brianna Kemp Date: Fri, 27 Sep 2019 22:56:31 -0700 Subject: [PATCH 4/8] typo in space complexity corrected --- lib/sort_by_length.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/sort_by_length.rb b/lib/sort_by_length.rb index 5859599..c20a232 100644 --- a/lib/sort_by_length.rb +++ b/lib/sort_by_length.rb @@ -1,7 +1,7 @@ # A method which will return an array of the words in the string # sorted by the length of the word. # Time complexity: n^2 -# Space complexity: O(1=n) +# Space complexity: O(n) def sort_by_length(my_sentence) return nil if my_sentence.nil? From 2aed41629c301bd6e40afc04fa653a258d5751aa Mon Sep 17 00:00:00 2001 From: Brianna Kemp Date: Fri, 27 Sep 2019 23:00:21 -0700 Subject: [PATCH 5/8] typo in time complexity corrected --- lib/sort_by_length.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/sort_by_length.rb b/lib/sort_by_length.rb index c20a232..fa42b16 100644 --- a/lib/sort_by_length.rb +++ b/lib/sort_by_length.rb @@ -1,6 +1,6 @@ # A method which will return an array of the words in the string # sorted by the length of the word. -# Time complexity: n^2 +# Time complexity: O(n^2) # Space complexity: O(n) def sort_by_length(my_sentence) return nil if my_sentence.nil? From ae3fd8131c88bf2412dbba90384ed698b7c8fb5f Mon Sep 17 00:00:00 2001 From: Brianna Kemp Date: Fri, 27 Sep 2019 23:33:15 -0700 Subject: [PATCH 6/8] Wave 2 version implemented, tests not passing --- lib/reverse_sentence.rb | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/reverse_sentence.rb b/lib/reverse_sentence.rb index 3fe7cac..2e010d4 100644 --- a/lib/reverse_sentence.rb +++ b/lib/reverse_sentence.rb @@ -2,5 +2,19 @@ # Time complexity: ? # Space complexity: ? def reverse_sentence(my_sentence) - raise NotImplementedError + return nil if my_sentence.nil? + i = 0 + my_array = my_sentence.split + length = my_array.length + + while i < my_array.length/2 do + temp = my_array[i] + my_array[i] = my_array[length - 1 - i] + my_array[length - 1 - i] = temp + i += 1 + end + my_sentence = my_array.join(" ") + return my_sentence end + +p reverse_sentence("Yoda is awesome!") \ No newline at end of file From 140edf6bba87f452ed81a144b96f14b11eaeeb34 Mon Sep 17 00:00:00 2001 From: Brianna Kemp Date: Sun, 29 Sep 2019 09:06:41 -0700 Subject: [PATCH 7/8] Wave 2 implemented --- lib/reverse_sentence.rb | 51 +++++++++++++++++++++++++++++++++-------- 1 file changed, 42 insertions(+), 9 deletions(-) diff --git a/lib/reverse_sentence.rb b/lib/reverse_sentence.rb index 2e010d4..da69c2d 100644 --- a/lib/reverse_sentence.rb +++ b/lib/reverse_sentence.rb @@ -1,19 +1,52 @@ # A method to reverse the words in a sentence, in place. -# Time complexity: ? -# Space complexity: ? +# Time complexity: O(n + m) - +# Reverse_Sentence +# - 1st while loop: O(.5n) where n is the number of letters +# - 2nd while loop: O(n) where n is the number of letters +# Reverse +# - O(m): where m is the number o words +# Space complexity: O(1) + +def reverse(text, text_start, text_end) + i = 0 + ((text_end - text_start)/2).times do + temp_char = text[text_start + i] + text[text_start + i] = text[text_end - i - 1] + text[text_end - i - 1] = temp_char + i += 1 + end + return text +end + + def reverse_sentence(my_sentence) return nil if my_sentence.nil? i = 0 - my_array = my_sentence.split - length = my_array.length + length = my_sentence.length - while i < my_array.length/2 do - temp = my_array[i] - my_array[i] = my_array[length - 1 - i] - my_array[length - 1 - i] = temp + end_char = length - 1 + while i < my_sentence.length/2 do + temp = my_sentence[i] + my_sentence[i] = my_sentence[length - 1 - i] + my_sentence[length - 1 - i] = temp i += 1 end - my_sentence = my_array.join(" ") + + letter = 0 + while letter < my_sentence.length do + while my_sentence[letter] == " " + letter += 1 + end + start_index = letter + + while my_sentence[letter] != " " && letter < my_sentence.length + letter += 1 + end + end_index = letter + + reverse(my_sentence, start_index, end_index) + end + return my_sentence end From 4b9b791a9acd71d9f6ecadc8a9e08c0d597e3867 Mon Sep 17 00:00:00 2001 From: Brianna Kemp Date: Sun, 29 Sep 2019 12:56:47 -0700 Subject: [PATCH 8/8] Minor variable name changes for wave 2 --- lib/reverse_sentence.rb | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/lib/reverse_sentence.rb b/lib/reverse_sentence.rb index da69c2d..b8a24e0 100644 --- a/lib/reverse_sentence.rb +++ b/lib/reverse_sentence.rb @@ -4,7 +4,7 @@ # - 1st while loop: O(.5n) where n is the number of letters # - 2nd while loop: O(n) where n is the number of letters # Reverse -# - O(m): where m is the number o words +# - O(m): where m is the number of words # Space complexity: O(1) def reverse(text, text_start, text_end) @@ -15,21 +15,20 @@ def reverse(text, text_start, text_end) text[text_end - i - 1] = temp_char i += 1 end - return text end def reverse_sentence(my_sentence) return nil if my_sentence.nil? - i = 0 + letter = 0 length = my_sentence.length end_char = length - 1 - while i < my_sentence.length/2 do - temp = my_sentence[i] - my_sentence[i] = my_sentence[length - 1 - i] - my_sentence[length - 1 - i] = temp - i += 1 + while letter < my_sentence.length/2 do + temp_char = my_sentence[letter] + my_sentence[letter] = my_sentence[length - 1 - letter] + my_sentence[length - 1 - letter] = temp_char + letter += 1 end letter = 0 @@ -48,6 +47,4 @@ def reverse_sentence(my_sentence) end return my_sentence -end - -p reverse_sentence("Yoda is awesome!") \ No newline at end of file +end \ No newline at end of file