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

Восстановить три однокубитных вентиля по матрице

Вход — три кубита в произвольной суперпозиции $|\psi\rangle$, хранящиеся в массиве длины 3.

Напишите операцию на языке Q#, применяющую к системе матрицу

$$Q=\begin{bmatrix} 0&-i&0&0&0&0&0&0\\ i&0&0&0&0&0&0&0\\ 0&0&0&-i&0&0&0&0\\ 0&0&i&0&0&0&0&0\\ 0&0&0&0&0&1&0&0\\ 0&0&0&0&-1&0&0&0\\ 0&0&0&0&0&0&0&1\\ 0&0&0&0&0&0&-1&0 \end{bmatrix}.$$

Это преобразование можно представить как применение трёх однокубитных вентилей. Автор рекомендует держать под рукой список распространённых квантовых вентилей.

Подсказка источника: верхняя правая и нижняя левая четверти матрицы нулевые, а нижняя правая равна верхней левой, умноженной на $i$. На какое тензорное произведение однокубитной и двухкубитной матриц это похоже? Каких именно?

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

namespace Kata {
    operation CompoundGate(qs : Qubit[]) : Unit is Adj + Ctl {
        // Implement your solution here...

    }
}