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

Различить повороты Rz и Ry

Входы:

1. Угол $\theta\in[0.01\pi;0.99\pi]$ в радианах.
2. Операция на одном кубите, реализующая либо $R_z(\theta)$, либо $R_y(\theta)$:

$$R_z(\theta)=\begin{bmatrix}e^{-i\theta/2}&0\\0&e^{i\theta/2}\end{bmatrix},$$

$$R_y(\theta)=\begin{bmatrix}\cos(\theta/2)&-\sin(\theta/2)\\\sin(\theta/2)&\cos(\theta/2)\end{bmatrix}.$$

Напишите операцию на языке Q#, возвращающую 0 для $R_z$ и 1 для $R_y$. Для переданной операции определены обратный вариант Adjoint и управляемый вариант Controlled. Число обращений к операции и этим вариантам не ограничено.

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

namespace Kata {
    import Std.Convert.*;
    import Std.Math.*;

    operation DistinguishRzFromRy(theta : Double, unitary : (Qubit => Unit is Adj + Ctl)) : Int {
        // Implement your solution here...

        return -1;
    }
}

Решения пока нет.

Сообщить об ошибке

Войти, чтобы отправить материал.