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

Реализовать алгоритм Дойча — Йожи

Входы — число разрядов $N$, где $1\le N\le3$, и неизвестный фазовый оракул $U_f$, принимающий массив кубитов и действующий как $U_f|x\rangle=(-1)^{f(x)}|x\rangle$.

Гарантируется один из двух случаев: функция постоянна на всех $2^N$ строках либо сбалансирована, то есть на половине строк равна 0, а на другой половине — 1.

Напишите операцию на языке Q#, возвращающую true для постоянной функции и false для сбалансированной. Разрешён только один вызов оракула.

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

namespace Kata {
    operation DeutschJozsaAlgorithm (N : Int, oracle : Qubit[] => Unit) : Bool {
        // Create a mutable boolean variable for storing the return value.
        mutable isConstant = true;

        // Implement your solution here...


        return isConstant;
    }
}