Параллельное хеширование строк SHA-256: fan-out и fan-in
Условие
Посчитайте SHA-256 каждой строки (байты UTF-8 строки без перевода строки). Строки раздаются w воркерам (fan-out), результаты собираются из общего канала результатов (fan-in).
Ввод: n w (1 ≤ n ≤ 2000, 1 ≤ w ≤ 32), затем n непустых строк.
Вывод: n строк: первые 16 шестнадцатеричных символов хеша, в порядке ввода. Последней строкой выведите первые 16 символов SHA-256 от конкатенации всех полных хешей (в hex, строчные) в порядке ввода.
Решение должно быть конкурентным (горутины), а вывод не должен зависеть от порядка их выполнения.
Пример
3 2
hello
привет
go
2cf24dba5fb0a30e
e58f1e8c55fa105b
4cd0e21a9a0795a1
73fe5480626533ee
Как подойти
Канал задач, w воркеров, канал результатов {idx, hash} с закрытием после wg.Wait, раскладка по индексу.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.
Предыдущий вопрос
Параллельный BFS по уровням на горутинах
Следующий вопрос
Параллельная сортировка слиянием с ограничением глубины