Poul Lirman
Ученик
(152),
на голосовании
4 недели назад
Есть бесконечный поток данных. Из него нужно вытаскивать числа, которые являются палиндромными в какой-либо системе счисления с основанием от 2 до 16 включительно. При этом, основание системы счисления для каждого числа определяется отдельным потоком данных, который генерирует числа от 2 до 16 псевдослучайным образом, с равномерным распределением, но с заданным seed-ом, который ты получаешь в самом начале. А теперь самое интересное: этот seed – не число, а строка, хеш которой (SHA-256) нужно преобразовать в число для инициализации генератора псевдослучайных чисел. Нужно реализовать это все максимально эффективно, используя асинхронность и минимизируя потребление памяти. Задача усложняется тем, что проверку на палиндромность нужно делать без явного перевода числа в другую систему счисления – только математическими операциями. Также нужно выводить не сами палиндромные числа, а кортежи, состоящие из исходного числа, основания системы счисления, в которой оно палиндромно, и времени, затраченного на его обработку с точностью до микросекунд. И все это дело должно работать под высокой нагрузкой, учитывая, что поток данных может выдавать до миллиона чисел в секунду