Първа задача

  1. Първа задача е публикувана и чака да я накодите. Можете да намерите примерен тест в github репо-то rust-homework. Изтеглете си го, проверете дали върви както трябва (вижте коментара в горната част на теста), и се погрижете кода ви да се компилира и да минава поне този базов тест, преди да го submit-нете.

    Силно ви съветваме да почнете отрано и да качвате решенията си през интерфейса. Дори да са частични. Можете да ъпдейтвате решенията си колкото пъти искате докато крайния срок приключи. Ние ще оценим последната версия.

    Тук е мястото да задавате въпроси по условието. Има ли нещо, което не сме обяснили достатъчно добре? Някакъв edge case, който да сме забравили да дефинираме? Пишете тук.

    Отбелязваме, че тук НЕ post-вате части от кода си. Домашното е самостоятелно. Това, което можете да post-вате, са допълнителни тестове, които сте си написали, и смятате, че ще са полезни за колегите ви. Може да ги споделите през github, bitbucket, каквото си пожелаете.

  2. Колко на брой изречения има в текста?

    "Изречение" се дефинира като текст, който завършва на "?", "!", "." или "...". Приемете, че това е единствената пунктуация, която ни интересува като броим изречения.

    ?...!
    

    колко изречения е? според тази дефиниция, за мен е 3: '?' е текст && завършва на '?' (подобно и за останалите)

    или трябва изречение да е more than zero non-puntuation + punctuation?

  3. Fair enough, "текст" е достатъчно слабо дефинирано. Трябва да е поне един не-разделителен символ. Примерно, ",?" е изречение с тяло ",", но ".?" не е изречение с тяло ".", нито две изречения без тяло.

    Текста ?...! е нула изречения.

  4. ... Това включва букви от латинската азбука или кирилица...
    

    Предполагам, че под латинската азбука се разбира [a-zA-Z]. Какво разбираме под "кирилица"? Всичко от Cyrillic и Cyrillic Supplement блоковете, само Cyrillic блока, само буквите от българската азбука или просто [а-яА-Я]? Моля обърнете внимание че последното предложение включва Э и Ы и малките им вариянти.

  5. Също добър въпрос. Ще проверяваме само и единствено за български букви (без Э и Ы), от а до я, малки и главни. Няма да проверяваме за "Ѝ", нито за "Ь".

    Може да броите останалите диакритики и прочее както пожелаете, просто няма да имаме такива низове в тестовете.

  6. Не точно по задачата, но евентуално някой работещ по нея може да го намери за полезно.

    След известни премеждия с пускането на тестовете и откриването че не харесвам текущо предложената схема написах следния bash script, който е изцяло базиран на текущия начин по който се пускат тестовете в evans.

    Хубавото на този метод е че не трябва да местите тестовете, или да правите cargo init или каквито и да е други сложни схеми. Единствените изисквания са решението да е във файл solution.rs и да име един(принципно навярно ще работи и с повече) файл с тестове който започва с test и завършва на .rs. Ако искате да си запазите изходните файлове може да подаде -k на скрипта.

    п.п. Моите две стотинки по темата към екипа: намалете до минимум разликата между начина по който се пускат тестовете в evans и как ще си ги пускат студентите. В противен случай се оказва че има значение и го откривате на 28 декември в 3 часа сутринта след МНОГО дебъгване и чесане ;)

  7. @Емилиан базирано на кода който проверява заданието, смятам че е защото имаш по един warning.

    Добави си fn main () {} на края на файла и напиши rustc и се опитай да премахнеш всички проблеми които изписва.

    Успех!!!

    п.п. може пак да махнеш fn main като предаваш

  8. @Михаил Напълно си прав, но what can I say, първо домашно е, имаме неща да изглаждаме :). Точно cargo-фицирането на test runner-а е нещо, което дялках вчера, и мисля, че довърших днес: https://github.com/skanev/evans/pull/194. Този код вече върви на prod, така че на теория, нещата би трябвало да минават по един и същ начин на сайта, все едно сте направили един cargo new solution, и сте писали кода си в src/lib.rs.

    @Емилиан Направих някои промени по сайта, и би трябвало вече да се държи по-добре с кода ти. Бъди сигурен, че си изпълнил следните стъпки:

    • cargo new solution
    • Кода ти е в новосъздадената solution папка, в src/lib.rs.
    • Когато пуснеш cargo build, кода ти се компилира без грешки или warning-и

    След това, просто вземи кода от src/lib.rs и го копирай във формата. Би трябвало този път да мине, но кажи, ако още имаш проблем.

    Ще ми се сайта да казваше и какъв точно е проблема, но се надявам, че поне сега ще е консистентен с това, което бихте изпълнили локално.

    Ще сложа тези инструкции и в guide-а.

  9. @Емилиан Успех

    @Андрей Яко

    Ето и тест с всички примери от задачата + този от въпроса на Александър

    Принципно Андрей го одобри (със забележки които поправих), но ако смятате че има проблеми - пишете да не се окаже че сте прави и сте си почупили домашното 😊

  10. @Десислава Хм, признавам си, че не съм се замислял за ограничение откъм дължина :). Не мисля, че би трябвало да се притесняваш за това колко дълги низове ще ползваме. На теория, може да използваме колкото се побере в паметта на компютъра. Кода, който пишеш, няма да има нужда да се грижи за това.

    Разгледай внимателно лекциите, особено където сме говорили за низове. За разлика от C, низовете в Rust са доста по-"умни", и знаят каква им е дължината (ако това е, което те притеснява).

Трябва да сте влезли в системата, за да може да отговаряте на теми.