Тук е мястото да питате, ако има нещо неясно по условието на първа задача. Примерният тест е тук.
Прочетете внимателно как да (не) си изпращате задачите :)
Тук е мястото да питате, ако има нещо неясно по условието на първа задача. Примерният тест е тук.
Прочетете внимателно как да (не) си изпращате задачите :)
Като за начало да спомена, че датата в новината сигурно е грешна - пише, че крайният срок е днес, а пък в /tasks
пише 21ви.
Подозирам, че все пак е по-вероятно да имаме повече от 16 часа за да си напишем задачата.
Сега за истинските въпроси:
mutator
предполагам, че Map
трябва да мутира масива на място, а не да създава нов масив, или греша?Filter
при подаване на празен масив ок ли е да върнем nil
или ще гръмне някой тест?Reduce
да има трети аргумент за начална стойност на memo
-то - празен стринг ли да ползваме?@Илия Датата е оправена въпреки че и 16 часа би трябвало да ви стигнат :).
Този коментар е премахнат понеже вече не е валиден и само може да ви обърка
Reduce не трябва ли да работи със функция която връща стринг, а не със такава която връща булева стойност ( len(data) == 1 ) ?
Edit : Сори за тази тъпотия, малко съм бавен!
Някой може ли да сподели дали следния тест е коректен:
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)
}
}
Да
След преспиване над въпроса и кратка дискусия:
Memory leak
-а не е memory leak :) няма нужда да се занимавате с него.
Aко някой оправи (евентуалния) проблем свеждащ се до това че връщате слайсове с масиви по-големи отколкото ви трябват, които обаче са напълно достъпни което го прави НЕ memory leak, а по скоро разхищение на памет (в някои случаи) - ще получи бонус точка(един брой).
Какво се очаква да върне Reduce()
ако му се подаде slice
с един елемент?
Елемента
Сигурно въпросът е излишен, но все пак... Ще се санкционира ли ако инициализираме result преди изпълняването на конкретната функция демек да имаме примерно (result string) вместо просто string (за типа на резултата)? Не за друго, ами в условието на предизвикателствата не бяха описани толкова подробно декларациите на функциите, а тук са показани без result.
Силно ме съмнява да има проблем да пишеш (result string)
- ако така или иначе планираш да използваш default-ната стойност наистина писането на result := ""
би било малко излишно.
Иначе предполагам, че този синтаксис ще го използваме основно когато имаме да връщаме повече стойности, но не би трябвало да има проблем да го използваме и за една - пиши го както ти изглежда по-четимо.
Тези тестове със странни стрингови конкатенации ме съмняват. Написах нормалната имплементация на reduce и не минаха. Написах го пак по начин по който ми се струва, че е грешно и мина всички тестове.
@Илия, благодаря. @Йончо, да не би да си извиквал combinator с аргументи първия и първия елемент, вместо с първия и втория?
Не просто конкатенирах целия масив и го подадох като аргумент на combinator, иначе странните стрингови конкатенации не минават. Иначе правилната имплементация е да викаш combinator върху получения резултат и следващият елемент.
homework01_test.go:23: expected [someStringHeresomeStringHere12someStringHere] got [12someStringHere]
Ако си го написал както си мисля първия път го извикваш с "" и първия елемент от слайса и в тривиални случаи минава понеже combinatora не ти добавя свой стринг и реално след първата итерация си имаш първия елемент на слайса. Обаче когато добавя си проличава че всъщност правиш едно некоректно извикване. Реално трябва началната ти стойност да е първия елемент на слайса и да почнеш прилагането на combinatora от втория на татък за да получиш коректен резултат
Дам, то и аз се ориентирах, че там е проблема.В момента го мъдря как да го опиша.
edit: Issue fixed, само се бях панирал заради крайния срок. Явно трябва повечко задачи да реша на го, за да свикна със синтаксиса. Някой нещо против да направим една тема neverending golang challenge - Някой поства решение на поставена задача подобна на challenge-ите и дава друга с подобна трудност. Така, ще решиме повечко задачи и ще нагледаме на повечко код, че и без това няма много инфо в нета. Предлагам, да не се раздават точки, за да е за кеф и да не се abuse-ва.
Трябва ли да проверяваме входните данни дали са коректни - т.е дали са nil или да разчитаме на коректен вход ?
Трябва ли да проверяваме входните данни дали са коректни - т.е дали са nil или да разчитаме на коректен вход ?
@Шенай, не, няма нужда да проверявате входните данни. Няма да ви даваме странни данни.
Трябва да сте влезли в системата, за да може да отговаряте на теми.