From a0722e07514bf512ce1704131c8ea0bf5bd9e3e1 Mon Sep 17 00:00:00 2001 From: Hannah Date: Wed, 12 Feb 2020 14:37:16 -0800 Subject: [PATCH 1/9] Updated wave-1 --- lib/adagrams.rb | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index e69de29..87fc6c4 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -0,0 +1,15 @@ +# Added feature for Wave 1 here: +def draw_letters + letter_pool = { + A: 9, B: 2, C: 2, D: 4, E: 12, F: 2, G: 3, H: 2, I: 9, J: 1,K: 1, L: 4, M: 2, N: 6, O: 8, P: 2, Q: 1, R: 6, S: 4, T: 6, U: 4, V: 2, W: 2, X: 1, Y: 2, Z: 1 + } + + hand = [] + letter_pool.each do |letter, quantity| + quantity.times do |i| + hand << letter.to_s + end + end + + return hand.sample(10) +end \ No newline at end of file From 3dc6e171388fa1b2d97cd7297b237a74c3f3bc01 Mon Sep 17 00:00:00 2001 From: Hannah Date: Wed, 12 Feb 2020 14:38:57 -0800 Subject: [PATCH 2/9] Updated wave-2 --- lib/adagrams.rb | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index 87fc6c4..32c5c14 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -12,4 +12,25 @@ def draw_letters end return hand.sample(10) +end + + +# Added feature for Wave 2 here: +def uses_available_letters?(input, letters_in_hand) + + # edge case + return false if input.length > 10 || input.length < 1 + + temp_array = letters_in_hand.clone + + input.upcase! + user_input_array = input.split("") + + user_input_array.each do |letter, i| + return false if !temp_array.include?(letter) + + # Delete a letter that was used from + temp_array.delete(letter) + end + return true end \ No newline at end of file From ebeb1a14091e6830b4a7d0b2f0d268f91c651fef Mon Sep 17 00:00:00 2001 From: Hannah Date: Wed, 12 Feb 2020 14:40:15 -0800 Subject: [PATCH 3/9] Uploaded wave three. --- lib/adagrams.rb | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index 32c5c14..e42ce59 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -33,4 +33,30 @@ def uses_available_letters?(input, letters_in_hand) temp_array.delete(letter) end return true +end + + +# Added feature for Wave 3 here: +def score_word(word) + points = { + ["A", "E", "I", "O", "U", "L", "N", "R", "S", "T"] => 1, + ["D", "G"] => 2, + ["B", "C", "M", "P"] => 3, + ["F", "H", "V", "W", "Y"] => 4, + ["K"] => 5, + ["J", "X"] => 8, + ["Q", "Z"] => 10 + } + + score = 0 + score += 8 if (word.length > 6) && (word.length < 11) + + user_input_array = word.upcase.split("") + + user_input_array.each do |letter| + points.each do |score_chart, point| + score += point if score_chart.include?(letter) + end + end + return score end \ No newline at end of file From d265df5e3558283df64b95418571f7ab90bd4ea9 Mon Sep 17 00:00:00 2001 From: Hannah Date: Wed, 12 Feb 2020 14:41:14 -0800 Subject: [PATCH 4/9] Uploaded wave four. --- lib/adagrams.rb | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index e42ce59..915e4f4 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -59,4 +59,32 @@ def score_word(word) end end return score -end \ No newline at end of file +end + + +# Added feature for Wave 4 here: + +def highest_score_from(words) + contestants = {} + + words.each do |word| + contestants[word] = score_word(word) + end + + winning_word = {word: "", score: 0} + contestants.each do |word, score| + if score > winning_word[:score] + winning_word = {word: word, score: score} + elsif score == winning_word[:score] + if winning_word[:word].length == 10 + next + elsif word.length == 10 + winning_word = {word: word, score: score} + elsif word.length < winning_word[:word].length + winning_word = {word: word, score: score} + end + end + + end + return winning_word +end \ No newline at end of file From b9cba26a4e00d082274df28feddb0198c82a5970 Mon Sep 17 00:00:00 2001 From: Hannah Date: Wed, 12 Feb 2020 14:42:28 -0800 Subject: [PATCH 5/9] Uploaded wave five. --- lib/adagrams.rb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index 915e4f4..0edf5d9 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -1,3 +1,5 @@ +require 'csv' + # Added feature for Wave 1 here: def draw_letters letter_pool = { @@ -87,4 +89,16 @@ def highest_score_from(words) end return winning_word +end + + +# Added feature for Wave 5 here: + +def is_in_english_dict?(input) + input.downcase! + + dictionary = CSV.read("assets/dictionary-english.csv") + dictionary = dictionary.flatten + + dictionary.include?(input) ? true : false end \ No newline at end of file From 96072a1c97c66359a9f8544fdcf69e5006399862 Mon Sep 17 00:00:00 2001 From: Hannah Date: Wed, 12 Feb 2020 15:06:17 -0800 Subject: [PATCH 6/9] Added in map for enumerable mixin. --- lib/adagrams.rb | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index 0edf5d9..642a0ae 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -67,11 +67,7 @@ def score_word(word) # Added feature for Wave 4 here: def highest_score_from(words) - contestants = {} - - words.each do |word| - contestants[word] = score_word(word) - end + contestants = words.map{ |word| [word, score_word(word)] }.to_h winning_word = {word: "", score: 0} contestants.each do |word, score| From 3e1346c6ff4464668d6799fcd34d1b259ffcd6f5 Mon Sep 17 00:00:00 2001 From: Hannah Date: Thu, 13 Feb 2020 15:04:10 -0800 Subject: [PATCH 7/9] Improved variable names. --- lib/adagrams.rb | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index 642a0ae..5781046 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -23,16 +23,16 @@ def uses_available_letters?(input, letters_in_hand) # edge case return false if input.length > 10 || input.length < 1 - temp_array = letters_in_hand.clone + temp_in_hand = letters_in_hand.clone input.upcase! - user_input_array = input.split("") + tile_split = input.split("") - user_input_array.each do |letter, i| - return false if !temp_array.include?(letter) + tile_split.each do |letter, i| + return false if !temp_in_hand.include?(letter) - # Delete a letter that was used from - temp_array.delete(letter) + # Delete a letter that was used from + temp_in_hand.delete(letter) end return true end @@ -53,9 +53,9 @@ def score_word(word) score = 0 score += 8 if (word.length > 6) && (word.length < 11) - user_input_array = word.upcase.split("") + tile_split = word.upcase.split("") - user_input_array.each do |letter| + tile_split.each do |letter| points.each do |score_chart, point| score += point if score_chart.include?(letter) end @@ -65,11 +65,11 @@ def score_word(word) # Added feature for Wave 4 here: - def highest_score_from(words) contestants = words.map{ |word| [word, score_word(word)] }.to_h winning_word = {word: "", score: 0} + contestants.each do |word, score| if score > winning_word[:score] winning_word = {word: word, score: score} @@ -81,15 +81,13 @@ def highest_score_from(words) elsif word.length < winning_word[:word].length winning_word = {word: word, score: score} end - end - + end end return winning_word end # Added feature for Wave 5 here: - def is_in_english_dict?(input) input.downcase! From 0d8e81e016d4d3cc7bed2517f3d54d304bc676f3 Mon Sep 17 00:00:00 2001 From: Hannah Date: Thu, 13 Feb 2020 16:05:22 -0800 Subject: [PATCH 8/9] Uploaded test cases for is_in_english_dict? method --- test/adagrams_test.rb | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/test/adagrams_test.rb b/test/adagrams_test.rb index 90ec44d..bcd72be 100644 --- a/test/adagrams_test.rb +++ b/test/adagrams_test.rb @@ -179,3 +179,18 @@ end end end + +describe 'is_in_english_dict? method' do + + it 'if word in dictionary' do + word = 'test' + + expect(is_in_english_dict?(word)).must_equal true + end + + it 'if word not in dictionary' do + word = 'swir' + + expect(is_in_english_dict?(word)).must_equal false + end +end \ No newline at end of file From 24a846d16f1673e3f6dab673c55b72b35a8f282e Mon Sep 17 00:00:00 2001 From: Hannah Date: Thu, 13 Feb 2020 16:08:00 -0800 Subject: [PATCH 9/9] Caught bugs. Healed bugs for Wave 2. --- lib/adagrams.rb | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index 5781046..1df5363 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -19,20 +19,18 @@ def draw_letters # Added feature for Wave 2 here: def uses_available_letters?(input, letters_in_hand) - # edge case return false if input.length > 10 || input.length < 1 temp_in_hand = letters_in_hand.clone input.upcase! - tile_split = input.split("") + tile_split = input.split("") - tile_split.each do |letter, i| + tile_split.each do |letter| return false if !temp_in_hand.include?(letter) - - # Delete a letter that was used from - temp_in_hand.delete(letter) + + temp_in_hand.delete_at(temp_in_hand.index(letter)) end return true end @@ -95,4 +93,4 @@ def is_in_english_dict?(input) dictionary = dictionary.flatten dictionary.include?(input) ? true : false -end \ No newline at end of file +end