№ 1524Квантовая теория информацииУровень 3

Различить неортогональные состояния с точностью не ниже 80 процентов

Вход — кубит в $|0\rangle$ или $|+\rangle=(|0\rangle+|1\rangle)/\sqrt2$. Напишите операцию на языке Q#, возвращающую true для $|0\rangle$ и false для $|+\rangle$.

Операция вызывается многократно; в каждом вызове оба входных состояния равновероятны. Общая доля правильных ответов должна быть не ниже 80 процентов.

Конечное состояние кубитов неважно.

Это задача различения квантовых состояний с минимальной ошибкой: допускаются неправильные ответы, но требуется ограничить их частоту.

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

namespace Kata {
    import Std.Math.*;

    operation IsQubitZeroOrPlus (q : Qubit) : Bool {
        // Implement your solution here...
        return true;
    }
}