From 4a41bc7153d44eb160ac7c08e4c5622f604c3297 Mon Sep 17 00:00:00 2001 From: r-spiel Date: Wed, 16 Sep 2020 10:24:23 -0700 Subject: [PATCH 1/3] wave 1 & wave 2 draw letters & use avail letters --- .floo | 3 +++ .flooignore | 6 ++++++ lib/adagrams.rb | 43 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 .floo create mode 100644 .flooignore diff --git a/.floo b/.floo new file mode 100644 index 0000000..1dc9840 --- /dev/null +++ b/.floo @@ -0,0 +1,3 @@ +{ + "url": "https://floobits.com/r_spiel/adagrams " +} \ No newline at end of file diff --git a/.flooignore b/.flooignore new file mode 100644 index 0000000..ed824d3 --- /dev/null +++ b/.flooignore @@ -0,0 +1,6 @@ +extern +node_modules +tmp +vendor +.idea/workspace.xml +.idea/misc.xml diff --git a/lib/adagrams.rb b/lib/adagrams.rb index e69de29..4033ad3 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -0,0 +1,43 @@ +#wave 1 + +def draw_letters + letters_pool = [] + + letter_quantity = {"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": 2, "U": 4, "V": 2, "W": 2, "X": 1, "Y": 2, "Z": 1} + + letter_quantity.each do |letter, qty| + qty.times do + letters_pool << letter.to_s + end + end + + #p letters_pool + drawn_letters = letters_pool.sample(10) + return drawn_letters +end + +#wave 2 +def uses_available_letters?(input, letters_in_hand) + valid_letter = nil + input_as_array = input.upcase.split("") + + hand = letters_in_hand + + input_as_array.each do |letter| + if hand.include?(letter) + #p letter + index = hand.index(letter) + hand.delete_at(index) + #p letters_in_hand + + valid_letter = true + else + hand = letters_in_hand #trying to reset the hand + puts "false value #{letter}" + valid_letter = false + #should add a break here? + end + end + return valid_letter +end + From 3de153668eb6e548dce508fa0f01f8b9c0a1724b Mon Sep 17 00:00:00 2001 From: r-spiel Date: Thu, 17 Sep 2020 16:20:23 -0700 Subject: [PATCH 2/3] richelle and mackenzie wave 4 method --- lib/adagrams.rb | 119 ++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 105 insertions(+), 14 deletions(-) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index 4033ad3..36605b5 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -1,5 +1,4 @@ #wave 1 - def draw_letters letters_pool = [] @@ -15,29 +14,121 @@ def draw_letters drawn_letters = letters_pool.sample(10) return drawn_letters end - +############################################# #wave 2 +# attempt with simpler version 3pm +# def uses_available_letters?(user_word, letters_in_hand) +# +# user_word_array = user_word.split("") +# hand = letters_in_hand.dup +# +# valid_word = nil +# +# user_word_array.each do |letter| +# if hand.include?(letter) +# valid_word = true +# index = hand.index(letter) #returns the index # from hand for that letter +# hand.delete_at(index) #deleted only at the one index so that it would not delete all instances of the letter +# +# else +# valid_word = false +# end +# +# end +# +# return valid_word #returns true or false +# end + +# edits post 11:40 am def uses_available_letters?(input, letters_in_hand) - valid_letter = nil + valid_word = nil input_as_array = input.upcase.split("") - - hand = letters_in_hand + hand = letters_in_hand.dup + letters_boolean = [] input_as_array.each do |letter| if hand.include?(letter) - #p letter index = hand.index(letter) hand.delete_at(index) - #p letters_in_hand - - valid_letter = true + letters_boolean << true else - hand = letters_in_hand #trying to reset the hand - puts "false value #{letter}" - valid_letter = false - #should add a break here? + letters_boolean << false + end + end + + if letters_boolean.include?(false) + valid_word = false + else + valid_word = true + end + + return valid_word +end +################################################## +#wave 3 +def score_word(word) + score = 0 + word_array = word.upcase.split("") + + word_array.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 - return valid_letter + + if word_array.length >= 7 && word_array.length <=10 + score += 8 + end + + return score end +################################################ +#wave 4 +def highest_score_from(words) + array_of_words = [] + + words.each do |word| + array_of_words << { + word: word, + score: score_word(word), + length: word.length + } + end + + highest_scoring_word = array_of_words.max_by{ |word| word[:score].to_i} + + ties = [] + ties = array_of_words.select {|word| word[:score] == highest_scoring_word[:score]} #an array of hashes of the ties + + winner = [] + + ties.each do |word_hash| + if word_hash[:length] == 10 + winner << word_hash + end + end + + if winner.empty? + winner << ties.min_by{ |word_hash| word_hash[:length].to_i } + end + winning_word = {} + + winning_word[:word] = winner[0][:word] + winning_word[:score] = winner[0][:score] + + return winning_word +end From 1651b8489575bfcedeec0baafccb22ba5019f6d3 Mon Sep 17 00:00:00 2001 From: r-spiel Date: Fri, 18 Sep 2020 15:21:22 -0700 Subject: [PATCH 3/3] move comments --- lib/adagrams.rb | 52 +++++++++++++++++++++++++------------------------ 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index 36605b5..b007046 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -14,32 +14,9 @@ def draw_letters drawn_letters = letters_pool.sample(10) return drawn_letters end -############################################# -#wave 2 -# attempt with simpler version 3pm -# def uses_available_letters?(user_word, letters_in_hand) -# -# user_word_array = user_word.split("") -# hand = letters_in_hand.dup -# -# valid_word = nil -# -# user_word_array.each do |letter| -# if hand.include?(letter) -# valid_word = true -# index = hand.index(letter) #returns the index # from hand for that letter -# hand.delete_at(index) #deleted only at the one index so that it would not delete all instances of the letter -# -# else -# valid_word = false -# end -# -# end -# -# return valid_word #returns true or false -# end -# edits post 11:40 am +################################################## +#Wave 2 def uses_available_letters?(input, letters_in_hand) valid_word = nil input_as_array = input.upcase.split("") @@ -132,3 +109,28 @@ def highest_score_from(words) return winning_word end + +############################################# +#wave 2 +# attempt with simpler version 3pm +# def uses_available_letters?(user_word, letters_in_hand) +# +# user_word_array = user_word.split("") +# hand = letters_in_hand.dup +# +# valid_word = nil +# +# user_word_array.each do |letter| +# if hand.include?(letter) +# valid_word = true +# index = hand.index(letter) #returns the index # from hand for that letter +# hand.delete_at(index) #deleted only at the one index so that it would not delete all instances of the letter +# +# else +# valid_word = false +# end +# +# end +# +# return valid_word #returns true or false +# end \ No newline at end of file