From f445aa2004e7f6b86a7067c9afbc194d90edfbf3 Mon Sep 17 00:00:00 2001 From: Kelly Downes Date: Tue, 19 Feb 2019 15:42:10 -0800 Subject: [PATCH 01/11] Create letter distribution --- wave-1-game.rb | 42 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/wave-1-game.rb b/wave-1-game.rb index 159f620..4a835c1 100644 --- a/wave-1-game.rb +++ b/wave-1-game.rb @@ -1,13 +1,51 @@ -require_relative 'lib/adagrams' +require_relative "lib/adagrams" def display_welcome_message puts "Welcome to Adagrams!" puts "Let's draw 10 letters from the letter pool..." end +def make_letter_pool(arr, letter, frequency) + frequency.times do + arr.push(letter) + end +end + +letter_distribution = [] + +make_letter_pool(letter_distribution, "A", 9) +make_letter_pool(letter_distribution, "B", 2) +make_letter_pool(letter_distribution, "C", 2) +make_letter_pool(letter_distribution, "D", 4) +make_letter_pool(letter_distribution, "E", 12) +make_letter_pool(letter_distribution, "F", 2) +make_letter_pool(letter_distribution, "G", 3) +make_letter_pool(letter_distribution, "H", 2) +make_letter_pool(letter_distribution, "I", 9) +make_letter_pool(letter_distribution, "J", 1) +make_letter_pool(letter_distribution, "K", 1) +make_letter_pool(letter_distribution, "L", 4) +make_letter_pool(letter_distribution, "M", 2) +make_letter_pool(letter_distribution, "N", 6) +make_letter_pool(letter_distribution, "O", 8) +make_letter_pool(letter_distribution, "P", 2) +make_letter_pool(letter_distribution, "Q", 1) +make_letter_pool(letter_distribution, "R", 6) +make_letter_pool(letter_distribution, "S", 4) +make_letter_pool(letter_distribution, "T", 6) +make_letter_pool(letter_distribution, "U", 4) +make_letter_pool(letter_distribution, "V", 2) +make_letter_pool(letter_distribution, "W", 2) +make_letter_pool(letter_distribution, "X", 1) +make_letter_pool(letter_distribution, "Y", 2) +make_letter_pool(letter_distribution, "Z", 1) + +def draw_letters +end + def display_drawn_letters(letters) puts "You have drawn the letters:" - puts letters.join(', ') + puts letters.join(", ") end def run_game From 192a0b15d417f93955cb59580c431a0332292491 Mon Sep 17 00:00:00 2001 From: Kelly Downes Date: Tue, 19 Feb 2019 16:37:23 -0800 Subject: [PATCH 02/11] Created method to draw letters --- lib/adagrams.rb | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ wave-1-game.rb | 38 -------------------------------------- 2 files changed, 49 insertions(+), 38 deletions(-) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index e69de29..4a67b50 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -0,0 +1,49 @@ + +def make_letter_pool(arr, letter, frequency) + frequency.times do + arr.push(letter) + end + return arr +end + +def draw_letters + user_hand = [] + curr_letter = "" + letter_pool = [] + letter_pool = make_letter_pool(letter_pool, "A", 9) + letter_pool = make_letter_pool(letter_pool, "B", 2) + letter_pool = make_letter_pool(letter_pool, "C", 2) + letter_pool = make_letter_pool(letter_pool, "D", 4) + letter_pool = make_letter_pool(letter_pool, "E", 12) + letter_pool = make_letter_pool(letter_pool, "F", 2) + letter_pool = make_letter_pool(letter_pool, "G", 3) + letter_pool = make_letter_pool(letter_pool, "H", 2) + letter_pool = make_letter_pool(letter_pool, "I", 9) + letter_pool = make_letter_pool(letter_pool, "J", 1) + letter_pool = make_letter_pool(letter_pool, "K", 1) + letter_pool = make_letter_pool(letter_pool, "L", 4) + letter_pool = make_letter_pool(letter_pool, "M", 2) + letter_pool = make_letter_pool(letter_pool, "N", 6) + letter_pool = make_letter_pool(letter_pool, "O", 8) + letter_pool = make_letter_pool(letter_pool, "P", 2) + letter_pool = make_letter_pool(letter_pool, "Q", 1) + letter_pool = make_letter_pool(letter_pool, "R", 6) + letter_pool = make_letter_pool(letter_pool, "S", 4) + letter_pool = make_letter_pool(letter_pool, "T", 6) + letter_pool = make_letter_pool(letter_pool, "U", 4) + letter_pool = make_letter_pool(letter_pool, "V", 2) + letter_pool = make_letter_pool(letter_pool, "W", 2) + letter_pool = make_letter_pool(letter_pool, "X", 1) + letter_pool = make_letter_pool(letter_pool, "Y", 2) + letter_pool = make_letter_pool(letter_pool, "Z", 1) + + available_letters = [] + available_letters = letter_pool.dup + + 10.times do + curr_letter = letter_pool.sample + user_hand.push(curr_letter) + available_letters.delete(curr_letter) + end + return user_hand +end diff --git a/wave-1-game.rb b/wave-1-game.rb index 4a835c1..d48a36c 100644 --- a/wave-1-game.rb +++ b/wave-1-game.rb @@ -5,44 +5,6 @@ def display_welcome_message puts "Let's draw 10 letters from the letter pool..." end -def make_letter_pool(arr, letter, frequency) - frequency.times do - arr.push(letter) - end -end - -letter_distribution = [] - -make_letter_pool(letter_distribution, "A", 9) -make_letter_pool(letter_distribution, "B", 2) -make_letter_pool(letter_distribution, "C", 2) -make_letter_pool(letter_distribution, "D", 4) -make_letter_pool(letter_distribution, "E", 12) -make_letter_pool(letter_distribution, "F", 2) -make_letter_pool(letter_distribution, "G", 3) -make_letter_pool(letter_distribution, "H", 2) -make_letter_pool(letter_distribution, "I", 9) -make_letter_pool(letter_distribution, "J", 1) -make_letter_pool(letter_distribution, "K", 1) -make_letter_pool(letter_distribution, "L", 4) -make_letter_pool(letter_distribution, "M", 2) -make_letter_pool(letter_distribution, "N", 6) -make_letter_pool(letter_distribution, "O", 8) -make_letter_pool(letter_distribution, "P", 2) -make_letter_pool(letter_distribution, "Q", 1) -make_letter_pool(letter_distribution, "R", 6) -make_letter_pool(letter_distribution, "S", 4) -make_letter_pool(letter_distribution, "T", 6) -make_letter_pool(letter_distribution, "U", 4) -make_letter_pool(letter_distribution, "V", 2) -make_letter_pool(letter_distribution, "W", 2) -make_letter_pool(letter_distribution, "X", 1) -make_letter_pool(letter_distribution, "Y", 2) -make_letter_pool(letter_distribution, "Z", 1) - -def draw_letters -end - def display_drawn_letters(letters) puts "You have drawn the letters:" puts letters.join(", ") From bd810b340b4a880d93cdefb2edc9e3b1390fdbee Mon Sep 17 00:00:00 2001 From: Kelly Downes Date: Wed, 20 Feb 2019 15:57:19 -0800 Subject: [PATCH 03/11] Add uses_available_letters method --- lib/adagrams.rb | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index 4a67b50..4f31461 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -47,3 +47,15 @@ def draw_letters end return user_hand end + +def uses_available_letters?(input, letters_in_hand) + input_letters = input.chars + input_letters.each do |letter| + if letters_in_hand.include?(letter) + letters_in_hand.delete(letter) + else + return false + end + end + return true +end From ecb776f4f57df4d8372ee2309832fc2b6c05935b Mon Sep 17 00:00:00 2001 From: Pauline Sauget Date: Wed, 20 Feb 2019 16:15:05 -0800 Subject: [PATCH 04/11] Create score_word method --- lib/adagrams.rb | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index 4f31461..ccb9fd6 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -59,3 +59,31 @@ def uses_available_letters?(input, letters_in_hand) end return true end + +def score_word (word) + score = 0 + word = word.downcase + split_word = word.chars + split_word.each do |letter| + case letter + when "a", "e", "i", "o", "u", "l", "n", "r", "s", "t" + score += 1 + when "d", "g" + score += 2 + when "b", "c", "m", "p" + score += 3 + when "f", "h", "v", "w", "y" + score += 4 + when "k" + score += 5 + when "j", "x" + score += 8 + when "q", "z" + score += 10 + end + end + if word.length >= 7 && word.length <= 10 + score += 8 + end + return score +end \ No newline at end of file From 69bfade410f0a6f447017d212636a45b1bf7bc6c Mon Sep 17 00:00:00 2001 From: Pauline Sauget Date: Wed, 20 Feb 2019 16:40:51 -0800 Subject: [PATCH 05/11] highest_score without tie --- lib/adagrams.rb | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index ccb9fd6..a7308c0 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -60,7 +60,7 @@ def uses_available_letters?(input, letters_in_hand) return true end -def score_word (word) +def score_word(word) score = 0 word = word.downcase split_word = word.chars @@ -86,4 +86,16 @@ def score_word (word) score += 8 end return score +end + +def highest_score_from(words) + scored_words = [] + highest_scored_word = 0 + words.each do |word| + scored_words << {:word => word, :score => score_word(word)} + end +highest_scored_word = scored_words.max_by do |scored_words| + scored_words[:score] +end +return highest_scored_word end \ No newline at end of file From 208bbc1d566d5aa2d4be81379b81bf2336f1e848 Mon Sep 17 00:00:00 2001 From: Kelly Downes Date: Thu, 21 Feb 2019 16:44:29 -0800 Subject: [PATCH 06/11] Handled tie cases --- lib/adagrams.rb | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index a7308c0..057825f 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -94,8 +94,32 @@ def highest_score_from(words) words.each do |word| scored_words << {:word => word, :score => score_word(word)} end -highest_scored_word = scored_words.max_by do |scored_words| - scored_words[:score] + highest_scored_word = scored_words.max_by do |scored_words| + scored_words[:score] + end + highest_score = highest_scored_word[:score] + + highest_score_array = [] + + scored_words.each do |word| + if word[:score] == highest_score + highest_score_array.push(word) + end + end + + if highest_score_array.length > 1 + highest_scored_word = highest_score_array.min_by { |words| words[:word].length } + same_length = [] + highest_score_array.each do |word| + if word[:word].length == 10 + highest_scored_word = word + if word[:word].length == highest_scored_word[:word].length + same_length.push(word) + highest_scored_word = same_length.first + end + end + end + end + + return highest_scored_word end -return highest_scored_word -end \ No newline at end of file From 9395294b3531758db3c43262dfbddb1b160fb198 Mon Sep 17 00:00:00 2001 From: Kelly Downes Date: Thu, 21 Feb 2019 16:47:00 -0800 Subject: [PATCH 07/11] Change spacing --- lib/adagrams.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index 057825f..2ddc1ef 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -94,13 +94,13 @@ def highest_score_from(words) words.each do |word| scored_words << {:word => word, :score => score_word(word)} end + highest_scored_word = scored_words.max_by do |scored_words| scored_words[:score] end - highest_score = highest_scored_word[:score] + highest_score = highest_scored_word[:score] highest_score_array = [] - scored_words.each do |word| if word[:score] == highest_score highest_score_array.push(word) From 8339eba85484d5f2971cab896fe09378198f8317 Mon Sep 17 00:00:00 2001 From: Pauline Sauget Date: Thu, 21 Feb 2019 17:22:09 -0800 Subject: [PATCH 08/11] Added dictionary check --- lib/adagrams.rb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index 2ddc1ef..c019830 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -1,3 +1,4 @@ +require 'csv' def make_letter_pool(arr, letter, frequency) frequency.times do @@ -123,3 +124,9 @@ def highest_score_from(words) return highest_scored_word end + + +def is_in_english_dict?(input) + dictionary = CSV.read("assets/dictionary-english.csv", headers: true) + return dictionary.any? {|input| input} ? true : false +end \ No newline at end of file From 4485c17a365ee6c9768b345346f852b1b1e3c338 Mon Sep 17 00:00:00 2001 From: Pauline Sauget Date: Fri, 22 Feb 2019 13:49:17 -0800 Subject: [PATCH 09/11] Added test for dictionary check --- specs/adagrams_spec.rb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/specs/adagrams_spec.rb b/specs/adagrams_spec.rb index ae2ccd0..70a43b8 100644 --- a/specs/adagrams_spec.rb +++ b/specs/adagrams_spec.rb @@ -168,4 +168,18 @@ expect(best_word[:score]).must_equal 18 end end + + describe 'is_in_english_dict?' do + it 'returns true if word is in dictionary' do + word = 'apple' + + expect(is_in_english_dict?(word)).must_equal true + end + + it 'returns false if word is not in dictionary' do + word = 'iasdjpoasdjias' + + expect(is_in_english_dict?(word)).must_equal false + end + end end From abdf3fde0849c5d81153675cfa023e822a113a10 Mon Sep 17 00:00:00 2001 From: Kelly Downes Date: Fri, 22 Feb 2019 14:51:31 -0800 Subject: [PATCH 10/11] Revised dictionary checker --- lib/adagrams.rb | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index c019830..f10ea42 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -1,4 +1,4 @@ -require 'csv' +require "csv" def make_letter_pool(arr, letter, frequency) frequency.times do @@ -125,8 +125,11 @@ def highest_score_from(words) return highest_scored_word end - def is_in_english_dict?(input) - dictionary = CSV.read("assets/dictionary-english.csv", headers: true) - return dictionary.any? {|input| input} ? true : false -end \ No newline at end of file + dictionary = CSV.read("assets/dictionary-english.csv", headers: true).to_a.flatten + if dictionary.any?(input) + return true + else + return false + end +end From 9d5121e4099674900452accfd31b852fe4f23ec1 Mon Sep 17 00:00:00 2001 From: Kelly Downes Date: Fri, 22 Feb 2019 15:02:25 -0800 Subject: [PATCH 11/11] Change formatting --- lib/adagrams.rb | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index f10ea42..7342d58 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -127,9 +127,5 @@ def highest_score_from(words) def is_in_english_dict?(input) dictionary = CSV.read("assets/dictionary-english.csv", headers: true).to_a.flatten - if dictionary.any?(input) - return true - else - return false - end + return dictionary.any?(input) ? true : false end