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

Оракул равенства двух квантовых цветов

Входы — два регистра по 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...

    }
}