Трета задача

  1. Публикувахме третата задача за домашно. Условието и примерен тест може да намерите и в github хранилището ни. Може да ви е полезно да си припомните нещата от този гайд преди да предадете решението.

    Не се плашете от дългото условие, задачата не е чак толкова трудна, просто сме се опитали да дадем изчерпателни инструкции. И все пак, тъй като задачата е обемиста, може да донесе 3 екстра точки (т.е. максимално 13 точки).

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

    Тук можете да ни питате ако има нещо неясно по условието или да споделяте ваши примерни тестове с останалите.

  2. Функцията Fastest трябва да изчака да свършат всички задачи и да върне най-бързата или веднага, след като най-бързата приключи, трябва да приключи функцията без да чака другите горутини.

  3. Трябва да върне резултата веднага щом най-бързата задача приключи без да чака останалите. Само се постарайте останалите задачи да не останат блокирани завинаги - например да се опитват да пишат в някакъв канал, от който вече никой не се опитва да чете или нещо подобно :)

  4. Когато говорите за "висящи" гпрутини, имате предвид такива котио вият поради наща вина или всичките които са увиснали(например някой чоек е дефинирал таск, който просто блокира и не прави нищо и го дава за изпълнение на някой от нашите).

  5. Да, имаме предвид да внимавате някоя горутина по ваша вина да не остане блокирала. Task-овете, които ние ще ви подаваме в тестовете, ще са нормални, няма да блокират безкрайно. Вие внимавайте какво се случва с всичките горутини, които пускате. Например при Fastest трябва да пуснете всички задачи конкуретно, но да ни върнете само първия резултат - не искаме останалите горутини да са блокирали безкрайно.

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

  7. Малко пояснения към предишното ми съобщение: ако искате да предадете само част от функциите в домашното, трябва да включите дефинициите и на останалите функции. Това е необходимо за да може да се компилират тестовете. Просто направете исканите функции и типове, но с "кухи" Execute(int) (int, error) методи, които винаги връщат грешка.

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