From 1f468f94ac86eb4689ad12da0a502dcc2bf2804f Mon Sep 17 00:00:00 2001 From: Sharon Date: Wed, 12 Feb 2020 14:36:55 -0800 Subject: [PATCH 01/13] Wave 1 & wave 2 added --- .DS_Store | Bin 0 -> 8196 bytes lib/.DS_Store | Bin 0 -> 6148 bytes lib/adagrams.rb | 68 ++++++++++++++++++++++++++++++++++++++++++++++++ test/.DS_Store | Bin 0 -> 6148 bytes 4 files changed, 68 insertions(+) create mode 100644 .DS_Store create mode 100644 lib/.DS_Store create mode 100644 test/.DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..4d158da56051410fa9ce79b771e5aff81c5e9bcb GIT binary patch literal 8196 zcmeHMO>Wab6n@i$;-mtyKx&p=fW#tHN!qkR2q}bg(FGDB2o``^yKx( za0oa65=Y?#9E1bF_hv?s^G8-t1oNVqZ#?t98RvUrJI^5^(HOKVL`5R9P#6mvs1_KH zbD6U>-BSPx@QGsT9|X~{8$|A$x9Knn7zK<1MggOMQQ&V-0MBeTYsqt8jhfmhU=;W- z72x}Wjlx*hm?)ID4pcG)0A|rG4Q);bm}6_KYfKbk1SS*}sHj4x7(&s}Z)?B0#zdi_ zlhDbB&?^g_p$NG;=C`FgiMm2l8wHF4^9u0gvQ7^5@$qKzcOJWsa_5IMN#39n_<7VO z7p!ACqb=%EJC*e_>&pzwq7L~K^8AbZ#paBEh64Dz)3b^Xi@n@o|6IRu`0Abqem^dk zzlpU>_R9KI%gS5%Yx&o$PBd)APCV#0oZd@5dg8<#SGS)ve%ph~s~3LQj)skB5Vrero|YQ0tellQEEGqhYOPkXtGoBcC402DS1#E*+q>g& z&f2_Pd2n#lee-toZv6fuz6wm}yBXb3$CLUKT3UpQRxb>q@RZ$AEP4vz&k%wWNEDDa zBhq*Hqyv_N|2{pWCOrl&3Koa>b1KAHgvmpo;^~=XP#60Bs{xn@F%yF8G(-q4Aktl` zpq%2Ui=!>-&Fxv<*=f_P)FUrU1rtAwCp_rg{0m&SFGZY>f?`@rG+`uoz^2KOpV}?yw~DmAnK0 zVYPl)tkzmbA9qW?+L^HhOqhAh+4`<0tj`mcQ8T0hsX!`_3Zw%6S^?H<*?8iZF%?J! zQh|d4Iv*-s*aAC8J31J2eb@X*C}Z2+62uz)7T7s*hE|+PbZUtwMsYgFYvi@S&e7>8 zwlmj>olCq>itWzvYUwD=F=Hx_3iK5?_wH2n|DOKC`@c`hUMi3Z{3!*>X#O~#@t2~u w4t`Fxw$h*IU&dTZXXsr5*ik9IJj$zTGp_}9jz;IW(TRBxkS=Mdz;7t92SxoTtpET3 literal 0 HcmV?d00001 diff --git a/lib/adagrams.rb b/lib/adagrams.rb index e69de29..23db070 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -0,0 +1,68 @@ +$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 +} + +def draw_letters + hand = Array.new(10) + all_letters = $letters.keys + hand.length.times do |i| + x = rand(0..$letters.keys.length - 1) + letter = all_letters[x] + while hand.count(letter) >= $letters[letter] + x = rand(0..$letters.keys.length - 1) + letter = all_letters[x] + end + hand[i] = letter + end + hand = hand.map {|e| e.to_s} + puts hand + return hand +end + +def uses_available_letters?(input, letters_in_hand) + word = input.upcase.chars + word_letters = Array.new + letters_in_hand.each do |n| + if word.include? n + word_letters << n + end + end + p word_letters + if word.sort == word_letters.sort + return true + end + return false +end + + +def score_word(word) + word.chars.each do |letter| + + + end +end \ No newline at end of file diff --git a/test/.DS_Store b/test/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..0998afe57654ef5f6fb84d8244b7bbc600254587 GIT binary patch literal 6148 zcmeHKyH3ME5S)V)k!V~}UP*;SO>>GuLCpsMCWs~|QV6{}K0BFxfUumj6lhl39pB#0 zojirt3!p4MS2sWhU`{v0mxZa>zWKz?GE<0jp0UL<-tmD)>?YO66UObxTG8J|{8yf{ z!!>jL{d)7#uQ$Ed0=LAgz1#6am6ZZgKnh3!DIf(-Dqy{rHopi|lmb#f3j8Qw--k*! zY>7jle>xa^1R&0scH^_p62xi=VoMwXnW2@S5`$WD#3(^$zGhuZ90G%m;y3f0yt(9r zQv7!2tCyp+Kt(Aa1;z@T$Fj5je@8zt|Bp#pNdYPFuM{Y=<->BpSIXWxc{%H~mHtHk qHr9GMgSTR$w_+}=6<_|UtM<(OmN*1Doq4Ad^&?=q$fUquC~yFD4INnk literal 0 HcmV?d00001 From 161013f0da36ec619ab3bffaa4b84e024d3bafac Mon Sep 17 00:00:00 2001 From: Sharon Date: Wed, 12 Feb 2020 15:14:33 -0800 Subject: [PATCH 02/13] working on wave 3 --- lib/adagrams.rb | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index 23db070..0bc35cf 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -61,8 +61,30 @@ def uses_available_letters?(input, letters_in_hand) def score_word(word) + word = word.upcase + score = 0 word.chars.each do |letter| - - - end -end \ No newline at end of file + case letter + 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", "K" + score += 8 + when "Q", "Z" + score += 10 + else + score += 1 + end +end +if word.chars.length > 6 + score += 8 +end +return score +end + +puts score_word("POOL") \ No newline at end of file From ca6afb670fe686e0524556615daf1861d352bc53 Mon Sep 17 00:00:00 2001 From: Yaz Date: Wed, 12 Feb 2020 15:24:15 -0800 Subject: [PATCH 03/13] formatted score_word, fixed X case error --- lib/adagrams.rb | 43 +++++++++++++++++++++---------------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index 0bc35cf..beff610 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -63,28 +63,27 @@ def uses_available_letters?(input, letters_in_hand) def score_word(word) word = word.upcase score = 0 - word.chars.each do |letter| - case letter - 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", "K" - score += 8 - when "Q", "Z" - score += 10 - else - score += 1 + if word.chars.length > 6 + score += 8 end -end -if word.chars.length > 6 - score += 8 -end -return score + word.chars.each do |letter| + case letter + 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 + else + score += 1 + end + end + return score end -puts score_word("POOL") \ No newline at end of file From f234e05ed6f58e7e93b2f6d093e96ef98cf3e700 Mon Sep 17 00:00:00 2001 From: Sharon Date: Wed, 12 Feb 2020 15:50:47 -0800 Subject: [PATCH 04/13] modifying wave 4 --- lib/adagrams.rb | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index beff610..4f113b1 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -87,3 +87,28 @@ def score_word(word) return score end +def highest_score_from(words) + win = {} + win_word = " " + win_score = 0 + words.each_with_index do |word, index| + current_score = score_word(word) + if current_score == win_score + if win_word.length == word.length + # no change + elsif word.length == 10 + win_word = word + elsif word.length < win_word.length + win_word = word + end + elsif current_score > win_score + win_score = current_score + win_word = word + end + end + win[:word] = win_word + win[:score] = win_score + return win +end + + \ No newline at end of file From 6df8067d4e06a6e98fb6d75407407adaaf604c5e Mon Sep 17 00:00:00 2001 From: Yaz Date: Wed, 12 Feb 2020 16:03:35 -0800 Subject: [PATCH 05/13] Completed wave 4, reformatted. --- lib/adagrams.rb | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index 4f113b1..858b5ac 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -88,27 +88,25 @@ def score_word(word) end def highest_score_from(words) - win = {} - win_word = " " - win_score = 0 - words.each_with_index do |word, index| - current_score = score_word(word) + win_word = "" + win_score = 0 + words.each do |word| + current_score = score_word(word) if current_score == win_score - if win_word.length == word.length + if win_word.length == word.length || win_word.length == 10 # no change - elsif word.length == 10 - win_word = word - elsif word.length < win_word.length - win_word = word + elsif word.length == 10 || word.length < win_word.length + win_word = word end elsif current_score > win_score win_score = current_score win_word = word end - end - win[:word] = win_word - win[:score] = win_score - return win + end + return { + word: win_word, + score: win_score + } end \ No newline at end of file From 442dc13514429a1c5165f7304c8d33fb34528d23 Mon Sep 17 00:00:00 2001 From: Sharon Date: Thu, 13 Feb 2020 15:08:34 -0800 Subject: [PATCH 06/13] Changing the use_available_letter? method --- .DS_Store | Bin 8196 -> 8196 bytes lib/adagrams.rb | 17 ++++++----------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/.DS_Store b/.DS_Store index 4d158da56051410fa9ce79b771e5aff81c5e9bcb..8c0fe99aaf574a2bdfce393b859ad06ac7f7c5be 100644 GIT binary patch delta 97 zcmZp1XmOa}&nUDpU^hRb&}1F~eO@+(M22D@Ol2rxD4y&u)X!mPXriNFY+yS1nUJF- piga0UQC?1dUOEE<1LI~30b`bpWwV(!vrBwunfzBcZ)4dECIHgv8&3cL delta 40 wcmZp1XmOa}&nU1lU^hRbz+@f){mnLl1}u|HWV$w13NdeHm-x=Iv677$0027-Qvd(} diff --git a/lib/adagrams.rb b/lib/adagrams.rb index 858b5ac..9b2e5e5 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -46,20 +46,15 @@ def draw_letters def uses_available_letters?(input, letters_in_hand) word = input.upcase.chars - word_letters = Array.new - letters_in_hand.each do |n| - if word.include? n - word_letters << n + result = true + word.each do |letter| + if word.count(letter) > letters_in_hand.count(letter) + return false end end - p word_letters - if word.sort == word_letters.sort - return true - end - return false + return true end - def score_word(word) word = word.upcase score = 0 @@ -109,4 +104,4 @@ def highest_score_from(words) } end - \ No newline at end of file + \ No newline at end of file From f4fa193a82b0cb507f07a7b07e13337c7956fd01 Mon Sep 17 00:00:00 2001 From: Yaz Date: Thu, 13 Feb 2020 16:36:51 -0800 Subject: [PATCH 07/13] added method is_in_english_dict?(input) --- lib/adagrams.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index 9b2e5e5..15e3392 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -1,3 +1,4 @@ +require 'csv' $letters = { A: 9, B: 2, @@ -104,4 +105,14 @@ def highest_score_from(words) } end +def is_in_english_dict?(input) + CSV.foreach('assets/dictionary-english.csv') do |word| + if input == word[0] + p word[0] + return true + end + end + return false +end + \ No newline at end of file From c60fac6500dfe6650da14dbd0e7d68a0d15039bf Mon Sep 17 00:00:00 2001 From: Yaz Date: Thu, 13 Feb 2020 16:58:40 -0800 Subject: [PATCH 08/13] reformmated, renamed variables in highest_score_from to be more readable, removed all puts statements --- lib/adagrams.rb | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index 15e3392..9e45161 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -41,7 +41,6 @@ def draw_letters hand[i] = letter end hand = hand.map {|e| e.to_s} - puts hand return hand end @@ -92,8 +91,9 @@ def highest_score_from(words) if win_word.length == word.length || win_word.length == 10 # no change elsif word.length == 10 || word.length < win_word.length - win_word = word - end + win_score = current_score + win_word = word + end elsif current_score > win_score win_score = current_score win_word = word @@ -108,11 +108,8 @@ def highest_score_from(words) def is_in_english_dict?(input) CSV.foreach('assets/dictionary-english.csv') do |word| if input == word[0] - p word[0] return true end end return false -end - - \ No newline at end of file +end \ No newline at end of file From 48699a2c765628960ed12bd4399c41c1ec6d9c1d Mon Sep 17 00:00:00 2001 From: Yaz Date: Thu, 13 Feb 2020 17:32:13 -0800 Subject: [PATCH 09/13] fixed mysterious bug introduced by last commit --- lib/adagrams.rb | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index 9e45161..3d54b59 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -41,6 +41,7 @@ def draw_letters hand[i] = letter end hand = hand.map {|e| e.to_s} + puts hand return hand end @@ -91,9 +92,8 @@ def highest_score_from(words) if win_word.length == word.length || win_word.length == 10 # no change elsif word.length == 10 || word.length < win_word.length - win_score = current_score - win_word = word - end + win_word = word + end elsif current_score > win_score win_score = current_score win_word = word @@ -106,10 +106,13 @@ def highest_score_from(words) end def is_in_english_dict?(input) - CSV.foreach('assets/dictionary-english.csv') do |word| - if input == word[0] - return true + input = input.chomp + if input.length > 0 + CSV.foreach('assets/dictionary-english.csv') do |word| + if input == word[0] + return true + end end end - return false -end \ No newline at end of file + return false +end \ No newline at end of file From 609ae9f77da0490c8663b057a799e83d355574ea Mon Sep 17 00:00:00 2001 From: Yaz Date: Thu, 13 Feb 2020 17:44:09 -0800 Subject: [PATCH 10/13] accounted for case of input in is_in_english_dict --- lib/adagrams.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index 3d54b59..9aa436f 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -106,7 +106,7 @@ def highest_score_from(words) end def is_in_english_dict?(input) - input = input.chomp + input = input.chomp.downcase if input.length > 0 CSV.foreach('assets/dictionary-english.csv') do |word| if input == word[0] From ff85f3839c68b2a9247f8c6e1430b688bb00166e Mon Sep 17 00:00:00 2001 From: Yaz Date: Thu, 13 Feb 2020 18:09:21 -0800 Subject: [PATCH 11/13] combined conditionals in highest_score_from --- lib/adagrams.rb | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index 9aa436f..f0ec43d 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -86,17 +86,13 @@ def score_word(word) def highest_score_from(words) win_word = "" win_score = 0 - words.each do |word| - current_score = score_word(word) - if current_score == win_score - if win_word.length == word.length || win_word.length == 10 - # no change - elsif word.length == 10 || word.length < win_word.length - win_word = word - end - elsif current_score > win_score - win_score = current_score - win_word = word + words.each do |current_word| + current_score = score_word(current_word) + if current_score > win_score || (current_score == win_score && # current score wins or its a tie + (!(win_word.length == current_word.length || win_word.length == 10) && # is previous winning word 10 chars, or is it the same length as new word? + (current_word.length == 10 || current_word.length < win_word.length))) # check to see if current word is 10, then check for which is the smallest + win_word = current_word + win_score = current_score end end return { From a67af2270cbaa1a57a9a36f56d192022e87d0682 Mon Sep 17 00:00:00 2001 From: Sharon Date: Fri, 14 Feb 2020 13:52:10 -0800 Subject: [PATCH 12/13] final touch --- lib/adagrams.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index f0ec43d..7b95dc1 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -41,7 +41,6 @@ def draw_letters hand[i] = letter end hand = hand.map {|e| e.to_s} - puts hand return hand end From 6d49086c806444d2c6bef9f7c4f13e2d350229e0 Mon Sep 17 00:00:00 2001 From: Yaz Date: Fri, 14 Feb 2020 23:21:35 -0800 Subject: [PATCH 13/13] reformatted comments, removed defunct variable from previous version. --- lib/adagrams.rb | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/adagrams.rb b/lib/adagrams.rb index 7b95dc1..88e6bc7 100644 --- a/lib/adagrams.rb +++ b/lib/adagrams.rb @@ -46,7 +46,6 @@ def draw_letters def uses_available_letters?(input, letters_in_hand) word = input.upcase.chars - result = true word.each do |letter| if word.count(letter) > letters_in_hand.count(letter) return false @@ -87,9 +86,12 @@ def highest_score_from(words) win_score = 0 words.each do |current_word| current_score = score_word(current_word) - if current_score > win_score || (current_score == win_score && # current score wins or its a tie - (!(win_word.length == current_word.length || win_word.length == 10) && # is previous winning word 10 chars, or is it the same length as new word? - (current_word.length == 10 || current_word.length < win_word.length))) # check to see if current word is 10, then check for which is the smallest + # current score wins or its a tie + if current_score > win_score || (current_score == win_score && + # is previous winning word 10 chars, or is it the same length as new word? + (!(win_word.length == current_word.length || win_word.length == 10) && + # check to see if current word is 10, then check for which is the smallest + (current_word.length == 10 || current_word.length < win_word.length))) win_word = current_word win_score = current_score end