Решение на Пет функции от Драгомир Тунчев
Към профила на Драгомир Тунчев
Резултати
- 9 точки от тестове
- 0 бонус точки
- 9 точки общо
- 14 успешни тест(а)
- 2 неуспешни тест(а)
Код
Лог от изпълнението
.FF............. ====================================================================== FAIL: test_with_different_cases (test.TestAnagrams) ---------------------------------------------------------------------- Traceback (most recent call last): File "lib/language/python/runner.py", line 60, in thread raise it.exc_info[1] File "lib/language/python/runner.py", line 48, in run self.result = func(*args, **kwargs) File "/tmp/d20140319-21201-h498on/test.py", line 125, in test_with_different_cases set(map(frozenset, solution.anagrams(words)))) AssertionError: Items in the first set but not the second: frozenset({'Dave Barry', 'Ray Adverb'}) Items in the second set but not the first: frozenset({'Ray Adverb'}) frozenset({'Dave Barry'}) ====================================================================== FAIL: test_with_different_symbols (test.TestAnagrams) ---------------------------------------------------------------------- Traceback (most recent call last): File "lib/language/python/runner.py", line 60, in thread raise it.exc_info[1] File "lib/language/python/runner.py", line 48, in run self.result = func(*args, **kwargs) File "/tmp/d20140319-21201-h498on/test.py", line 135, in test_with_different_symbols set(map(frozenset, solution.anagrams(words)))) AssertionError: Items in the first set but not the second: frozenset({'I am Lord Voldemort', 'Tom Marvolo Riddle'}) frozenset({"So I'm cuter", 'Tom Cruise'}) Items in the second set but not the first: frozenset({'Tom Cruise'}) frozenset({'Tom Marvolo Riddle'}) frozenset({"So I'm cuter"}) frozenset({'I am Lord Voldemort'}) ---------------------------------------------------------------------- Ran 16 tests in 0.016s FAILED (failures=2)
История (5 версии и 4 коментара)
Драгомир обнови решението на 15.03.2014 19:22 (преди почти 11 години)
Анаграма е дума или фраза образувана от буквите на друга дума или фраза, чрез пермутация.
- Твоето решение не прави разлика между буква и символ.
- Какво правят
anagrams_helper
иgroup_by_type_helper
?
За helper функциите достатъчно ли е да се добави коментар, който ги описва, или е нужно да се намери по-добро име?
В никакъв случай не добавяй коментар. Ако ти се наложи да коментираш код, написан на Python, в общия случай трябва просто да го пренапишеш.
Нужно е да се намери по-добро име и за двете. Мога да ти помогна с това, ако ми обясниш с по едно изречение какво прави всяка. :)
anagrams връща списък от списъци. При всяко викане anagrams_helper връща списък с думите, които са анаграми.
group_by_type_helper връща речник с всички елементи на първоначалния, които са от еднакъв тип. За първия пример >>> group_by_type({'a': 12, 'b': 1, 1: "foo"})
{<"class 'str'>: {'b': 1, 'a': 12}, <"class 'int'>: {1: 'foo'}} първото викане на group_by_type_helper ще върне речника {'b': 1, 'a': 12}, който отгаваря на типа str на ключовете, а второто ще върне {1: 'foo'}
И двете функции са написани с цел избягване от четворно влагане for -> if -> for -> if