не знаю почему говоришь что минимальные переборы нельзя делать. вот например в Compound токене используется перебор с бинарным поиском для получения голосов, и ничего, прекрасно себя чувствуют и много кто у них взял логику)
если у тебя есть представление что цикл не будет длинее определённого числа итераций и оно вписывается в газ - то юзай сколько влезет, совсем без циклов - это бред же
И ты такой пишешь код, а потом понимаешь что кто то забрал награду а кто то нет, а контракт дальше живет своей жизнью и приходится на все функции в контракте навешивать этот пересчёт. Короче это больно было(