Първа задача

  1. Ако подадем на subarray_count като аргумент масив с дължина по-голяма от дължината на масива, пак връщаме 0, нали? Т.е.

    [1, 2, 3].subarray_count([1, 2, 3, 4])
    

    трябва да ни върне 0? Може и да изглежда очевидно, но за по-сигурно реших да питам. :)

  2. Аз го виждам така:

    [1, 2, 3].subarray_count([]) # невалиден аргумент
    [].subarray_count([1, 2, 3]) # 0
    

    Не мога да реша колко пъти се среща [] като подсписък на [1, 2, 3, 4, 5], така че ти предлагам да го оставиш недефинирано.

  3. То е по-скоро за всички домашни, но имаме ли право официално да си разменяме тесове. Тоест, ако някой реши (случайно) да си напише допълнителни автоматични проверки за кода си, ще се приеме ли като нещо ужасно, ако ги сподели?

  4. Разбира се всеки би ползва тестове на своя отговорност. По-добре да ти изгърми тест и да нямаш грешка, отколкото да не изгърми и да имаш. Поне аз така мисля. В крайна сметка никой не би могъл да те кара да ползваш допълнителни тестове, затова ми изглежда като смислено нещо, но нека все пак ръководството се изкаже.

  5. @Евгени Невалиден/некоректен аргумент е. Замисли се, питаш колко пъти нищото се среща някъде си - било то, празен списък, списък с 1, 2, ... 1 000 аргумента ;) На мене ми е по-интересно дали един списък е подсписък на себе си: [1,2,3].subarray_count([1,2,3]), но бих заложила на не.

  6. Математически, едно множество е подмножество на себе си. А в случая на наредени и крайни, даже спокойно може да се каже и че се съдържа точно веднъж в себе си. А колко нищота има в нищото... може би е твърде философско и по-разумно да се приеме за недефинирано наистина :)

  7. [].subarray_count([]) това не е ли 0? Аргумента ми е че [] не съдържа никакви елементи. Тоест нула. Докато ако имахме [[]] това вече е множество съдържащо един елемент, който е празното множество. Иначе си прав за това че всяко множество е подмножество на себе си, но в случая не важи защо броят на елементите е 0 (мисля, че това е валидният контра аргумент).

    НО може ли да се спрем на въпроса на колегата Ивайло за тестовете? Не за друго, но снощи мислех да публикувам отделна тема по въпроса, естествено в негова подкрепа. Според мене е добра идея, както каза Ивайло, всеки си носи отговорност :)

  8. Принципно нямам нищо против споделянето на тестове, но предлагам да вкараме някакъв ред, по който да има 'общоприето поведение' за да има смисъл (например всеки петък да се чува тежката дума на Стефан и коментарите да спират). Не съм много сигурен дали е постижимо, но трябва да разделим 'собствена отговорност' от 'загуба на време':)

  9. Не съм сигурен за тестовете.

    По тази причина: да, имате право да го правите засега. Може да си променя мнението вбъдеще. Ако го правите, разрешено е да става само като Gist-ове в GitHub. Gist-овете могат да се fork-ват, така че се забавлявайте.

    Ето моя take на другия въпрос:

    [1, 2, 3].subarray_count([1, 2, 3]) # 1, очевидно
    [].subarray_count([])               # не е дефинирано
    

    Докато един списък е подсписък на себе си, празния списък не е валиден аргумент за тази операция.

  10. [].subarray_count([])               # не е дефинирано
    

    Това води до следния въпрос: трябва ли да го обработваме като случай (и примерно да връщаме nil)? Сега нямаме ограничения, но като дойдат ще е лошо да хабим редове за if-чета. :) В моето решение при извиквания с [ ] функцията не зацикля и даже връща резултат (безсмислен, но все пак :) ) Следва ли да се пазим?

    P.S. feature request - Може ли към функционалността на форума да се добави възможност за цитиране на по-стара публикация? :)

  11. Това води до следния въпрос: трябва ли да го обработваме като случай (и примерно да връщаме nil)? Сега нямаме ограничения, но като дойдат ще е лошо да хабим редове за if-чета. :) В моето решение при извиквания с [ ] функцията не зацикля и даже връща резултат (безсмислен, но все пак :) ) Следва ли да се пазим?

    Правете каквото искате. Аз бих хвърлил грешка. В никакъв случай не бих върнал nil от функция, която връща число. Не знаете как се хвърля грешка, обаче, така че няма значение.

    P.S. feature request - Може ли към функционалността на форума да се добави възможност за цитиране на по-стара публикация? :)

    П.П.: В Markdown има blockquote. Трябва да си копираш текста, ама това е положението. Ако искаш някакъв линк, който да го прави автоматично, можеш да отвориш issue в GitHub

  12. Любопитно ми е доколко в Ruby се поощрява защитното програмиране? И какви аргументи за предимствата и недостатъците му съществуват по принцип?

    П.П.: В Markdown има blockquote.

    P.S. Кой да чете...

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