1.5. Тест по простым алгоритмам

Повторим пройденный материал по оценке алгоритмов на жизненных примерах. В этом тесте мы попробуем пооценивать сложность алгоритма «Один день из жизни фронтендера».

1. Начнём с того, что наш герой, назовём его Игорь, просыпается и первым делом проверяет оповещения на телефоне.

Какую алгоритмическую сложность имеет это действие?

2. Не успев встать с кровати, Игорь услышал звонок в домофон — приехала доставка продуктов, которую он вчера заказывал! Теперь нужно несколько раз спуститься за одним из множества пакетов и вернуть их обратно на свой этаж...

Как сложно будет Игорю перетащить все пакеты с первого этажа на четвёртый?

3. Подняв все пакеты к себе в квартиру, Игорь пошёл готовить себе бутерброд на завтрак. Он долго думал, что хочет видеть в своём бутерброде и в итоге перепробовал все комбинации трёх ингредиентов из всех ингредиентов, прежде чем остановиться на одной.

Сколько времени это заняло?

4. После завтрака Игорь отправился на свою работу, где написал не самый лучший код для получения всех id из массива ответа с бэкенда:
function extractIds(entities) {
  const ids = [];

  for (let i = 0; i < entities.length; i++) {
    const entity = entites.find(({id}) => id === i);

    ids.push(entity.id);
  }

  return ids;
}

Какую алгоритмическую сложность имеет эта функция?

5. После продуктивного рабочего дня Игорь хочет заехать в несколько магазинов по дороге домой, чтобы купить вещей для ремонта.

Чтобы потратить на это как можно меньше времени, он старается максимально сократить свой маршрут и пробыть в пути как можно меньше времени. Сколько он потратит сил на составление маршрута?

6. Это был очень сложный день для Игоря, но вот он уже дома и готовится к следующему дню...

Кстати, а насколько сложным он был?