Задача 2

  1. Да разбираме ли, че в имената на песните, имената на изпълнителите и т.н. няма да имаме ".", защото го използваме като разделител?

    Като гледам в условието имаме следните допълнителни тагове: { 'John Coltrane' => %w[saxophone], 'J.S. Bach' => %w[piano polyphony], }

    В примерния тест обаче имаме само "Bach" (без "J.S.") :)

  2. Четири въпроса:

    1. Не е ли по-удачно да се използва tab за разделител?
    2. Класовете трябва ли да предлагат функционалност за промяна след конструирането (добавяне на тагове, например)?
    3. Как реагираме на песен с незададени задължителни атрибути?
    4. В примера с find:

       # Връща имена на песни, които започват с думичката "My":
       collection.find filter: ->(song) { |song| song.start_with?('My') }
      

      song би следвало да е обект от тип песен, ако правилно съм разбрал спецификацията. Това означава ли, че find може да работи по нещо различно от името на песента, или на филтъра се подава име (вместо цялата 'песен')?

  3. song би следвало да е обект от тип песен, ако правилно съм разбрал спецификацията. Това означава ли, че find може да работи по нещо различно от името на песента, или на филтъра се подава име (вместо цялата 'песен')?

    Въпросният пример е сгрешен, но все още не е оправен (направен е pull request, като гледам). Реално той изглежда така: collection.find filter: ->(song) { song.name.start_with?('My') }

    Което означава, че find може да работи по всичко, което песента му предостави

  4. @Пламен

    Oops. Да, друга грешка в условието. В последния момент смених разделителя от ; на . (познайте защо) и съм забравил да обновя примера. Ще го оправя.

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

    @Иван

    Моля научи научи Markdown и форматирай постовете си прегледно. Този съм го оправил, следващите - можеш и сам. kthxbye

    Иначе:

    1. По удачно е въобще да не са в текстов файл, а нещо струткурирано (YAML, JSON). Все пак, даваме в задачата само неща, които сме преподали.
    2. Не, няма нужда. Освен ако не искате.
    3. Както прецените. Оставяме това на вас и не тестваме за него. Адекватно е да хвърляте изключение, но за това не сме говорили. Аз просто бих приел, че входа е валиден.
    4. Пламен е прав - примера е грешен, ще го оправя по-късно днес.
  5. @Стефан

    Понеже завързахме разговор за мойто решение и се чудя къде да отговарям (единия път върнах отговор в ruby.bg другия път в gmail.com)

    Има ли вариант коментара да е позволен преди проверка поне върху собственото решение? Навит съм да го fork-на, ако е наложително :)

  6. @Михаил

    По принцип говорим за коментирането на предадено решение във форума :)

    Иначе Стефан каза, че предпочита сорсове без коментари и за това не пиша - ако някъде нещо има нужда от обяснение, има си начини ;)

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

    Питам се дали във входа на същинските тестове разделителя на данните съвпада поне с този формат: \. {2,} ?

    П.С. сменил си делимитера от ; на . защото системата за проверката на качеството има "фийчъра" да напипва ; в стринг или дефиниция на регулярен израз като забранен символ?

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

    Няма точка в имена на песни, артисти, жанрове и тагове. Нито запетая.

    П.С. сменил си делимитера от ; на . защото системата за проверката на качеството има "фийчъра" да напипва ; в стринг или дефиниция на регулярен израз като забранен символ?

    Имаше. Първоначално виждаше точка и запетая тук: ";", но не и тук: "foo;bar". После открих по-адекватен начин да става

  9. Ако имам нужда от метод, който да прави нещо върху Array, кое би било по-удачно:

    • Да си monkey-patch-на Array
    • Да напиша метода директно в класа, където ще го използвам

    Нуждата ми е изцяло с цел прегледност (метода е едноредов). Мерси

  10. Здравейте, а да попитам как стои въпроса със недовършена задача? Общо взето цял ден я мислих, но все забивах на едно и също място... та така и не успях да я докарам докрай.

    Има ли смисъл да качвам код в такъв случай?

  11. Технически въпрос, който може би е хубаво да се изясни в тоя контекст, за да няма недоволни на края на семестъра: Ако не се предадат n(3?) домашни, губиш всички точки от домашни. Качен код == предадено домашно или трябва да има положителни точки/минати тестове?

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