Стефан обнови решението на 16.03.2014 22:08 (преди над 10 години)
+from itertools import groupby
+from functools import cmp_to_key
+
+def is_pangram(words):
+ return len(set([x for x in words.lower() if x in "абвгдежзийклмнопрстуфхцчшщъьюя"])) == 30
+
+def char_histogram(sentence):
+ return {letter: sentence.count(letter) for letter in sentence}
+
+def sort_by(func, arguments):
+ return sorted(arguments, key = cmp_to_key(func))
+
+def group_by_type(dictionary):
+ grouped = {type(key): {key: value} for key, value in dictionary.items()}
+ for key, value in dictionary.items():
+ grouped[type(key)] = dict(list(grouped[type(key)].items()) + list({key: value}.items()))
+ return grouped
+
+def anagram_hash(word):
+ return {sign: word.count(sign) for sign in word if sign in "abcdefghijklmnopqrstuvwxyz"}
+
+def anagrams(words):
+ return [list(data) for key, data in groupby(words, lambda x: anagram_hash(x.lower()))]
Здравейте, знам че редовете пак са дългички, ама сърце не ми дава ги скъся, че ще стане по 5 реда функция. Както и да е това не ми е единствения проблем. Проблема ми е в решението на последната функция, тоест последните 2. Тоя код работи само ако аргумента words на anagrams съдържа подредени анаграми. Например:
anagrams(['asd', 'dsa', 'da']) връща
[['asd, 'dsa'], ['da']] , което е вярно. Но ако:
anagrams(['asd', 'da', 'dsa']) връща
[['asd'], ['da'], ['dsa']], което е невярно.
Оставам с впечатление, че groupby работи само върху последователни данни. Така ли е или аз някъде греша. Ако може малко помощ, моля. Ще съм много благодарен.