Различить повороты 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;
}
}Решения пока нет.
Предложить решение
Войти, чтобы отправить материал.