Контест Junior Паттерны конкурентности обновлено

Параллельное хеширование строк 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, раскладка по индексу.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.