Определить тип функции алгоритмом Дойча
Вход — неизвестный фазовый оракул булевой функции $f:\{0,1\}\to\{0,1\}$. Он задан операцией oracle, принимающей один кубит и возвращающей Unit, и действует как $U_f|x\rangle=(-1)^{f(x)}|x\rangle$.
Напишите операцию на языке Q#, которая возвращает true, если функция постоянна, то есть $f(0)=f(1)$, и false, если $f(0)\ne f(1)$. Разрешён только один вызов оракула.
Заготовка Q#:
namespace Kata {
operation DeutschAlgorithm (oracle : Qubit => Unit) : Bool {
// Implement your solution here...
return true;
}
}