Worker pool с сохранением порядка результатов
Условие
Для каждого числа посчитайте длину последовательности Коллатца до 1 (число шагов: чётное делим на 2, нечётное заменяем на 3x+1). Обработку выполняет пул из w воркеров.
Ввод: n w (1 ≤ n ≤ 3000, 1 ≤ w ≤ 64), затем n чисел от 1 до 10⁶.
Вывод: n результатов в порядке ввода через пробел, затем на отдельной строке номер (с 0) числа с наибольшей длиной (при равенстве наименьший номер).
Решение должно быть конкурентным (горутины), а вывод не должен зависеть от порядка их выполнения.
Пример
5 2
1 2 3 6 7
0 1 7 8 16
4
Как подойти
Канал индексов, w воркеров, res[i], wg.Wait, максимум после ожидания.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.
Предыдущий вопрос
Параллельная сортировка слиянием с ограничением глубины
Следующий вопрос
Что выведет Go: слияние каналов fan-in