From 52047ebec51d7bd9fc040ade8046f99b941c063b Mon Sep 17 00:00:00 2001 From: Alice Date: Mon, 12 Aug 2019 14:44:49 -0700 Subject: [PATCH 1/6] completed wave 1 --- lib/adagrams.rb | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index e69de29..1b21ce6 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -0,0 +1,12 @@ +def draw_letters() + letter_pool = ["A"] * 9 + ["B"] * 2 + ["C"] * 2 + ["D"] * 4 + ["E"] * 12 + ["F"] * 2 + ["G"] * 3 + ["H"] * 2 + ["I"] * 9 + ["J"] + ["K"] + ["L"] * 4 + ["M"] * 2 + ["N"] * 6 + ["O"] * 8 + ["P"] * 2 + ["Q"] + ["R"] * 6 + ["S"] * 4 + ["T"] * 6 + ["U"] * 4 + ["V"] * 2 + ["W"] * 2 + ["X"] + ["Y"] * 2 + ["Z"] + hand = [] + + 10.times do + letter_pool.shuffle! + hand << letter_pool.pop + end + + return hand +end + From 63247a7c54725780225e3de018a60cb7c8da714a Mon Sep 17 00:00:00 2001 From: Alice Date: Mon, 12 Aug 2019 15:28:27 -0700 Subject: [PATCH 2/6] completed wave 2 --- lib/adagrams.rb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index 1b21ce6..01594f5 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -10,3 +10,17 @@ def draw_letters() return hand end +def uses_available_letters?(input, letters_in_hand) + split = input.upcase.split("") + + split.each do |letter| + if letters_in_hand.include? (letter) + letters_in_hand.delete_at(letters_in_hand.index(letter)) + else + return false + end + end + + return true + +end From 37d4a708695e05dafae4e9a6e8b49a826051b0ca Mon Sep 17 00:00:00 2001 From: Alice Date: Mon, 12 Aug 2019 17:02:44 -0700 Subject: [PATCH 3/6] completed wave 4 --- lib/adagrams.rb | 53 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index 01594f5..4182662 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -24,3 +24,56 @@ def uses_available_letters?(input, letters_in_hand) return true end + +def score_word(word) + word_arr = word.upcase.split("") + points = 0 + word_arr.each do |letter| + case letter + when "A", "E", "I", "O", "U", "L", "N", "R", "S", "T" + points += 1 + when "D", "G" + points += 2 + when "B", "C", "M", "P" + points += 3 + when "F", "H", "V", "W", "Y" + points += 4 + when "K" + points += 5 + when "J", "X" + points += 8 + when "Q", "Z" + points += 10 + end + end + + if word_arr.length >= 7 + points += 8 + end + + return points +end + + +#return :word and :score +def highest_score_from(words) + word_score = {} + + words.each do |word| + word_score[word] = score_word(word) + end + + max = word_score.values.max + + winners = word_score.select {|k,v| v == max} + + winners.each do |key, value| + if key.length == 10 + return {key => value} + else + min = winners.min_by {|k,v| k.length} + return {word: min[0], score: min[1]} + end + end + +end \ No newline at end of file From 2d37c76dcbc1f98d916322ff57e17cd1ab67d81e Mon Sep 17 00:00:00 2001 From: Alice Date: Tue, 13 Aug 2019 16:20:21 -0700 Subject: [PATCH 4/6] updated wave 4 --- lib/adagrams.rb | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index 4182662..242b77a 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -12,10 +12,11 @@ def draw_letters() def uses_available_letters?(input, letters_in_hand) split = input.upcase.split("") + copy = letters_in_hand.dup split.each do |letter| - if letters_in_hand.include? (letter) - letters_in_hand.delete_at(letters_in_hand.index(letter)) + if copy.include? (letter) + copy.delete_at(copy.index(letter)) else return false end @@ -54,26 +55,21 @@ def score_word(word) return points end - -#return :word and :score def highest_score_from(words) - word_score = {} + word_score = [] words.each do |word| - word_score[word] = score_word(word) + word_score << { word: word, score: score_word(word) } end - max = word_score.values.max - - winners = word_score.select {|k,v| v == max} + max = word_score.max_by { |element| element[:score] }[:score] + winners = word_score.select { |element| element[:score] == max } + ten_char = winners.select { |element| element[:word].length == 10 } - winners.each do |key, value| - if key.length == 10 - return {key => value} - else - min = winners.min_by {|k,v| k.length} - return {word: min[0], score: min[1]} - end + if ten_char.length > 0 + return ten_char.first + else + min_winners = winners.min_by { |element| element[:word].length } + return min_winners end - end \ No newline at end of file From 11603917629cca5b1ffebc0258fcfdc2912fee39 Mon Sep 17 00:00:00 2001 From: Alice Date: Tue, 13 Aug 2019 16:55:45 -0700 Subject: [PATCH 5/6] completed wave 5, kind of --- lib/adagrams.rb | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index 242b77a..a4d7abc 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -1,7 +1,11 @@ +require 'csv' + def draw_letters() letter_pool = ["A"] * 9 + ["B"] * 2 + ["C"] * 2 + ["D"] * 4 + ["E"] * 12 + ["F"] * 2 + ["G"] * 3 + ["H"] * 2 + ["I"] * 9 + ["J"] + ["K"] + ["L"] * 4 + ["M"] * 2 + ["N"] * 6 + ["O"] * 8 + ["P"] * 2 + ["Q"] + ["R"] * 6 + ["S"] * 4 + ["T"] * 6 + ["U"] * 4 + ["V"] * 2 + ["W"] * 2 + ["X"] + ["Y"] * 2 + ["Z"] hand = [] + # Shuffling once resulted in too many duplicates. + # The program shuffles multiple times. 10.times do letter_pool.shuffle! hand << letter_pool.pop @@ -72,4 +76,15 @@ def highest_score_from(words) min_winners = winners.min_by { |element| element[:word].length } return min_winners end -end \ No newline at end of file +end + +#Only works if you know the absolute file path to the dictionary on your computer. +# def is_in_english_dict?(input) +# dictionary = CSV.read("../assets/dictionary-english.csv") + +# if dictionary.include? [input] +# return true +# else +# return false +# end +# end From 69841a73306d3c8766e09a337961297a51b63ca2 Mon Sep 17 00:00:00 2001 From: Tiffany Chio Date: Wed, 14 Aug 2019 13:45:19 -0700 Subject: [PATCH 6/6] wave 5 works FINALLY --- lib/adagrams.rb | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index a4d7abc..aa8e09c 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -1,23 +1,23 @@ -require 'csv' +require "csv" def draw_letters() letter_pool = ["A"] * 9 + ["B"] * 2 + ["C"] * 2 + ["D"] * 4 + ["E"] * 12 + ["F"] * 2 + ["G"] * 3 + ["H"] * 2 + ["I"] * 9 + ["J"] + ["K"] + ["L"] * 4 + ["M"] * 2 + ["N"] * 6 + ["O"] * 8 + ["P"] * 2 + ["Q"] + ["R"] * 6 + ["S"] * 4 + ["T"] * 6 + ["U"] * 4 + ["V"] * 2 + ["W"] * 2 + ["X"] + ["Y"] * 2 + ["Z"] hand = [] - + # Shuffling once resulted in too many duplicates. # The program shuffles multiple times. 10.times do letter_pool.shuffle! hand << letter_pool.pop end - + return hand end def uses_available_letters?(input, letters_in_hand) split = input.upcase.split("") copy = letters_in_hand.dup - + split.each do |letter| if copy.include? (letter) copy.delete_at(copy.index(letter)) @@ -25,9 +25,8 @@ def uses_available_letters?(input, letters_in_hand) return false end end - + return true - end def score_word(word) @@ -51,25 +50,25 @@ def score_word(word) points += 10 end end - + if word_arr.length >= 7 points += 8 end - + return points end def highest_score_from(words) word_score = [] - + words.each do |word| word_score << { word: word, score: score_word(word) } end - + max = word_score.max_by { |element| element[:score] }[:score] winners = word_score.select { |element| element[:score] == max } ten_char = winners.select { |element| element[:word].length == 10 } - + if ten_char.length > 0 return ten_char.first else @@ -78,13 +77,12 @@ def highest_score_from(words) end end -#Only works if you know the absolute file path to the dictionary on your computer. -# def is_in_english_dict?(input) -# dictionary = CSV.read("../assets/dictionary-english.csv") +def is_in_english_dict?(input) + dictionary = CSV.read("assets/dictionary-english.csv") -# if dictionary.include? [input] -# return true -# else -# return false -# end -# end + if dictionary.include? [input] + return true + else + return false + end +end