Решение на Пет функции от Георги Димитров

Обратно към всички решения

Към профила на Георги Димитров

Резултати

  • 10 точки от тестове
  • 0 бонус точки
  • 10 точки общо
  • 16 успешни тест(а)
  • 0 неуспешни тест(а)

Код

def is_pangram(sentence):
bg_chars = 'абвгдежзийклмнопрстуфхцчшщъьюя'
sentence = sentence.lower()
check_is_pangram = [0 for letter in bg_chars if letter not in sentence]
return all(check_is_pangram)
def char_histogram(text):
return {char: text.count(char) for char in text}
def sort_by(func, arguments):
func_calls = [[sum([func(word, x) for x in arguments]), word]
for word in arguments]
return [item[1] for item in sorted(func_calls)]
def group_by_type(dictionary):
unique_types = set([type(element) for element in dictionary])
return {item_type: {item: dictionary[item]
for item in dictionary
if type(item) == item_type}
for item_type in unique_types}
def sort_and_lower(word):
letters = 'abcdefghijklmnopqrstuvwxyzабвгдежзийклмнопрстуфхцчшщъьюя'
return ''.join(
sorted([char.lower() for char in word if char.lower() in letters])
)
def anagrams(words):
unique_words = set([sort_and_lower(element) for element in words])
return [[anagram for anagram in words if word == sort_and_lower(anagram)]
for word in unique_words]

Лог от изпълнението

................
----------------------------------------------------------------------
Ran 16 tests in 0.010s

OK

История (4 версии и 4 коментара)

Георги обнови решението на 13.03.2014 20:02 (преди над 10 години)

+def is_pangram(sentence):
+ bg_alphabet = 'абвгдежзийклмнопрстуфхцчшщъьюя'
+ return all([False for letter in bg_alphabet
+ if letter not in sentence.lower()])
+
+
+def char_histogram(text):
+ return {char: text.count(char) for char in text}
+
+
+def sort_by(func, arguments):
+ func_calls = [[sum([func(word, x) for x in arguments]), word]
+ for word in arguments]
+ return [item[1] for item in sorted(func_calls)]
+
+
+def group_by_type(dictionary):
+ unique_types = set([type(element) for element in dictionary])
+ return {item_type: {item: dictionary[item] for item in dictionary
+ if type(item) == item_type
+ }
+ for item_type in unique_types
+ }
+
+
+def anagrams(words):
+ unique_words = set([''.join(sorted(element)) for element in words])
+ return [[anagram for anagram in words
+ if word == ''.join(sorted(anagram))
+ ]
+ for word in unique_words
+ ]

Георги обнови решението на 15.03.2014 17:35 (преди над 10 години)

+import string
+
def is_pangram(sentence):
bg_alphabet = 'абвгдежзийклмнопрстуфхцчшщъьюя'
return all([False for letter in bg_alphabet
if letter not in sentence.lower()])
def char_histogram(text):
return {char: text.count(char) for char in text}
-
def sort_by(func, arguments):
func_calls = [[sum([func(word, x) for x in arguments]), word]
for word in arguments]
return [item[1] for item in sorted(func_calls)]
def group_by_type(dictionary):
unique_types = set([type(element) for element in dictionary])
return {item_type: {item: dictionary[item] for item in dictionary
if type(item) == item_type
}
for item_type in unique_types
}
def anagrams(words):
- unique_words = set([''.join(sorted(element)) for element in words])
- return [[anagram for anagram in words
+ unique_words = set(
- if word == ''.join(sorted(anagram))
+ [''.join(sorted([c.lower() for c in element
- ]
+ if c in string.ascii_letters])) for element in words]
- for word in unique_words
+ )
- ]
+ return [
+ [anagram for anagram in words
+ if word == ''.join(sorted([c.lower() for c in anagram
+ if c in string.ascii_letters]))
+ ]
+ for word in unique_words
+ ]

Здравей, аз много се чудих как да ги пренасям тези comprehension-и... Би ли ме упътил малко как е най-подходящо, защото в стандарта не е указано какво да се прави в такива ситуации, наблягат само на идентацията на новите редове и на затварящата comprehension-а скоба... Ще обновя идентацията и ще сменя името на променливата :)

