Контест Middle Сеть, Codable и хранение обновлено
Задача на Swift: повтор запроса с экспоненциальной задержкой
Условие
Сетевой клиент повторяет запрос по правилам:
- ответ
2xx: успех; - повторяем только при коде
0(таймаут),429и5xx, остальные коды это сразу неудача; - всего не больше
maxAttemptsпопыток; - перед
i-м повтором (с 1) ждёмmin(cap, base · 2^(i-1))мс.
Первая строка: base cap maxAttempts (1 ≤ base ≤ cap ≤ 10⁹, 1 ≤ maxAttempts ≤ 60). Вторая: q (1 ≤ q ≤ 2·10⁴). Дальше q строк: коды ответов на последовательные попытки (кодов хватает до остановки).
Для каждого сценария выведите OK <попыток> <ожидание> или FAIL <последний код> <попыток> <ожидание>.
Пример
500 4000 5
4
200
503 503 200
404
500 0 429 503 502
OK 1 0
OK 3 1500
FAIL 404 1 0
FAIL 502 5 7500
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.