Challenge Guide
How challenges are structured, how they are evaluated, and strategies for solving them effectively.
On this page
Challenge Structure
Every challenge follows a consistent structure. Understanding this format helps you parse requirements quickly and plan your approach.
Description
A clear explanation of what the challenge asks you to build. This includes the quantum operation your circuit should perform and any background context.
Constraints
Maximum qubit count and circuit depth limits. Your solution must operate within these bounds to be valid.
Starter Code
A pre-loaded Python template with the necessary imports and a solution() function skeleton. Your circuit must be returned from this function.
Test Cases
One or more test cases that define expected output states. Your circuit is measured against these expected probability distributions.
The Interface
When you open a challenge, you will see a split-view layout:
- Left panel: challenge instructions, constraints, and medal thresholds
- Right panel: code editor with syntax highlighting and starter code
- Top controls: Run (test), Submit (official), and an optional timer
- Bottom panel: results, test outcomes, and leaderboard tabs
Difficulty Levels
Challenges are categorised into three difficulty tiers. Each tier represents a significant step up in complexity, qubit count, and conceptual depth.
Novice
1-2 qubits
Typical time: 30 seconds to 5 minutes
- Basic gate operations (X, H, Z)
- Single-qubit superposition
- Simple measurement outcomes
Journeyman
2-4 qubits
Typical time: 5 to 15 minutes
- Multi-qubit gates (CNOT, CZ)
- Entanglement and Bell states
- Controlled operations and oracles
Master
3+ qubits
Typical time: 15 to 30+ minutes
- Quantum algorithms (Grover, QPE)
- Teleportation and error correction
- Variational circuits and optimisation
Evaluation Criteria
When you submit a solution, your code is executed in an isolated sandbox against the challenge's test suite. Here is exactly what happens.
Circuit Execution
Your solution() function is called and the returned QuantumCircuit is run on a statevector simulator. The simulator produces exact probability amplitudes for each basis state.
Test Comparison
Each test case defines an expected probability distribution over measurement outcomes (e.g., {"0": 0.5, "1": 0.5}). Your circuit's actual output is compared against these expected values. A tolerance margin (typically 5-15%) accounts for measurement variability.
Constraint Checking
The platform verifies that your circuit stays within the specified constraints: maximum qubit count and maximum circuit depth. Solutions that exceed constraints are rejected.
Timing
Execution has a hard timeout (30 seconds by default). If your circuit takes too long to construct or simulate, the attempt will fail. This rarely happens unless your code has an infinite loop or extremely deep recursion.
Medals & Scoring
Your score is calculated as a percentage of test points passed. Medals are awarded based on both score and completion time.
| Medal | Score Required | Novice Time | Journeyman Time | Master Time |
|---|---|---|---|---|
| Gold | 95%+ | 30 seconds | 1 minute | 5 minutes |
| Silver | 80%+ | 1 minute | 2 minutes | 10 minutes |
| Bronze | 60%+ | 2 minutes | 4 minutes | 30 minutes |
Improving your medal
You can reattempt any challenge to improve your score and medal. The platform tracks your best result. Improved scores also earn additional XP.
Tips for Optimisation
Getting a correct answer is the first step. Earning gold medals requires efficient circuits submitted quickly. These strategies help.
Read the constraints first
Before writing code, check the maximum qubit count and circuit depth. Design your approach around these limits rather than trying to fit a solution into them afterward.
Minimise gate count
Fewer gates generally means a shallower, more efficient circuit. Look for gates that combine operations (e.g., using a single rotation gate instead of multiple basic gates).
Reduce circuit depth
Gates that act on different qubits can run in parallel. Reorganise your circuit so independent operations happen at the same depth level.
Know your gate set
Familiarise yourself with Qiskit's available gates. Knowing that a Toffoli gate exists saves you from manually decomposing a three-qubit controlled operation.
Use Run before Submit
The Run button lets you test without penalty. Use it to verify correctness before committing a submission. This saves time and protects your score history.
Plan before coding
For harder challenges, sketch the circuit on paper or think through the gate sequence before typing. A clear plan leads to faster, cleaner implementations.
Common Mistakes
These are the most frequent issues that cause submissions to fail or score lower than expected.
Forgetting to return the circuit
Your solution() function must return a QuantumCircuit object. If you forget the return statement, the evaluator receives nothing and all tests fail.
Exceeding qubit or depth limits
Check constraints before designing your circuit. Adding extra qubits "just in case" or using unnecessarily deep decompositions will cause constraint violations.
Adding measurements to the circuit
The platform handles measurement automatically via the statevector simulator. Adding measurement gates to your circuit can interfere with scoring.
Ignoring gate ordering
Quantum gates are applied in the order you add them. A Hadamard followed by a CNOT produces a different state than a CNOT followed by a Hadamard.
Not using Run to test first
Jumping straight to Submit means a failing solution counts against your attempt history. Always Run first to catch obvious errors.