Пета задача

  1. func (f Factory) ReturnResult(order Order)

    За всяка изпълнена поръчка връща резултата на клиента, който я е изпратил

    Kакво значи това ? Къде я връщам не ми е ясно как точно се очаква да работи функцията.

    И тия състояния на къв принцип кога и къде се очаква да се случват не става много ясно.

    Поръчките асинхронни ли ще са или при създаването на фабрика ще се извърши само една щото никъде не става ясно.

    Условието е безкрайно дълго а накрая половината неща не стават ясни(или се очаква да са по подразбиране тогава изобщо къв е смисъла да е толкова дълго всичко можеше да е събрано в 5 изречения).

  2. factory := NewFactory(0)
        factory.StopProducing()
        factory.StorageAdd(map[string]uint16{
            `che`:             1,
            `(kop|bob|top)`:   1,
            `(panda|raccoon,`: 1,
            `[0-9]+`:          1,
        })
        result, err := factory.generateRegexp([]string{"kopche", "bobche", "topche"})
    
        if err != nil {
            t.Error("Unable to produce with valid materials")
        }
    
        if result != `^(kop|bob|top)che$` {
            t.Errorf("Expected ^(kop|bob|top)che$, got %s", result)
        }
    }
    

    Аз ли нещо не разбирам, или правите фабрика с 0 работници, после я карате да спре да произвежда, и после искате метода generateRegexp да върне резултат? Т.е. явно искате тия така наречени 'работници', да ползват този метод (той да върши съществената работа)?

    И какво става ако има повече от един регулярен израз, който match-ва всички думи в слайса?

  3. Здравейте, Весела Коледа на патерици и по същество:

    @Мартин

    1. Погледни си Order. И реално погледнато не е "всяка" а "подадената".
    2. Първите два абзаца би трябвало да ти отговорят.
    3. Хм ... може и да си прав и да е грешка при въвеждането - не съм писал аз задачата. Но и да грешка и да не е, резултата от теста не се променя. Освен това според мен материалите не е задължително да са коректен регулярен израз.

    @Иван - да, което навярно е и причината първата буква да е малка :).

    п.п. Приятна Нова Година :)

  4. Добре аз наистина не мога да разбера тая функция ReturnResult може ли някой да напише един смислен пример как се очаква да се ползва това нещо щото в тествовете които сте дали ползвате generateRegexp

  5. Здравейте,

    1. Да предаваме с package solution което се ползва от примерните тестове или както обикновено с package main?
    2. Ако получим два невалидни материала, които обаче в комбинация правят валиден регулярен израз, който удолетворява поръчката? Смисъл невалидните материали да ги ползваме или да ги пренабрегваме/трием? Примерно che` и `(kop|bob|top)
    1. Тъй като не са ни казвали да променяме package може би все още е main.

    2. Ами предполагам, че щом Кирил каза, че не е нужно материалите сами по себе си да са валидни регулярни изрази, то не би трябвало да ги махаме. Поне такова е моето разбиране.

      "(sad|koko," + ")" заедно правят валиден regex.

  6. И аз имам неясни елементи около разбирането на това как трябва да работи при по-сериозно натоварване.

    1. Ако работниците не могат да си свършат работата достатъчно бързо и тогава се появят нови материали - трябва ли да се опитат да направят продукта и с новите материали или само с тези, които е имало в момента на започване на работата по дадения продукт?

    2. Също ако даден работник види, че може да направи даден продукт с определени материали, но в момента на взимането им види, че някой вече ги е взел - трябва ли да се опитва да направи продукта с останалите материали? Логичният отговор е да, но при това положение ще се забави още.

    3. Малко пак във връзка с 1 - ако се появят определен набор поръчки и след това се появи заявка за добавяне на материали, трябва ли задължително да се свършат всички поръчки преди добавянето на нови материали? И ако да то трябва ли тогава да е блокираща операция в такъв момент или е ок да има опашка за какво трябва да се свърши и непосредствено след добавянето на материалите те да не са налични още? Принципно това дори не би трябвало да може да се разбере при определени имплементации, но ако има тестове в подобна ситуация, които използват generateRegexp може те да се счупат мислейки, че материалите не са налични още.

  7. Също един тъп въпрос - при създаване на нова фабрика тя започва ли директно да работи?

    Понеже в тестовете викате stopProducing веднага след създаване, а поне според мен фабриката би трябвало да се създава в нерабтещо състояние, а после да се пуска изрично?

    Вие кое от двете очаквате - при създаване да работи или не?

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