№ 1599Квантовые вычисленияУровень 2

Инверсия по заданному набору управляющих битов

Входы:

1. controls — регистр из $N$ кубитов в произвольном состоянии $|\phi\rangle$.
2. target — кубит в произвольном состоянии $|\psi\rangle$.
3. controlBits — массив из $N$ логических значений, задающий требуемое состояние каждого управления.

Напишите операцию на языке Q#, применяющую управляемый $X$ к target, когда состояния controls соответствуют controlBits. Значение true требует $|1\rangle$, false — $|0\rangle$.

Например, при controlBits=[true,false,true] инверсия цели должна происходить только при состоянии управлений $|101\rangle$.

Подсказка источника: можно воспользоваться библиотечной операцией. При самостоятельной реализации обязательно восстановите исходное состояние управляющих кубитов.

Заготовка Q#:

namespace Kata {
    operation MultiControls(
        controls : Qubit[], target : Qubit, controlBits : Bool[])
    : Unit is Adj + Ctl {
        // Implement your solution here...

    }
}

Предложить решение

Войти, чтобы отправить материал.