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

Фазовый оракул чётности числа единиц

Вход — массив из $N$ кубитов в произвольном состоянии. Для битовой строки $x$ положим $f(x)=1$, если число единиц в ней нечётно, и $f(x)=0$ в противном случае.

Напишите операцию на языке Q#, реализующую $U_f|x\rangle=(-1)^{f(x)}|x\rangle$ для каждого базисного вектора.

Подсказка источника: выразите $f(x)$ как сумму функций отдельных битов по модулю 2. Затем представьте действие оракула как произведение действий на отдельные кубиты.

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

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

    }
}