codeforces#P1357A6. Distinguish four Pauli gates

Distinguish four Pauli gates

Description

You are given an operation that implements a single-qubit unitary transformation: either the identity (I gate) or one of the Pauli gates (X, Y or Z gate). The operation will have Adjoint and Controlled variants defined.

Your task is to perform necessary operations and measurements to figure out which unitary it was and to return

  • 0 if it was the I gate,
  • 1 if it was the X gate,
  • 2 if it was the Y gate,
  • 3 if it was the Z gate.

You are allowed to apply the given operation and its adjoint/controlled variants exactly once.

You have to implement an operation which takes a single-qubit operation as an input and returns an integer. Your code should have the following signature:

namespace Solution {
    open Microsoft.Quantum.Intrinsic;
operation Solve (unitary : (Qubit => Unit is Adj+Ctl)) : Int {
    // your code here
}

}

</p>