Първа задача

  1. В повечето случаи, операторът е кратък и достатъчно смислово ясен. Въпрос на преценка според ситуацията. В конкретния случай, аз бих избрал оператора, който е "универсален" и в почти всички езици прави едно и също. Извикването на метод в случая би ме накарало да се замисля дали се случва нещо повече, което не е целта.

  2. Като се каже "Смятайте, че в 0 и 1 метода е недефиниран" какво трябва да връща 0.prime_divisors => [], nil или да хвърля exception?
    Или просто няма да има 0.prime_divisors и 1.prime_divisors в автоматичните тестове, така че каквото и да връща, теста ще мине?

  3. Да се опитваме ли да решаваме проблемите оптимално или да не се напрягаме толкова? Имам предвид задачата с делителите, може да се опитат всички числа, може да се прескачат четни и т.н?

  4. @Милан, не търсим най-оптималното решение. Това не е ПРАНКА :) Ако те дразни, че е супер неоптимално и ти идва отвътре да го оптимизираш и в случай, че това не вреди на баланса между оптимално изпълнение и четимост, действай и оптимизирай :)

    @Адриан, имам предвид, че няма да има такива тестове, след като е недефинирано поведението му и след като не сме казали как да реагирате при недефинирано поведение.

  5. @Станислав - в условието на задачата е записано "връща списък". Аз с Ruby до преди този курс не съм се занимавала, но ако това, което показваш, може да се интерпретира като "списък", ще се изненадам много.

    Ако греша, много моля някой да ме поправи. Не изключвам тази възможност.

  6. @Камелия и @Станислав — този клас Generator го има само в Ruby 1.8, в 1.9 е премахнат. Иначе, Камелия е права, че условието изисква списък. За списък можем да приемем нещо, което има метод each, позволяващ обхождане, който yield-ва по един аргумент на итерация. Това е нещото, което трябва да върнете, ако държите да не е списък :) За методи next и подобни не се споменава.

  7. Митьо ви лъже, трябва задължително да върнете масив. На приемаме нищо друго, независимо какви методи има.

    Колкото до поведението в 0 и 1, то просто не ни е интересно. Върнете какво искате там, стига да не е някаква глупост (например символът :baba).

    Иначе, не знаех за Generator, но Митьо е прав — това го няма в Ruby 1.9, понеже е едно от супер малкото неща, които ползва продължения (continuation). Шокиран съм. При всички случай, това да върнете безкрайна структура със всички прости числа в 0 е крива идея. Безкрайните структури са пипкава работа. Можете да изненадате хипотетичния потребител с една такава.

  8. Здравейте. Написах следния тест :

    describe "Hash#group_values" do
      it "maps each value to an array of keys" do
        {a: 1,b: 2, c: 3}.group_values.should eq {1 => [:a], 2 => [:b], 3 => [:c]}
      end
    end
    

    и получавам грешка "syntax error" за самия тест. Не виждам къде е грешката.

  9. Можем ли да преизползваме някой от методите, които сме си написали за целта на друг от исканите?

    Например нашият Integer#prime_divisors може да влезе в употреба за Range#fizzbuzz, тъй като 3 и 5 са прости числа.

  10. Може ли след като сме получили коментари по задачата да променим кода, към който има забележки?

    От един от коментарите разбрах, че трябва да разбия единият метод на два - тоест значи може да добавяме и свой методи различни от тези дадени в задачата?

  11. @Пламен Това, което аз разбирам е, че трябва задължително да имаш методи дефинирани като по условието, защото задачата се тества автоматично. От там нататък ти какво ще деифинираш мисля, че е изцяло твоя работа. Ако искаш можеш и класове да си правиш - важното е да може да се рънват тези методи. (За последното евентуално могат да взимат точки :D)

  12. Очакваме от вас да пооправите неща, за които сме дали коментари. Дали е задължително - зависи от коментарите.

    А иначе, може да пишете какъвто код си искате (без require), стига да вярвате, че това е правилното решение.

  13. @Мартин - ами аз получих писло на пощата с линк. Принципно се намират на страницата с решението. Предполагам, че те ще станат публични след края на срока за предаване. Но аз даже и на моята си задача не намерих линк (може би съм пропуснал нещо), така че ползвам този дето съм го получил на пощата.

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