Реализовать алгоритм Дойча — Йожи
Входы — число разрядов $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;
}
}