☀️ Summer Challenge
20 Python challenges from FizzBuzz to Merge Sort. Work through them at your own pace, tick them off as you go, and arrive in September actually ready.
Print numbers 1–100. For multiples of 3 print "Fizz", multiples of 5 print "Buzz", both print "FizzBuzz".
Write a function that takes a string and returns it reversed. Do it without using Python's built-in slice shortcut.
Write a function that counts how many vowels (a, e, i, o, u) are in a given string. Make it case-insensitive.
Write a function that adds up all numbers in a list without using Python's built-in sum() function.
Find the largest number in a list without using Python's max() function or sorting.
Write a function that prints the full times table for a given number (1 to 12).
Write a function that returns True if a word or phrase is a palindrome (reads the same forwards and backwards). Ignore spaces, punctuation and case.
Encrypt a string by shifting each letter forward by n places in the alphabet. Wrap around from Z to A. Leave non-letters unchanged.
Count how many times each word appears in a string. Return the results as a dictionary sorted by frequency (most common first).
Write a function that converts a binary string (e.g. "1011") to its decimal equivalent WITHOUT using int(x, 2).
Write a function that returns True if a number is prime. Then use it to print all primes up to 100.
Implement a Stack class with push(), pop(), peek(), is_empty() and size() methods. Use a list internally but don't expose it directly.
Write a function that returns True if two strings are anagrams of each other (same letters, different order). Ignore spaces and case.
Write a recursive Fibonacci function. First write the naive version, then add memoisation to avoid recalculating the same values. Time both.
Implement binary search on a sorted list — WITHOUT using Python's bisect module. Return the index of the target, or -1 if not found.
Implement merge sort from scratch. Write a recursive function that splits a list in half, sorts each half, then merges them back together in order.
Evaluate a mathematical expression written in Reverse Polish Notation (postfix). Use a stack to process tokens left to right.
Given a start word and end word, find the shortest sequence of single-letter changes that gets from one to the other, where every intermediate step must be a real word. Use BFS.
Implement run-length encoding (RLE): compress a string by replacing consecutive repeated characters with the character and its count. Also write a decompressor.
Build a singly linked list from scratch with a Node class and LinkedList class. Implement: append, prepend, delete, search, and print_list.
Tick off each challenge as you complete it — progress saves automatically in your browser.