From 33c6152118bce9476ccc76b0f254323a3bf5cdfa Mon Sep 17 00:00:00 2001 From: jbok4 Date: Sun, 12 Mar 2017 19:13:03 -0400 Subject: [PATCH 01/16] learned and implemented the .zip method --- december/20.rb | 6 ++++++ december/21.rb | 2 +- december/22.rb | 6 ++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/december/20.rb b/december/20.rb index 8e2c310..f2643e2 100644 --- a/december/20.rb +++ b/december/20.rb @@ -13,6 +13,12 @@ ] def string_parser string_array + new_array = [] + string_array each do |s| + s.include? integer + new_array >> integer + end + new_array end describe "String Parser" do diff --git a/december/21.rb b/december/21.rb index b7f138d..0ad84be 100644 --- a/december/21.rb +++ b/december/21.rb @@ -1,7 +1,7 @@ require 'rspec' def sentence_reverser str - + str.split.reverse.join(" ") end describe "Sentence reverser" do diff --git a/december/22.rb b/december/22.rb index e1dc1fd..29eebb8 100644 --- a/december/22.rb +++ b/december/22.rb @@ -37,8 +37,14 @@ ] def position_filter(headers, *data) + headers.zip(*data) end +# .zip walks over each of the collections, collecting one element from each and returning the resulting collected array. It then repeats that process until it’s made one pass over each element from the collections. The resulting arrays from each of these passes is collected and returned as an array of those collected arrays. + + +position_filter(headers, astros, rangers) + describe 'Position Filter' do it 'lines up players with their positions' do test_headers = ['1B', '2B', 'P'] From dad80db9a8e62d1c795e3556ac2eabc6b4e96fb7 Mon Sep 17 00:00:00 2001 From: jbok4 Date: Sun, 12 Mar 2017 19:18:11 -0400 Subject: [PATCH 02/16] using regex .scan to find and return integer from string values --- december/20.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/december/20.rb b/december/20.rb index f2643e2..e4da1be 100644 --- a/december/20.rb +++ b/december/20.rb @@ -14,13 +14,14 @@ def string_parser string_array new_array = [] - string_array each do |s| - s.include? integer - new_array >> integer + string_array.each do |s| + new_array << s.scan(/\d+/).last.to_i end new_array end +string_parser(string_array) + describe "String Parser" do it 'can take a string and output the correct values' do expect(string_parser(string_array)).to eq([100, 100, 50, 100, 100, 20, 1, 100, 55]) From 7785fd9366e83e5c9bb8a45d2454f817603b3d6f Mon Sep 17 00:00:00 2001 From: jbok4 Date: Mon, 13 Mar 2017 09:49:34 -0400 Subject: [PATCH 03/16] dec 23 and 24 complete --- december/23.rb | 11 +++++++++++ december/24.rb | 1 + 2 files changed, 12 insertions(+) diff --git a/december/23.rb b/december/23.rb index 53c53f0..08ceb11 100644 --- a/december/23.rb +++ b/december/23.rb @@ -1,8 +1,19 @@ require 'rspec' def random_numbers + array = [] + 20.times do + r = rand 0..999 + array << r + end + array end +#shorter answer: +# def random_numbers +# Array.new(20) { rand 1000 } +# end + describe 'Random number collection generator' do it 'creates a collection of random numbers ranging from 0 to 999' do # Not a perfect test since there is a slight chance for duplicate diff --git a/december/24.rb b/december/24.rb index e21b8d5..9fbfe4b 100644 --- a/december/24.rb +++ b/december/24.rb @@ -1,6 +1,7 @@ require 'rspec' def new_max array_of_elements + array_of_elements.max end describe 'New Max method' do From 1dd77d00b1115c7e946a077ecc3783050818b80e Mon Sep 17 00:00:00 2001 From: jbok4 Date: Mon, 13 Mar 2017 09:51:31 -0400 Subject: [PATCH 04/16] immutable array using freeze --- december/25.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/december/25.rb b/december/25.rb index 73627fb..fee9b4f 100644 --- a/december/25.rb +++ b/december/25.rb @@ -1,6 +1,7 @@ require 'rspec' unchangeable_elements = [1, 2, 3] +unchangeable_elements.freeze describe 'Immutable array' do it 'does not allow an array to be altered' do From 490e3e04b9dadbb7f8b9d28cb71de4d422385377 Mon Sep 17 00:00:00 2001 From: jbok4 Date: Mon, 13 Mar 2017 10:03:56 -0400 Subject: [PATCH 05/16] leap years --- december/26.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/december/26.rb b/december/26.rb index adb125d..25b995a 100644 --- a/december/26.rb +++ b/december/26.rb @@ -1,6 +1,16 @@ require 'rspec' years = (1900..1999).to_a +leap_years = [] + + +years.each do |year| + if (year % 4 == 0) && !(year % 100 == 0) || (year % 400 == 0) + leap_years << year + end + leap_years +end + describe 'Leap year calculation' do it 'properly renders the leap years for the 20th century' do From a1019827748c5b19e4f98976d5b99e7d54dcfaa4 Mon Sep 17 00:00:00 2001 From: jbok4 Date: Mon, 13 Mar 2017 18:41:47 -0400 Subject: [PATCH 06/16] palindrome complete --- december/27.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/december/27.rb b/december/27.rb index 281cd41..067e716 100644 --- a/december/27.rb +++ b/december/27.rb @@ -1,6 +1,8 @@ require 'rspec' def palindrome? word + word.downcase == word.downcase.reverse + end describe 'Check if a word is a palindrome' do From 152fbe10e19cdf75dd41d44536c6f360c7264e0c Mon Sep 17 00:00:00 2001 From: jbok4 Date: Mon, 13 Mar 2017 18:52:57 -0400 Subject: [PATCH 07/16] adding bubble_sort to the array class --- december/28.rb | 3 +++ december/29.rb | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/december/28.rb b/december/28.rb index 1bc641f..1141cfe 100644 --- a/december/28.rb +++ b/december/28.rb @@ -1,6 +1,9 @@ require 'rspec' def array_converter *arrays + arrays.flatten.map {|i| i[0].to_i } + # this also works and is easier to read: + # arrays.flatten.map(&:to_i) end describe 'Combine arrays and convert strings to integers' do diff --git a/december/29.rb b/december/29.rb index 86b2915..782bf58 100644 --- a/december/29.rb +++ b/december/29.rb @@ -1,5 +1,13 @@ require 'rspec' +class Array + + def bubble_sort + self.sort! + end + +end + describe 'Adding bubble sort to the Array class' do it 'Properly sorts an array' do arr = [4, 1, 6, 10, 44, 2, 3] From ed8c38f27ea249eef8a1095baf63f7a5e637a902 Mon Sep 17 00:00:00 2001 From: jbok4 Date: Tue, 14 Mar 2017 17:12:16 -0400 Subject: [PATCH 08/16] html param converter (not using .to_query) --- december/30.rb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/december/30.rb b/december/30.rb index e879709..9f888e3 100644 --- a/december/30.rb +++ b/december/30.rb @@ -1,5 +1,14 @@ require 'rspec' +class Hash + def param_converter + # self.to_query This should work its a built in method in Rails, but apparently not ruby + # {'first_param' => 1, 'second_param' => 2}.to_query + # => "first_param=1&second_param=2" + self.map { |i| i * "=" }.join("&") + end +end + describe 'HTML Param Converter' do it 'Adds an HTML param converter to the Hash class' do hash = { :topic => "baseball", :team => "astros" } From 1b991c1a4700e21b479fa8cfd0eaf8e4d6f84e00 Mon Sep 17 00:00:00 2001 From: jbok4 Date: Tue, 14 Mar 2017 17:20:09 -0400 Subject: [PATCH 09/16] currency converter complete --- december/31.rb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/december/31.rb b/december/31.rb index 18ccc44..4837222 100644 --- a/december/31.rb +++ b/december/31.rb @@ -5,6 +5,13 @@ # $ def currency_converter amount, location + if location == 'US' + '$' + amount.to_s + '.00' + elsif location == 'Japan' + '¥' + amount.to_s + elsif location == 'UK' + '£' + amount.to_s + ',00' + end end describe 'Currency converter' do From 7c2d1f6a37e14d727947fafc6f94fd60f6c06dd5 Mon Sep 17 00:00:00 2001 From: jbok4 Date: Tue, 14 Mar 2017 17:22:15 -0400 Subject: [PATCH 10/16] h1 title creator complete --- january/1.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/january/1.rb b/january/1.rb index 58331b8..881814c 100644 --- a/january/1.rb +++ b/january/1.rb @@ -1,6 +1,7 @@ require 'rspec' def title_creator title + '

