Божидар обнови решението на 15.03.2014 17:03 (преди над 10 години)
+from collections import defaultdict
+from re import sub
+
+def is_pangram(sentence):
+ alphabet = set("абвгдежзийклмнопрстуфхцчшщъьюя")
+ return alphabet.issubset(sentence.lower())
+
+def char_histogram(text):
+ histogram = defaultdict(int)
+ for letter in text:
+ histogram[letter] += 1
+ return histogram
+
+def sort_by(func, arguments):
+ class SortWrapper:
+ def __init__(self, data):
+ self.data = data
+
+ def __lt__(self, other):
+ return func(self.data, other.data) <= 0
+
+ wrapped_arguments = [SortWrapper(arg) for arg in arguments]
+ arguments[:] = [wrapper.data for wrapper in sorted(wrapped_arguments)]
+ return arguments
+
+def group_by_type(dictionary):
+ grouped = defaultdict(dict)
+ for key, value in dictionary.items():
+ grouped[type(key)][key] = value
+ return grouped
+
+def anagrams(words):
+ def get_letters(word): return sub('\W+', '', word).lower()
+ grouped = defaultdict(list)
+ for word in words:
+ key = frozenset(char_histogram(get_letters(word)).items())
+ grouped[key].append(word)
+ return list(grouped.values())
- Сортирането ти не е стабилно
- За какво ти е SortWrapper, би могъл да се справиш и без него
- Моля те, не дефинирай клас в тялото на функция