Решение на Пет функции от Георги Стайков
Резултати
- 10 точки от тестове
- 0 бонус точки
- 10 точки общо
- 16 успешни тест(а)
- 0 неуспешни тест(а)
Код
Лог от изпълнението
................ ---------------------------------------------------------------------- Ran 16 tests in 0.019s OK
История (8 версии и 7 коментара)
Георги обнови решението на 13.03.2014 20:42 (преди над 10 години)
Здравейте, тъй като попитах във форума относно функцията sort_by(func, arguments) и ми казахте, че func може да връща 0 това означава, че не може да ползваме вградения сорт
def sort_by(func, arguments):
....return sorted(arguments, key=cmp_to_key(func))
защото той противно на условието при 0 не сортира,а сортира при отрицателни стойности само (пак си е stable sort). Трябва ли да си променям решението,за да покрия случая с 0 или така си е ОК ? А и също така има ли начин да накарам sorted() при 0 да извършва сортиране
Не. Ок е да ползваш sorted
.
Анаграма е дума или фраза образувана от буквите на друга дума или фраза, чрез пермутация.
- Твоето решение не прави разлика между буква и символ.
-
word1
иword2
не са особено добри имена
Тоест ksdfjk213 не е дума така ли ?!? И трябва всяка дума да я прекарвам през регулярен израз, за да проверя дали съдържа само букви това ли е идеята ? first_word и second_word ок ли са като имена ?
Георги обнови решението на 16.03.2014 23:39 (преди над 10 години)
Георги обнови решението на 16.03.2014 23:46 (преди над 10 години)
Георги обнови решението на 17.03.2014 00:02 (преди над 10 години)
Георги обнови решението на 17.03.2014 00:54 (преди над 10 години)
Последната версия ОК ли е ?
П.П Този регулярен израз "re.sub("[\W_\d]", '', word.upper())" малко ме притеснява... Би трябвало да вземе всички букви (от всички съществуващи азбуки. Гаврих се доста с него и уж работеше, но честно казано не знам как се пишат регулярни изрази (като синтаксис) и просто сглобявам отделни части от нета в една обща ... )
Тоест ksdfjk213 не е дума така ли ?!?
Не е дума.
И трябва всяка дума да я прекарвам през регулярен израз, за да проверя дали съдържа само букви това ли е идеята ?
Знаейки за оператора in
, аз не бих го направил така, но това си е решение, което ти трябва да вземемш.
first_word и second_word ок ли са като имена ?
Да
П.П Този регулярен израз "re.sub("[\W_\d]", '', word.upper())" малко ме притеснява... Би трябвало да вземе всички букви (от всички съществуващи азбуки. Гаврих се доста с него и уж работеше, но честно казано не знам как се пишат регулярни изрази (като синтаксис) и просто сглобявам отделни части от нета в една обща ... )
Не хваща всички съществуващи букви от всички азбуки. Ако не си супер уверен с регулярните изрази, не ги ползвай. Не сме ви говорили още за тях => има друг начин да се реши това :)
Aми в нетa нaвсякъде пише че товa е нaчинa тестaхго с 3-4 езикa и си беше ок... Кой регулярен изрaз тогaвa стaвa, aко не този ? (Aз съм около 99% сигурен че е този...)
Факт е, че създава стабилното впечатление, че работи този регулярен израз. Не казвам, че е грешен. Просто казвам, че аз не бих го имплементирал по този начин :)
Дай да оправим няколко стилови проблема:
- Слагай
r
пред стринг, който е шаблон на регулярен израз. Демек"[\W_\d]"
искаш да го направиш наr"[\W_\d]"
. Ще обясним защо като стигнем до там - Не инстанцирай речници с
dict()
, а с{}
- Не прави такава проверка
isinstance(result[change(word)], list)
. Ако ти подам нещо, което не е списък, но може да се обхожда като списък (вчера ви показахме как се прави това), твоето решение ще се счупи. Виж как работиdefaultdict
(можеш да го намериш вcollections
)