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

Проверить собственное состояние через диагностику симулятора

Входы:

1. Однокубитная унитарная операция $U$.
2. Однокубитное состояние $|\psi\rangle$, заданное унитарной операцией подготовки $P$: $P|0\rangle=|\psi\rangle$. Для $P$ доступен обратный вариант Adjoint.

Напишите операцию на языке Q#, возвращающую true, если $|\psi\rangle$ — собственное состояние $U$, и false иначе.

Подсказка источника: библиотечная диагностическая операция CheckZero из Std.Diagnostics проверяет, находится ли кубит в $|0\rangle$.

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

namespace Kata {
    import Std.Diagnostics.CheckZero;

    operation IsEigenvector(U : Qubit => Unit, P : Qubit => Unit is Adj) : Bool {
        // Implement your solution here...

        return false;
    }
}