Фазовый оракул числа семь
Вход — три кубита в произвольном состоянии $|x\rangle$, образующие регистр запроса.
Напишите операцию на языке Q#, меняющую знак базисного состояния $|111\rangle$ (число 7) и оставляющую остальные базисные состояния без изменения. Дополнительные кубиты выделять нельзя.
Примеры: для $|111\rangle$ измените знак; для $|010\rangle$ или $|101\rangle$ ничего не делайте.
Подсказка источника: какой однокубитный вентиль меняет знак $|1\rangle$, сохраняя $|0\rangle$? Как изменить его, чтобы знак менялся только для $|111\rangle$?
Заготовка Q#:
namespace Kata {
import Std.Arrays.*;
operation IsSeven_PhaseOracle(x : Qubit[]) : Unit is Adj + Ctl {
// Implement your solution here...
}
}