Back to Resources
Documentation

Challenge Guide

How challenges are structured, how they are evaluated, and strategies for solving them effectively.

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.

MedalScore RequiredNovice TimeJourneyman TimeMaster Time
Gold95%+30 seconds1 minute5 minutes
Silver80%+1 minute2 minutes10 minutes
Bronze60%+2 minutes4 minutes30 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.