Оракул равенства двух квантовых цветов
Входы — два регистра по nBits кубитов в произвольных состояниях $|x_0\rangle$ и $|x_1\rangle$, представляющие два цвета, и целевой кубит в произвольном состоянии $|y\rangle$.
Напишите операцию на языке Q#, инвертирующую целевой кубит тогда и только тогда, когда $x_0=x_1$. В остальных базисных случаях цель должна остаться без изменения.
Восстановите исходные значения входных регистров после вычисления. Решение должно работать на суперпозициях; измерения запрещены.
Заготовка Q#:
namespace Kata {
operation Oracle_ColorEquality(x0 : Qubit[], x1 : Qubit[], y : Qubit) : Unit is Adj + Ctl {
// Implement your solution here...
}
}