Марио обнови решението на 14.03.2014 23:46 (преди над 10 години)
+def is_pangram(sentence):
+ ALPHA_SIZE = 30
+ if len(sentence) < ALPHA_SIZE:
+ return False
+ charsLower = set()
+ sentenceLower = sentence.lower()
+ for char in sentence:
+ if char >= 'а' and char <= 'я':
+ charsLower.add(char)
+ return len(charsLower) == ALPHA_SIZE
+
+
+def char_histogram(text):
+ hist = dict()
+ for char in text:
+ if not char in hist:
+ hist[char] = 0
+ hist[char] += 1
+ return hist
+
+
+def cmp_to_key(mycmp):
+ 'Convert a cmp= function into a key= function'
+ class K(object):
+ def __init__(self, obj, *args):
+ self.obj = obj
+
+ def __lt__(self, other):
+ return mycmp(self.obj, other.obj) < 0
+
+ def __gt__(self, other):
+ return mycmp(self.obj, other.obj) > 0
+
+ def __eq__(self, other):
+ return mycmp(self.obj, other.obj) == 0
+
+ def __le__(self, other):
+ return mycmp(self.obj, other.obj) <= 0
+
+ def __ge__(self, other):
+ return mycmp(self.obj, other.obj) >= 0
+
+ def __ne__(self, other):
+ return mycmp(self.obj, other.obj) != 0
+ return K
+
+
+def sort_by(func, arguments):
+ arguments.sort(key=cmp_to_key(func))
+ return arguments
+
+
+def group_by_type(dictionary):
+ groups = dict()
+ for key in dictionary:
+ type_ = type(key)
+ if not type_ in groups:
+ groups[type_] = dict()
+ groups[type_][key] = dictionary[key]
+ return groups
+
+
+def is_anagram(word_a, word_b):
+ chars_a = char_histogram(word_a)
+ chars_b = char_histogram(word_b)
+ for key in chars_a:
+ if len(chars_b) == 0:
+ return False
+ if not key in chars_b or not chars_a[key] == chars_b[key]:
+ return False
+ chars_b.pop(key)
+ return True
+
+
+# Very, very lame
+
+
+def anagrams(words):
+ anagram_groups = []
+ words_set = set()
+ for lead_word in words:
+ if not lead_word in words_set:
+ cur_group = [lead_word]
+ for candidate in words:
+ if not candidate == lead_word:
+ if is_anagram(lead_word, candidate):
+ cur_group.append(candidate)
+ words_set.add(candidate)
+ anagram_groups.append(cur_group)
+ return anagram_groups
Анаграма е дума или фраза образувана от буквите на друга дума или фраза, чрез пермутация.
- Твоето решение не прави разлика между буква и символ.
- Някои променливи са ти в
camelCase
, вместоsnake_case
. Няма да получиш нито една точка за домашното, ако това не се промени, преди крайния срок - Защо си дефинирал клас в тялото на функция и си му дал абсурдното име
K
? - Имплементацията ти на
anagrams
е... Very, Very lame, indeed