Елица обнови решението на 16.03.2014 00:49 (преди над 10 години)
+def is_pangram(sentence):
+ alphabet = set('абвгдежзийклмнопрстуфцчшщъьюя')
+ if alphabet.issubset(sentence):
+ return True
+ else:
+ return False
+
+def char_histogram(text):
+ histogram = {}
+ for char in text:
+ histogram[char] = histogram.get(char, 0) + 1
+ return histogram
+
+def swap(arguments, i, j):
+ temp = arguments[i]
+ arguments[i] = arguments[j]
+ arguments[j] = temp
+ return arguments
+
+def sort_by(func, arguments):
+ if len(arguments) <= 1:
+ return arguments
+ length = range(0, len(arguments))
+ for i in length:
+ for j in range(i+1, len(arguments)):
+ if func(arguments[i], arguments[j]) > 0:
+ swap(arguments, i, j)
+ return arguments
+
+def group_by_type(dictionary):
+ grouped_by_type = {}
+ for key in dictionary:
+ key_type = type(key)
+ if key_type in grouped_by_type:
+ grouped_by_type[key_type][key] = dictionary[key]
+ else:
+ grouped_by_type[key_type] = {}
+ grouped_by_type[key_type][key] = dictionary[key]
+ return grouped_by_type
+
+def is_anagram(first_word, second_word):
+ first_word = sorted(list(first_word))
+ second_word = sorted(list(second_word))
+ return first_word == second_word
+
+def anagrams(words):
+ anagrams = []
+ i = 0
+ for word in words:
+ i += 1
+ if not any(word in l for l in anagrams):
+ temporary = [word]
+ for next_word in words[i:]:
+ if is_anagram(word, next_word):
+ temporary.append(next_word)
+ anagrams.append(temporary)
+ return anagrams
- в
is_pangram
какво става, ако използвам главни букви? -
'питонски' swap:
a, b = b, a
-
range(0, 10)
е еквивалентно наrange(10)
- сортировката ти не е стабилна, тоест ако направим следното
sort_by(lambda x, y: len(x) - len(y), ['a', 'ab', 'b', 'bc', 'c'])
получаваме['a', 'b', 'c', 'bc', 'ab']
;'ab'
и'bc'
имат равни дължини и'ab'
беше преди'bc'
в несортирания списък, но сега не е; това означава сортировката да не е стабилна - обикновено, когато ни трябва сортиране в такива неспециални ситуации, ползваме нещо, което Python ни дава наготово :)
- можеш да си подобриш решението на
group_by_type
, като си прегледаш решението наchar_histogram
и/или хитринките -
is_anagram('ew', 'We!')
трябва да връщаTrue
- при анаграмите игнорираш символите различни от букви и това дали буквата е малка или голяма