Изменить знак всех состояний кроме нулевого
Вход — регистр из $N$ кубитов в произвольном состоянии.
Напишите операцию на языке Q#, оставляющую $|0\ldots0\rangle$ без изменения и умножающую каждое другое базисное состояние на $-1$. То есть требуется оператор
$$2|0\ldots0\rangle\langle0\ldots0|-I=\operatorname{diag}(1,-1,\ldots,-1).$$
Заготовка Q#:
namespace Kata {
import Std.Math.*;
operation ConditionalPhaseFlip(qs : Qubit[]) : Unit is Adj + Ctl {
// Implement your solution here...
}
}