I am currently working on a quantum computing subject for my coding school, and I had some questions for you. My objective would be to introduce students to quantum computing with an algorithmic project. I had two games ideas for it, one of them being harder to implement than the other one.
The first (the hardest), would be to provide each of the two players a quantum byte, randomly initialized: to do that, we would apply a Hadamard gate to each qubit in the byte, measure it, use the result of the measurement as the initial state for the byte, and then apply a Hadamard gate to each of the qubits again. This way, the player really has no way to know what lies within the byte. Once the bytes are initialized, each player is given a model of 7 bits he has to reproduce over measurement. For instance, if you are given the string 01110110, you would have to obtain either 01110110 or 11110110 upon measurement, the first qubit being used as a register, allowing the players to apply multi-qubit gates to the byte without alienating the rest of their QuBits. The first player who measures his byte and obtains what he or she was asked to obtain wins. This way students are introduced to quantum state preparation, and might even produce a strToQuBit
type of function.
The second idea would be similar, but instead of a model of byte they would have to reproduce, the game would be played by two players, one would have to fill their byte with 1s, the other with 0s, in other words, the string they would have to obtain upon measurement would always be either (00000000 or 10000000), or (11111111 or 01111111). The byte would of course still be randomly initialized before players can work with it.
Which idea do you think is the best, and is such a project even doable?
EDIT: I have omitted an important precision: players cannot change the states of the qubits once they have measured it, and all QuBits will be measured at once. Once the whole byte has been measured, either the result corresponds to the model byte and the player wins, or it does not and then a new model byte is assigned to the player who failed! ;)
Does this make it more complex?