не то что реально происходит внутри
(0..32).map(|num| (n >> num) & 1).fold(0, |x, y| x+y) as i32
Сумма битов, но код говно
А popcnt интринсиком есть?
Количество единиц, если быть точнее, я о том, что сначала map на всём диапазоне отрабатывает, а потом fold? Или сначала на 0 map, fold, потом на 1 map, fold?
Поэлементно на момент фолда (map + fold для получения next), но тут непринципиально и может оптимизироваться в любую сторону
Обсуждают сегодня