From 5929e24b6c7a9976520f99e26a59bb3bef19ded0 Mon Sep 17 00:00:00 2001 From: Sara Nilsen Date: Thu, 13 Feb 2020 08:56:46 -0800 Subject: [PATCH 1/5] wave 2 is ready yeahhhhhh --- wave-1-game.rb | 30 +++++++++++++++++++++++++----- wave-2-game.rb | 34 ++++++++++++++++++++++++++++++---- 2 files changed, 55 insertions(+), 9 deletions(-) diff --git a/wave-1-game.rb b/wave-1-game.rb index 159f620..87c50b8 100644 --- a/wave-1-game.rb +++ b/wave-1-game.rb @@ -10,9 +10,29 @@ def display_drawn_letters(letters) puts letters.join(', ') end -def run_game - display_welcome_message - display_drawn_letters(draw_letters) -end - +def draw_letters + all_letters = {"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} + + letter_bank = [] + all_letters.each do |letter, n| + n.times do + letter_bank << letter.to_s + end + end + hand_letters = letter_bank.sample(10) + return hand_letters + + end + + + def run_game + display_welcome_message + display_drawn_letters(draw_letters) + end run_game + +#we need a way to store the letters + + + + \ No newline at end of file diff --git a/wave-2-game.rb b/wave-2-game.rb index 18745b7..17477a2 100644 --- a/wave-2-game.rb +++ b/wave-2-game.rb @@ -1,7 +1,6 @@ -require_relative 'lib/adagrams' - def display_welcome_message puts "Welcome to Adagrams!" + puts "Let's draw 10 letters from the letter pool..." end def display_drawn_letters(letters) @@ -9,6 +8,19 @@ def display_drawn_letters(letters) puts letters.join(', ') end +def draw_letters +all_letters = {"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} + + letter_pool = [] + all_letters.each do |letter, n| + n.times do + letter_pool << letter.to_s + end + end + hand_letters = letter_pool.sample(10) + return hand_letters +end + def display_game_instructions puts "Please input a word that only uses the letters from the letter bank" end @@ -22,6 +34,20 @@ def display_score(score) puts "Your submitted anagram scored #{score} points" end +def uses_available_letters?(input, letters_in_hand) + word = input.split(//) + letter_bank = letters_in_hand.dup + count_letters = 0 + + word.each do |l| + if letter_bank.include?(l) + count_letters += 1 + letter_bank.delete_at(letter_bank.index(l)) + end + end + return word.length == count_letters ? true : false +end + def display_retry_instructions puts "Should we play another round?" puts "Enter y to replay" @@ -32,7 +58,7 @@ def display_goodbye_message end def get_user_input - gets.chomp + gets.chomp.upcase end def run_game @@ -62,4 +88,4 @@ def run_game display_goodbye_message end -run_game +run_game \ No newline at end of file From 21b05ce605a678507f750eb1dd4a21867a704394 Mon Sep 17 00:00:00 2001 From: Sara Nilsen Date: Thu, 13 Feb 2020 09:39:38 -0800 Subject: [PATCH 2/5] wave 2 is ready --- lib/adagrams.rb | 91 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index e69de29..17477a2 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -0,0 +1,91 @@ +def display_welcome_message + puts "Welcome to Adagrams!" + puts "Let's draw 10 letters from the letter pool..." +end + +def display_drawn_letters(letters) + puts "You have drawn the letters:" + puts letters.join(', ') +end + +def draw_letters +all_letters = {"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} + + letter_pool = [] + all_letters.each do |letter, n| + n.times do + letter_pool << letter.to_s + end + end + hand_letters = letter_pool.sample(10) + return hand_letters +end + +def display_game_instructions + puts "Please input a word that only uses the letters from the letter bank" +end + +def display_needs_valid_input_message + puts "You entered in a word that contains characters not in the letter bank" + display_game_instructions +end + +def display_score(score) + puts "Your submitted anagram scored #{score} points" +end + +def uses_available_letters?(input, letters_in_hand) + word = input.split(//) + letter_bank = letters_in_hand.dup + count_letters = 0 + + word.each do |l| + if letter_bank.include?(l) + count_letters += 1 + letter_bank.delete_at(letter_bank.index(l)) + end + end + return word.length == count_letters ? true : false +end + +def display_retry_instructions + puts "Should we play another round?" + puts "Enter y to replay" +end + +def display_goodbye_message + puts "Thanks for playing Adagrams!" +end + +def get_user_input + gets.chomp.upcase +end + +def run_game + display_welcome_message + + should_continue = true + + while should_continue + puts "Let's draw 10 letters from the letter pool..." + + letter_bank = draw_letters + display_drawn_letters(letter_bank) + + display_game_instructions + + user_input_word = get_user_input + + while ( !(uses_available_letters?(user_input_word, letter_bank)) ) + display_needs_valid_input_message + user_input_word = get_user_input + end + + display_retry_instructions + should_continue = get_user_input == "y" + end + + display_goodbye_message +end + +run_game \ No newline at end of file From 1fc543924d34602d9bf00913dfdf7657ad0e4a20 Mon Sep 17 00:00:00 2001 From: Halahaddad1 Date: Thu, 13 Feb 2020 14:50:31 -0800 Subject: [PATCH 3/5] added wave 3 --- lib/adagrams.rb | 51 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index 17477a2..c097a67 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -84,8 +84,55 @@ def run_game display_retry_instructions should_continue = get_user_input == "y" end - + return user_input_word display_goodbye_message end -run_game \ No newline at end of file +string1 = run_game + +def score_word(string) +letters = string.split(//) +upcase_letters = letters.map(&:upcase) +print upcase_letters +score_pool = {["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} +#puts score_pool + +arr=[] +score_pool.each do |k,v| + #print " k #{k}" + upcase_letters.each do |l| if k.include?(l) + arr.push score_pool.values_at(k) + end + + end +end + +print "print arr #{arr} " +#score_pool.map {|k,v| if } +final_score = arr + +score = final_score.transpose.map{|arr| arr.inject{|sum, element| sum+element}} + +if string.length >=7 && string.length <=10 +score[0] += 8 +end + +return score[0] +end + + +score = score_word(string1) + +puts "score is: #{score}" + +#wave 4 + +# def highest_score_from(arr) +# word_score ={} +# arr.each do |item| +# word_score.push word=>item +# end +# puts word_score +# end + + From 7f43c590832d9851842222f61fb3fd00960a7c6f Mon Sep 17 00:00:00 2001 From: Sara Nilsen Date: Thu, 13 Feb 2020 23:36:19 -0800 Subject: [PATCH 4/5] wave 1, 2 and 3 passed the test --- lib/adagrams.rb | 97 ++++++++++++++++++++----------------------------- 1 file changed, 40 insertions(+), 57 deletions(-) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index c097a67..7bc6c59 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -9,14 +9,12 @@ def display_drawn_letters(letters) end def draw_letters -all_letters = {"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} - + all_letters = {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} + letter_pool = [] - all_letters.each do |letter, n| - n.times do - letter_pool << letter.to_s - end - end + all_letters.each do |letter,count| + letter_pool.concat(Array.new(count) { letter.to_s }) + end hand_letters = letter_pool.sample(10) return hand_letters end @@ -35,19 +33,38 @@ def display_score(score) end def uses_available_letters?(input, letters_in_hand) - word = input.split(//) - letter_bank = letters_in_hand.dup - count_letters = 0 - - word.each do |l| + letter_bank = letters_in_hand.dup + + input.split(//).each do |l| if letter_bank.include?(l) - count_letters += 1 letter_bank.delete_at(letter_bank.index(l)) + else + return false end end - return word.length == count_letters ? true : false + return true end +def score_word(word) + + letters = word.upcase.split(//) + score_pool = {["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 + + letters.each do |l| + score_pool.each do |array, points| + if array.include?(l) + score += points + end + end + end + if letters.size >=7 && letters.size <=10 + score += 8 + end + return score +end + def display_retry_instructions puts "Should we play another round?" puts "Enter y to replay" @@ -62,6 +79,8 @@ def get_user_input end def run_game + played_words = [] + display_welcome_message should_continue = true @@ -81,58 +100,22 @@ def run_game user_input_word = get_user_input end + score = score_word(user_input_word) + played_words << user_input_word + + display_score(score) + display_retry_instructions should_continue = get_user_input == "y" end - return user_input_word - display_goodbye_message -end - -string1 = run_game - -def score_word(string) -letters = string.split(//) -upcase_letters = letters.map(&:upcase) -print upcase_letters -score_pool = {["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} -#puts score_pool - -arr=[] -score_pool.each do |k,v| - #print " k #{k}" - upcase_letters.each do |l| if k.include?(l) - arr.push score_pool.values_at(k) - end - end + display_highest_score(highest_score_from(played_words)) + display_goodbye_message end - -print "print arr #{arr} " -#score_pool.map {|k,v| if } -final_score = arr -score = final_score.transpose.map{|arr| arr.inject{|sum, element| sum+element}} -if string.length >=7 && string.length <=10 -score[0] += 8 -end -return score[0] -end -score = score_word(string1) -puts "score is: #{score}" -#wave 4 - -# def highest_score_from(arr) -# word_score ={} -# arr.each do |item| -# word_score.push word=>item -# end -# puts word_score -# end - - From 07bdc6791911a552441e8e06633e25148f4f944b Mon Sep 17 00:00:00 2001 From: Sara Nilsen <59151616+sarabrandao21@users.noreply.github.com> Date: Fri, 14 Feb 2020 15:40:24 -0800 Subject: [PATCH 5/5] Create sara_hala_space.rb --- sara_hala_space.rb | 90 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 sara_hala_space.rb diff --git a/sara_hala_space.rb b/sara_hala_space.rb new file mode 100644 index 0000000..acad7af --- /dev/null +++ b/sara_hala_space.rb @@ -0,0 +1,90 @@ +#WAVE 1 +def draw_letters + all_letters = { 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} + + letter_pool = [] + all_letters.each do |letter,count| + letter_pool.concat(Array.new(count) { letter.to_s }) + end + hand_letters = letter_pool.sample(10) + return hand_letters +end + +#WAVE 2 +def uses_available_letters?(input, letters_in_hand) + letter_bank = letters_in_hand.dup + + input.split(//).each do |l| + if letter_bank.include?(l) + letter_bank.delete_at(letter_bank.index(l)) + else + return false + end + end + return true +end + +#WAVE 3 +def score_word(word) + + letters = word.upcase.split(//) + score_pool = {["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 + + letters.each do |l| + score_pool.each do |array, points| + if array.include?(l) + score += points + end + end + end + if letters.size >=7 && letters.size <=10 + score += 8 + end + return score +end + +#WAVE 4 +def highest_score_from(arr) + word_score ={} + arr.each do |item| + word_score[item] = score_word(item) + end + sorted_hash = word_score.sort_by{|k, v| -v}.to_h + + highest_score = sorted_hash.values.max + sorted_hash.delete_if{|k,v| v != highest_score} + if sorted_hash.size > 1 + if sorted_hash.any? {|key, value| key.length == 10 } + sorted_hash.delete_if { |k,v| k.length != 10 } + sorted_hash.delete_if { |k,v| k != sorted_hash.keys[0] } + elsif + shortest_hash = sorted_hash.keys.sort_by {|k, v| k.length} + shortest_word = shortest_hash[0] + score_of_winningword = sorted_hash.values_at(shortest_hash) + sorted_hash.delete_if { |k,v| k != shortest_word } + end + end + winning_score = {} + winning_score[:word] = sorted_hash.keys[0] + winning_score[:score] = sorted_hash.values[0] + return winning_score +end + +#WAVE 5 +def is_in_english_dict?(input) + word = false + CSV.foreach("../assets/dictionary-english.csv") do |record| + if record.include?(input.downcase) + word = true + end + end + return word +end + + + + + +