Първа задача

  1. Като за начало да спомена, че датата в новината сигурно е грешна - пише, че крайният срок е днес, а пък в /tasks пише 21ви.

    Подозирам, че все пак е по-вероятно да имаме повече от 16 часа за да си напишем задачата. :laughing:

    Сега за истинските въпроси:

    • Тъй като аргументът се казва mutator предполагам, че Map трябва да мутира масива на място, а не да създава нов масив, или греша?
    • На Filter при подаване на празен масив ок ли е да върнем nil или ще гръмне някой тест?
    • Не виждам Reduce да има трети аргумент за начална стойност на memo-то - празен стринг ли да ползваме?
  2. @Илия Датата е оправена въпреки че и 16 часа би трябвало да ви стигнат :).

    • не - ще преименувам функцията на mapper.
    • не - личното ми мнение(което се споделя по мои наблюдения от повечето хора) е че ако връщаш масиви, слайсове и каквито и да други вариации на темата колекции(не зависимо от езика) от неща и трябва да върнеш нула неща - връща празния вариант на колекцията.
    • не - първия елемент е началната стойност. Ако нямаш елементи връщаш "".
  3. Някой може ли да сподели дали следния тест е коректен:

    func TestStrange(t *testing.T) {
        input := []string{"", "12"}
        expected := "12aa"
    
        strangeConcat := func(s1, s2 string) string {
            return s1 + s1 + s2 + "aa"
        }
    
        result := Reduce(input, strangeConcat)
    
        if result != expected {
            t.Errorf("expected [%s] got [%s]", expected, result)
        }
    }
    
  4. След преспиване над въпроса и кратка дискусия:

    Memory leak-а не е memory leak :) няма нужда да се занимавате с него.

    Aко някой оправи (евентуалния) проблем свеждащ се до това че връщате слайсове с масиви по-големи отколкото ви трябват, които обаче са напълно достъпни което го прави НЕ memory leak, а по скоро разхищение на памет (в някои случаи) - ще получи бонус точка(един брой).

  5. Сигурно въпросът е излишен, но все пак... Ще се санкционира ли ако инициализираме result преди изпълняването на конкретната функция демек да имаме примерно (result string) вместо просто string (за типа на резултата)? Не за друго, ами в условието на предизвикателствата не бяха описани толкова подробно декларациите на функциите, а тук са показани без result.

  6. Силно ме съмнява да има проблем да пишеш (result string) - ако така или иначе планираш да използваш default-ната стойност наистина писането на result := "" би било малко излишно.

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

  7. Тези тестове със странни стрингови конкатенации ме съмняват. Написах нормалната имплементация на reduce и не минаха. Написах го пак по начин по който ми се струва, че е грешно и мина всички тестове.

  8. Не просто конкатенирах целия масив и го подадох като аргумент на combinator, иначе странните стрингови конкатенации не минават. Иначе правилната имплементация е да викаш combinator върху получения резултат и следващият елемент.

    homework01_test.go:23: expected [someStringHeresomeStringHere12someStringHere] got [12someStringHere]
    
  9. Ако си го написал както си мисля първия път го извикваш с "" и първия елемент от слайса и в тривиални случаи минава понеже combinatora не ти добавя свой стринг и реално след първата итерация си имаш първия елемент на слайса. Обаче когато добавя си проличава че всъщност правиш едно некоректно извикване. Реално трябва началната ти стойност да е първия елемент на слайса и да почнеш прилагането на combinatora от втория на татък за да получиш коректен резултат

  10. Дам, то и аз се ориентирах, че там е проблема.В момента го мъдря как да го опиша.

    edit: Issue fixed, само се бях панирал заради крайния срок. Явно трябва повечко задачи да реша на го, за да свикна със синтаксиса. Някой нещо против да направим една тема neverending golang challenge - Някой поства решение на поставена задача подобна на challenge-ите и дава друга с подобна трудност. Така, ще решиме повечко задачи и ще нагледаме на повечко код, че и без това няма много инфо в нета. Предлагам, да не се раздават точки, за да е за кеф и да не се abuse-ва.

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