Георги обнови решението на 18.03.2014 00:23 (преди над 10 години)

-import string
-
def is_pangram(sentence):
- bg_alphabet = 'абвгдежзийклмнопрстуфхцчшщъьюя'
- return all([False for letter in bg_alphabet
- if letter not in sentence.lower()])
+ bg_chars = 'абвгдежзийклмнопрстуфхцчшщъьюя'
+ sentence = sentence.lower()
+ check_is_pangram = [0 for letter in bg_chars if letter not in sentence]
+ return all(check_is_pangram)
def char_histogram(text):
return {char: text.count(char) for char in text}
+
def sort_by(func, arguments):
- func_calls = [[sum([func(word, x) for x in arguments]), word]
- for word in arguments]
+ func_calls = [
+ [sum([func(word, x) for x in arguments]), word] for word in arguments
+ ]
return [item[1] for item in sorted(func_calls)]
def group_by_type(dictionary):
unique_types = set([type(element) for element in dictionary])
- return {item_type: {item: dictionary[item] for item in dictionary
- if type(item) == item_type
- }
- for item_type in unique_types
- }
+ return {
+ item_type: {
+ item: dictionary[item]
+ for item in dictionary
+ if type(item) == item_type
+ }
+ for item_type in unique_types
+ }
-def anagrams(words):
- unique_words = set(
- [''.join(sorted([c.lower() for c in element
- if c in string.ascii_letters])) for element in words]
+def sort_and_lower(word):
+ letters = 'abcdefghijklmnopqrstuvwxyzабвгдежзийклмнопрстуфхцчшщъьюя'
+ return ''.join(
+ sorted([char.lower() for char in word if char.lower() in letters])
)
+
+def anagrams(words):
+ unique_words = set([sort_and_lower(element) for element in words])
return [
- [anagram for anagram in words
- if word == ''.join(sorted([c.lower() for c in anagram
+ [anagram for anagram in words if word == sort_and_lower(anagram)]
- if c in string.ascii_letters]))
+ for word in unique_words
- ]
+ ]
- for word in unique_words
- ]

Здравей отново, можеш ли да изкажеш мнение как са пренацянията сега, гледах из форумите на доста места как пишат хората и как е прието да се пишат дълги comprehension-и и мисля, че сега се доближавам повече до истината. Наистина бих оценил обратна връзка по темата, защото като цяло форматирането на кода е нещо доста важно за мен Благодаря! :smiley:

Георги обнови решението на 18.03.2014 19:12 (преди над 10 години)

def is_pangram(sentence):
bg_chars = 'абвгдежзийклмнопрстуфхцчшщъьюя'
sentence = sentence.lower()
check_is_pangram = [0 for letter in bg_chars if letter not in sentence]
return all(check_is_pangram)
def char_histogram(text):
return {char: text.count(char) for char in text}
def sort_by(func, arguments):
- func_calls = [
- [sum([func(word, x) for x in arguments]), word] for word in arguments
- ]
+ func_calls = [[sum([func(word, x) for x in arguments]), word]
+ for word in arguments]
return [item[1] for item in sorted(func_calls)]
def group_by_type(dictionary):
unique_types = set([type(element) for element in dictionary])
- return {
- item_type: {
- item: dictionary[item]
- for item in dictionary
- if type(item) == item_type
- }
- for item_type in unique_types
- }
+ return {item_type: {item: dictionary[item]
+ for item in dictionary
+ if type(item) == item_type}
+ for item_type in unique_types}
+
def sort_and_lower(word):
letters = 'abcdefghijklmnopqrstuvwxyzабвгдежзийклмнопрстуфхцчшщъьюя'
return ''.join(
sorted([char.lower() for char in word if char.lower() in letters])
)
+
def anagrams(words):
unique_words = set([sort_and_lower(element) for element in words])
- return [
- [anagram for anagram in words if word == sort_and_lower(anagram)]
+ return [[anagram for anagram in words if word == sort_and_lower(anagram)]
- for word in unique_words
+ for word in unique_words]
- ]