Первый успешный ответ с пределом времени
Задача по программированию с проверкой онлайн
- Сложность
- Средняя
- Языки
- Python
- JavaScript
- TypeScript
- Темы
- Асинхронность и потоки
- Исключения
Дан список заданий jobs и предел timeout в миллисекундах. Задание — асинхронная функция без аргументов: вызовите её (await job()), чтобы выполнить его; оно может завершиться ошибкой (исключением). Запустите все задания одновременно, в момент вызова функции, и верните значение того, которое первым завершилось успешно; ошибки не считаются ответом. Если несколько заданий успешно завершились в один и тот же момент, верните значение задания с меньшим индексом.
Верните -1, если до истечения timeout мс ни одно задание не завершилось успешно: все упали, остальные не успели или список пуст. Ответ нужен сразу: не ждите остальных заданий после первого успеха и после истечения предела. Значения заданий неотрицательны; в тестах ни одно задание не завершается ровно через timeout мс. В списке до 50 заданий.
Пример: задания возвращают 1 через 20 мс, падают через 5 мс и возвращают 3 через 10 мс; timeout = 100 → 3.
Источник: задача CodeShare