Мария обнови решението на 17.03.2014 12:09 (преди над 10 години)
+alphabet = {chr(1072 + i) for i in range(32) if i != 27 and i != 29}
+
+
+def is_pangram(sentence):
+ sentence = sentence.lower()
+ symbols = [x for x in sentence]
+ for letter in alphabet:
+ if letter not in symbols:
+ return False
+ return True
+
+
+def char_histogram(text):
+ symbols = [x for x in text]
+ histogram = {}
+ for symbol in symbols:
+ if symbol in histogram:
+ histogram[symbol] += 1
+ else:
+ histogram[symbol] = 1
+ return histogram
+
+
+def sort_by(func, arguments):
+ length = len(arguments)
+ for i in range(length - 1):
+ for j in range(length - 1, i, -1):
+ compare = func(arguments[j - 1], arguments[j])
+ if compare > 0:
+ arguments[j], arguments[j - 1] = arguments[j - 1], arguments[j]
+ return arguments
+
+
+def group_by_type(dictionary):
+ type_dict = {}
+ keys = dictionary.keys()
+ for key in keys:
+ if type(key) not in type_dict:
+ type_dict[type(key)] = {}
+ type_dict[type(key)][key] = dictionary[key]
+ return type_dict
+
+
+def compare_dict(dict1, dict2):
+ keys1 = dict1.keys()
+ keys2 = dict2.keys()
+ if len(keys1) != len(keys2):
+ return False
+ for key in keys1:
+ if key not in keys2:
+ return False
+ if dict1[key] != dict2[key]:
+ return False
+ return True
+
+
+def anagrams(words):
+ hist = {}
+ anagrams = list()
+ for word in words:
+ hist[word] = char_histogram(word)
+ flag = False
+ for anagram in anagrams:
+ current_anagram = anagram[0]
+ if compare_dict(hist[current_anagram], hist[word]) is True:
+ anagram.append(word)
+ flag = True
+ break
+ if flag is False:
+ anagrams.append([word])
+ return anagrams
-
alphabet
е константа и трябва да е наименована с главни букви -
type(key)
може да се изнесе в отделна променлива, защото се преизползва - имената на променливите на трябва да съдържат типа на обекта
- доста от имената са неясни:
flag
,hist
,compare