Practice Arena

Python Coding Challenges

Write real Python in the browser. Instant feedback. From beginner to expert.

925 challenges 556 easy 323 medium 46 hard
Math & Number Theory easy

Partition function

Write a function that returns the number of ways to write a positive integer as a sum of positive integers (order irrelevant).

math recursion memoization
+12 pts 15m
Math & Number Theory easy

Multiply without multiply

Write a function that multiplies two integers using only addition, subtraction, and bit shifts — no * operator.

multiplication bit-manipulation arithmetic
+8 pts 12m
Bit Manipulation easy

Single Number XOR

Given a non-empty list of integers where every element appears twice except one, return the single number using XOR.

xor bit-manipulation arrays
+10 pts 12m
Bit Manipulation easy

Gray Code Decode

Implement gray_decode(n) that converts an n-bit Gray code integer back to its standard binary value using XOR accumulation.

gray-code bit-manipulation xor
+10 pts 15m
Bit Manipulation medium

Bitwise AND of a Range

Given a range [a, b], return the bitwise AND of all integers in that inclusive range without iterating over all numbers.

bitwise range optimization
+20 pts 15m
Bit Manipulation easy

Add without plus

Implement a function that adds two integers using only bitwise operations, no arithmetic plus or minus.

bitwise addition xor
+10 pts 15m
Bit Manipulation medium

Divide using shifts

Implement division of two integers using only bit shifts and arithmetic, without using division or modulo operators.

integer division bit shifts overflow
+20 pts 20m
Bit Manipulation easy

Brian Kernighan count

Implement a function that counts set bits using Brian Kernighan's efficient algorithm.

bit-manipulation integers counting
+10 pts 15m
Bit Manipulation easy

Clear Rightmost Set Bit

Write a function clear_rightmost_set_bit that accepts a non-negative integer and returns the integer with its rightmost set bit cleared.

bitwise bit manipulation integers
+8 pts 10m
Bit Manipulation easy

Subset XOR sum

Given a list of integers, compute the bitwise XOR of each non-empty subset and return the sum of those XOR totals.

xor bitwise subsets
+8 pts 10m
Dynamic Programming medium

Partition Equal Subset

Determine whether a given list of positive integers can be partitioned into two subsets with equal sum.

dynamic-programming subset-sum memoization
+30 pts 25m
Dynamic Programming medium

Target Sum Subsets

Write a function that counts the number of subsets of a list of positive integers that sum exactly to a target.

subset-sum dp counting
+25 pts 30m
Dynamic Programming medium

Integer Break Product

Given a positive integer n, break it into at least two positive integers that sum to n and maximize their product.

integer-break dynamic-programming max-product
+25 pts 30m
Dynamic Programming medium

Longest Arithmetic Subsequence

Given a list of integers, return the length of the longest arithmetic subsequence (constant difference) within it.

dp subsequence hashmap
+30 pts 25m
Dynamic Programming easy

Shortest Unsorted Continuous Subarray

Given an array of integers, return the length of the shortest contiguous subarray whose sorting makes the whole array sorted.

arrays sorting two-pointers
+10 pts 15m
Dynamic Programming medium

Count subsets with sum

Given a list of integers and a target sum, count how many subsets of the list sum to the target.

subset-sum dynamic-programming counting
+20 pts 25m
Dynamic Programming medium

Target sum assignments

Given a list of integers and a target, count how many ways to assign + or - to each number so the total equals the target.

dynamic programming combinatorics arrays
+30 pts 25m
Dynamic Programming medium

Subset Sum Exists

Given a list of positive integers and a target sum, return whether some subset adds up exactly to the target.

subset sum dynamic programming knapsack
+25 pts 30m
Dynamic Programming medium

Delete and Earn

Given an array of integers, find the maximum points you can earn by repeatedly deleting a number and all its adjacent values.

dynamic-programming array hash-map
+30 pts 25m
Recursion & Backtracking easy

Permutation Generator

Write a function that returns all permutations of a list of distinct integers.

recursion backtracking permutations
+10 pts 15m
Recursion & Backtracking medium

Combination Generator

Write a recursive function that returns all combinations of length k from a list of distinct integers.

recursion backtracking combinations
+25 pts 25m
Recursion & Backtracking medium

Permutations II

Return all distinct permutations of a list of integers that may include duplicates.

permutations backtracking deduplication
+25 pts 25m
Recursion & Backtracking medium

Subsets

Return all subsets (the power set) of a list of distinct integers.

recursion backtracking subsets
+20 pts 25m
Recursion & Backtracking medium

Subsets II

Given a collection of integers that might contain duplicates, return all possible unique subsets.

subsets backtracking deduplication
+25 pts 30m

Showing 49–72 of 93 challenges

Guide: free Python coding challenges

Practice Python by solving problems

PythonSkillset challenges are hands-on coding exercises from beginner to advanced. Open a challenge, read the problem, write Python in the split-pane editor, and run tests with Pyodide — no install required.

How to use the arena

  1. Pick a category — basics, algorithms, strings, and more
  2. Open a challenge, read the statement, and edit the starter code
  3. Run tests, fix failures, then try a related quiz or tutorial lesson

Challenges vs tutorials and quizzes

Challenges test what you can build under constraints. For guided teaching, use our Python tutorials. For quick checks, try quizzes or copy snippets from code samples.