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

Фазовый оракул ИЛИ всех битов кроме одного

Входы — регистр запроса из $N\ge2$ кубитов в произвольном состоянии $|x\rangle$ и целое $k$, $0\le k<N$.

Напишите операцию на языке Q#, меняющую знак базисного состояния, если хотя бы один бит, кроме k-го, равен 1. Значение k-го бита на результат не влияет: после его исключения регистр должен быть ненулевым, чтобы знак изменился.

Можно исследовать варианты как со вспомогательными кубитами, так и без них.

Примеры: для $|010\rangle$ при k=0 измените знак; при k=1 ничего не делайте.

Перед реализацией ответьте: это оракул инверсии цели или фазовый оракул? Подсказка источника: меняется фаза входа по значению функции.

Ещё подсказка: можно скопировать ранее реализованные оракулы. Используйте срезы массива, чтобы получить части до и после k-го элемента.

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

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

    }
}

Сообщить об ошибке

Войти, чтобы отправить материал.