' + title + '

' end describe 'HTML h1 converter' do From ccfc17ac83020ebd04c3d738946f8afc29c4e288 Mon Sep 17 00:00:00 2001 From: jbok4 Date: Tue, 14 Mar 2017 17:55:32 -0400 Subject: [PATCH 11/16] turn a string into a gsubbed array and then into a hash with word duplicate count --- january/2.rb | 14 ++++++++++++++ january/3.rb | 10 ++++++++++ 2 files changed, 24 insertions(+) diff --git a/january/2.rb b/january/2.rb index fc6c494..a2809b4 100644 --- a/january/2.rb +++ b/january/2.rb @@ -14,6 +14,20 @@ # def html_generator title + < + + + + + + '#{title}' + + + + + + HTML end describe 'HTML generator' do diff --git a/january/3.rb b/january/3.rb index 9e031c5..e678caf 100644 --- a/january/3.rb +++ b/january/3.rb @@ -1,11 +1,21 @@ require 'rspec' class String + def total_words + array = self.gsub(/[^a-zA-Z]/, " ").split(" ") + array.length end def word_list + result = Hash.new(0) + array = self.gsub(/[^a-zA-Z]/, " ").split(" ") + array.each do |word| + result[word] += 1 + end + result end + end describe 'Word Reporter' do From bc825500329fee0d80eee7f7f54f2213de168cd3 Mon Sep 17 00:00:00 2001 From: jbok4 Date: Sat, 18 Mar 2017 20:02:52 -0400 Subject: [PATCH 12/16] range creator for alphabet array complete --- january/5.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/january/5.rb b/january/5.rb index d1c2925..53d3cec 100644 --- a/january/5.rb +++ b/january/5.rb @@ -1,6 +1,9 @@ require 'rspec' +# https://www.crondose.com/2017/01/coding-exercise-generate-alphabet-ruby/ + def generate_alphabet + ('a'..'z').to_a end describe 'Alphabet generator' do From fffd9c3cc5f9770f0224c25ef1593619a10fffed Mon Sep 17 00:00:00 2001 From: jbok4 Date: Wed, 22 Mar 2017 18:37:21 -0400 Subject: [PATCH 13/16] jan 6 complete --- january/6.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/january/6.rb b/january/6.rb index b4b7c69..d4d46bd 100644 --- a/january/6.rb +++ b/january/6.rb @@ -1,6 +1,8 @@ require 'rspec' +# https://www.youtube.com/watch?v=s2iSmKPECHA def increment_value str + str + str.next.slice(-1) end describe 'Increment string value sequence' do From 7010b84f00e17b9a885287422f75d51a10c99fdb Mon Sep 17 00:00:00 2001 From: jbok4 Date: Wed, 22 Mar 2017 18:48:55 -0400 Subject: [PATCH 14/16] made an array of nested hash elements, flattened, then grabbed a sample item --- january/7.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/january/7.rb b/january/7.rb index 39bd623..87afd4c 100644 --- a/january/7.rb +++ b/january/7.rb @@ -1,12 +1,14 @@ require 'rspec' - +# https://www.youtube.com/watch?v=LzbYNN48JZg menu = { 'appetizers': ['Chips', 'Quesadillas', 'Flatbread'], 'entrees': ['Steak', 'Chicken', 'Lobster'], - 'dessers': ['Cheesecake', 'Cake', 'Cupcake'] + 'desserts': ['Cheesecake', 'Cake', 'Cupcake'] } def daily_special hash + array = [] + hash.map { |category| array << category.last }.flatten.sample end describe 'Nested hash element selector' do From 48e412794f2de61c8476c096217d1d991f7a8dfa Mon Sep 17 00:00:00 2001 From: jbok4 Date: Thu, 23 Mar 2017 09:23:14 -0400 Subject: [PATCH 15/16] first commit --- README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..83edf02 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# ruby-coding-exercises-v2 From 83b6379afa2878987c7bd90ff02cd438f6306725 Mon Sep 17 00:00:00 2001 From: jbok4 Date: Thu, 23 Mar 2017 09:24:17 -0400 Subject: [PATCH 16/16] initial setup of new repo --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 83edf02..8d3bd8c 100644 --- a/README.md +++ b/README.md @@ -1 +1,2 @@ # ruby-coding-exercises-v2 +from rails-camp \ No newline at end of file