Какая может быть формула для решения этой задачи?

На собеседовании на позицию младшего продуктового аналитика, помимо всех прочих, была задана следущая задача:
"При регистрации пользователь может выбрать сразу несколько целей для знакомства из следующих: "Создание семьи", "Дружба", "Флирт",... (всего n типов) При этом на сервер передается двоичным кодом, например код 101 означает, что выбраны "Создание семьи" и "Флирт". А в таблицы к аналитикам попадает десятичное число. В данном случае просто число "5". Как применяя при вычислениях только выделение целой части (int(*)) и элементарные умножение, деление, нахождение суммы, разности чисел и возведение в степень, из кодов целей в таблице аналитиков, вычислять выбрана ли i-я по номеру цель? (Например, i=3 "Флирт".)
Написать формулу, где x-код у аналитиков, i - номер цели (то есть формула должна зависеть от x и i)"
Сколько не мучился, придумать нужную формулу так и не получилось.
  • Вопрос задан
  • 9068 просмотров
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
function int(x) {
    return Math.floor(x);
}

function check(x, i) {
    const v = int(x / 2 ** (i - 1));
    
    return v - int(v / 2) * 2;
}


Здесь ** - степень, её приоритет выше чем у деления, там х делится на 2 в степени..

возвращает 1, если выбрано, и 0, если не выбрано.

i нумеруется с единицы
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Deita
@Deita
661acf01eb5ab497541824.png)))
Ответ написан
Комментировать
@Saminsky
Программировал и автоматизировал когда машины были
v= (x//2**(i-1))%2

Деление нацело на 2**(i-1) "сдвигает" двоичное значение направо.
Остаток от деления 2 показывает крайний правый бит
Ответ написан
Комментировать
@nApoBo3
Для этой задачи значительно удобнее использовать бинарные( битовые ) операции если они поддерживаются. Конкретно в этом случае and.
Делаете "маску", выполняете and маски и входного значения, если выход отличный от нуля, значит в нужной позиции стоит единица.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы