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

Различить Z и минус Z управляемым вызовом

Вход — операция на одном кубите, реализующая либо $Z$, либо $-Z=-|0\rangle\langle0|+|1\rangle\langle1|$. Напишите операцию на языке Q#, возвращающую 0 для $Z$ и 1 для $-Z$.

Для операции определены обратный вариант Adjoint и управляемый вариант Controlled. Разрешено суммарно ровно одно обращение к переданной операции или её вариантам.

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

namespace Kata {
    operation DistinguishZfromMinusZ (unitary : (Qubit => Unit is Adj + Ctl)) : Int {
        // Implement your solution here...

        return -1;
    }
}