Решение на Пет функции от Драгомир Тунчев
Към профила на Драгомир Тунчев
Резултати
- 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
