Инверсия кубита при двух единичных управлениях
Вход — три кубита в произвольном состоянии, хранящиеся в массиве длины 3:
$$\begin{aligned} |\psi\rangle={}&\alpha|000\rangle+\beta|001\rangle+\gamma|010\rangle\\ &+\delta|011\rangle+\epsilon|100\rangle+\zeta|101\rangle\\ &+\eta|110\rangle+\theta|111\rangle. \end{aligned}$$
Напишите операцию на языке Q#, инвертирующую третий кубит, если первые два находятся в $|11\rangle$. Требуемое состояние:
$$\begin{aligned} &\alpha|000\rangle+\beta|001\rangle+\gamma|010\rangle\\ &+\delta|011\rangle+\epsilon|100\rangle+\zeta|101\rangle\\ &+\theta|110\rangle+\eta|111\rangle. \end{aligned}$$
Заготовка Q#:
namespace Kata {
operation ToffoliGate (qs : Qubit[]) : Unit is Adj + Ctl {
// Implement your solution here...
}
}