Инверсия по заданному набору управляющих битов
Входы:
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...
}
}Предложить решение
Войти, чтобы отправить материал.