Здравейте, Анаграмите case sensitive ли са ?
Втора задача
Не би трябвало
Почти всички предали решение, не са си прочели внимателно условието на
anagrams
. Нека опитаме пак:Анаграма е дума или фраза образувана от буквите на друга дума или фраза, чрез пермутация.
Демек
букви
е подмножество насимволи
.@Орлин
това е заради примерните тестове :)
Нарушаваме ли стиловите конвенции ако дефинираме функция във функция? В PEP8 има нещо подобно:
Yes:
def f(x): return 2*x
No:
f = lambda x: 2*x
Малко тестове: https://gist.github.com/Ralitsa-Ts/15df486c632c08bcec4c
@Орлин, тогава А !=а, нали ?
Е предполагам,че звездичката на горния отговор значи че са едно и също и не са case sensitive :))
@Антонио, намерил си правилния отговор на въпроса си. :)
Но А и а са различни символи.. Къде има звездички ? И не мога да разбера какъв е проблемът просто някой да каже не или да.
Анаграмите не са case sensitive. 'А' и 'а' са различни символи, рефериращи една и съща буква.
Благодаря.
sort_by
променя ли подадения обект ? Ако да, връща ли го или не връща нищо ? Също така, няма проблем да ползваме някоя функция от някой модул, нали ?Не променя подадения обект, а връща нов, който е сортиран. Ползвай каквото намериш в стандартната библиотека :)
В списъка от низове, който се подава като аргумент на функцията
anagrams
, може ли да има низ, който съдържа букви на кирилица?Да поясня: що се отнася анаграмите
A
иa
са едно и също, но всякакви препинателни знаци(тирета, запейаки, точки) просто не влизат в уравнението.За анаграмите ще тестваме само спрямо ангийската азбука.
Може ли да подскажете малко как да получа буквите в българската азбука без да я hardcode-вам или да вземам "пълната славянска азбука" и да махам символи от нея? Предполагам, че трябва да има нещо с locale-ли и/или regex, но не мога да намеря python3.3 версия на
string.letters
или заместител.Всъщност има и тестова с анаграми на български, направете решението си така, че да не се интересува от това
@Никола, по-бързо и лесно ще е просто да я въведеш от клавиатурата
@Венцислав, това имах предвид под hardcode-ване и в случая има множество проблеми - какво става ако сега искаме да решим задачата за немския, какво става когато се махне буквата ь от българския, кога ще разбереш, че си пропуснал някоя буква като mistype-неш азбуката и т.н. Естествено поради липса на идеи и понеже има ограничено време, което е разумно да се отделя за тривиалности накрая направих точно това.
Сори за спама, не знам как се пусна 2 пъти.
@Виктория Христова:
Всъщност има и тестова с анаграми на български, направете решението си така, че да не се интересува от това
@Орлин Христов:
Да поясня: що се отнася анаграмите A и a са едно и също, но всякакви препинателни знаци(тирета, запейаки, точки) просто не влизат в уравнението.
За анаграмите ще тестваме само спрямо ангийската азбука.
Последно ще тествате само анлийски думи, само български думи, и двете едновременно или думи от всички възможни азбуки ?
Мисля, че идеята е кодът ти да работи за всички азбуки, които съществуват по света => и с двете ще тестват. =)
А трябва ли да игнорира цифри? '12a' анаграма ли е на '13a'? http://www.wordsmith.org/anagram/anagram-check.html - тук не ги игнорира.
Ама това не е коректна дума или фраза. А според условието:
"Тя трябва да приема един аргумент на име words, който е списък от низовe. Функцията трябва да върне списък от списъци с всички думи, които са анаграми една на друга."
Тоест, ще се подават коректни думи или фрази.
Дума е комбинация на n елемента k-ти клас от множеството на буквите, което пък се дефинира като множеството от символите в utf-8.
За anagrams, ако подадем списъка ['bau', 'bau'] какво трябва да се върне: [['bau']] или [['bau', 'bau']]?
[['bau', 'bau']]
Тестовете за последната задача не ми се струват много коректни. Защо ги каствате към set?
По този начин ако е подаден масивът:
['army', 'mary', 'ramy', 'astronomer', 'moonstarer', 'debit card', 'bad credit', 'bau']
И функцията върне:
[['army', 'mary', 'ramy'], ['army', 'mary', 'ramy'], ['army', 'mary', 'ramy'], ['bad credit', 'debit card'] ['bad credit', 'debit card'], ['astronomer', 'moonstarer'], ['astronomer', 'moonstarer'], ['bau']]
Ще го сравни с:
[['army', 'mary', 'ramy'], ['bad credit', 'debit card'], ['astronomer', 'moonstarer'], ['bau']]
И ще го счетне за True, а очевидно това не е нещото което се очаква като резултат.
@Антонио Николов, функцията ти не трябва да връща това, което си написал. Logic? There's none.
Трябва да сте влезли в системата, за да може да отговаряте на теми.