From: Benjamin Mako Hill Date: Wed, 22 Apr 2015 03:18:02 +0000 (-0700) Subject: reworked these examples a bit based on feedback in class X-Git-Url: https://projects.mako.cc/source/wordplay-cdsw-solutions/commitdiff_plain/HEAD?ds=sidebyside reworked these examples a bit based on feedback in class --- diff --git a/solution_6.py b/solution_6.py index a97e6a0..93747c9 100644 --- a/solution_6.py +++ b/solution_6.py @@ -8,23 +8,27 @@ import scrabble new_words = [] for word in scrabble.wordlist: - local_chars = {} - seen_before = False + unique_letters = [] + duplicated_letters = False for character in word: # have we seen this character before? - if character in local_chars: - seen_before = True - break # Exit the loop early, since we've found a collision. - # store the character - local_chars[character] = 1 + if character in unique_letters: + duplicated_letters = True + else: + # store the character + unique_letters.append(character) - if not seen_before: + if not duplicated_letters: new_words.append(word) # Reuse my code for longest word -longest_so_far = '' +longest_so_far = [] +longest_length = 0 for word in new_words: - if len(word) > len(longest_so_far): - longest_so_far = word + if len(word) > longest_length: + longest_so_far = [word] + longest_length = len(word) + elif len(word) == longest_length: + longest_so_far.append(word) print(longest_so_far) diff --git a/solution_6_advanced.py b/solution_6_advanced.py index 36aa0d2..43653c0 100644 --- a/solution_6_advanced.py +++ b/solution_6_advanced.py @@ -1,17 +1,15 @@ import scrabble -# Print the longest word where every character is unique. I used a -# Set for this which we'll talk about today. +# Print the longest word where every character is unique. I used a Set for +# this which we'll talk about today. -# Don't worry: you didn't miss anything if you don't know what a set -# is. We didn't teach it, but if you are reading this, you get a -# bonus! +# Don't worry: you didn't miss anything if you don't know what a set is. We +# didn't teach it, but if you are reading this, you get a bonus! -# A set is a container like a list or a dict, except that *each -# element can be stored only once*. Think of it like the keys of a -# dict, except there isn't any value associated with each key. I use -# Sets to count digits below. Feel free to look up the Set online and -# try it in the interpreter. +# A set is a container like a list or a dict, except that *each element can be +# stored only once*. Think of it like the keys of a dict, except there isn't +# any value associated with each key. I use Sets to count digits below. Feel +# free to look up the Set online and try it in the interpreter. new_words = [] for word in scrabble.wordlist: @@ -19,8 +17,8 @@ for word in scrabble.wordlist: if len(word) == len(set(word)): # Wait what!? See if you can figure out why this works. new_words.append(word) -# Reuse my code for longest word, (in this case, the code to track all occurences) from the -# advanced solution. +# Reuse my code for longest word, (in this case, the code to track all +# occurences) from the advanced solution. longest_so_far = [] length_of_longest_word = 0