/Programming-Challenges

A community project of programming challenges

🔥 Pro/g/ramming Challenges 🔥

A community project of programming challenges based on this
Image of Pro/g/ramming Challenges

Table of contents

How to Participate

  1. fork the project
  2. submit issus to tell me you participe and send me the link of your fork
  3. when you finish a project, check the corresponding box in the README in your fork

Guidelines

Understand the problem

  • Do your own research. It’s an incredibly useful kill which can be applied to and can be applied to anything else.

  • If a problem seems difficult, good! Draw it out, write it out, do whatever you need to do to solve it

  • If the problem you’re solving is too easy, brainstorm and try adding additional functionality. Try combining it with other ideas to make your software more challenging

Implementation

  • Take the language you’re most familiar with to start your project. If the problem is too easy, pick a language you’ve never used.

  • Don’t be afraid to write awful code and don’t worry about the best implementation. Get a working implementation first, then refactor and clean it up

Test

  • Write test cases for your program. Get used to thinking about how you can break your software.

  • Find problems, bugs, and fix them. Repeat over and over again and document it. Throw it together in your portfolio (don’t forget to commit!)

Re-Implement

  • Now that you have something together with lots of documentation and experience, try a different language and try to match it as closely as possible to your first implementation. Add features, try new techniques, new styles. Go crazy!

Don’t stop learning

  • Now that you’ve gotten this far, don’t stop trying to challenge yourself. Keep a portfolio/blog/diary and keep adding to it

Resources:

  • Wikipedia
  • Stack Overflow
  • Google

Seriously, this is all you’ll ever need. If you aren’t getting results, you aren’t doing your research properly. With these three websites, you’ll find your answers. If they don’t exist, make a thread. By doing so, you help other people out too!

Remember: if you make a new topic for a new problem anywhere,write down the solution if someone PM’d you. It helps people a lot and encourages them to do the same

Literature:

  • Knuth: The Art of Computer Programming
  • Siena: The Algorithm Design Manual
  • Carmen et al: Introduction to Algorithms
  • Russel: Artificial Intelligence: A Modern Approach
  • Abel son: Structure and Interpretation of Computer Programs

Hungry for More?

Below is a s small list of websites that contain additional challenges

Challenges

An list of programming challenges with 4 difficulties

Pratical 🔨

Easy:

    • Markov Chain Sentence Generator (Include Shitposting Capabilities)
    • To-Do List Application (Web app or CLI)
    • Chatbot (with conversation retention)
    • Image to ASCII Art
    • Imageboard (Imagine vichan)
    • Create an HSV Color Representation
    • Port Scanner
    • Old School Demo Effect (Plasma, Tunnel, Scrollers, Zoomers, etc...)
    • PDF Tagger

Medium:

    • Download Manager
    • Make an elastic producer/consumer task queue
    • IRC Client
    • English Sentence Parser that Points to the Context of a Sentence
    • MIDI Player + Editor
    • Stock Market Simulator Using Yahoo Spreadsheet Data
    • Graphing Calculator
      • BONUS: Graph the Function's Derivatives
    • TCP/UDP Chat Server + Client
    • Shazam
    • Curses Text Editor (with Emacs / Vim keybindings)
    • Paint Clone
    • Booru (Image Board) Image Downloader
    • Image Converter
    • ID3 Reader
    • C++ IDE Plugin for Sublime/Atom (Auto-Complete, Go-To Symbol Declaration and Definition using Clang's AST)
    • Simple Version Control supporting checkout, commit (with commit message), unlocking, and per-file
    • Password Manager
    • Key Press Bot
    • Radix Base Converter (Given a radix base, convert it to decimal)
    • Encrypt a File, and Upload it online
    • Window Manager
    • Pixel Editor
    • Trivial File Transfer Protocol (TFTP): Allow a client to put a file onto a remote host
    • Markdown (HTML/XML) Editor
    • IP Tracking Visualization
    • Bellman-Ford Simulation with at least Five Vertices
    • Matrix Arithmetic
    • File Compression Utility (Make it GUI)
    • Calculate Dot and Cross Product of Two Vectors
    • Bismuth Fractal
    • Seam Carving
    • Bayesian Filter

Difficult:

    • Parametric/Graphic Equalize for .wav files (Make it real-time)
    • Verlet integration (Verlet Cloth)
    • Music Streaming
    • Sound Synthesis (Sine, square, sawtooth, etc...)
    • Create a Torrent Client (CLI or GUI)
    • Booru Client
    • Chan aggregator (Let's user view various boards from different 'chans')
      • BONUS: Add 4ChanX and Archiving Functionality
    • Make a Text Editor that autosaves and includes the date in the filename
    • Nonogram Generator and Solver
    • WMS viewer that isn't web based

Extreme:

    • Sound Synthesis (Sine, square, sawtooth, etc...) mode: Realtime MIDI Playback with Custom instruments
    • Basic Relational Database Software (SQL Support, Handle Relationships, Focus on Efficiency)

Algorithmic 🚀

Easy:

    • Fizzbuzz
      • BONUS: In Assembly
    • RPN Calculator
    • Counts occurences of characters in a Given String (include support for unicode characters)
    • Towers of Hanoi
    • Calculate the first (n) digits of pi
    • Given an Array of Stocks's values over time, find the period of time where the stocks could have made the most money
    • Highest Prime Factor Calculator
    • Password Generator (Let User Choose Options)
    • Caesar Cipher Cracker
    • ROT 13
    • Youtube To MP3
    • Text to Hexadecimal/Binary
    • Sierpinski Triangle
    • Ulam Spiral

Medium:

    • Music Visualizer
    • Unicode Converter (Support for UTF-8, 16LE, 32LE, and 32BE)
    • Least Squares Fitting Algorithm
    • Hide and Extract Data in images (Basic Steganography)
      • Bonus: Include .gif support
    • Web Page Crawler
    • Vignére cipher encryption/decryption
    • Game Of Life
    • Dijkstra's Algorithm
    • Program that displays MRB Contents
    • Random Name Picker
    • Calculate the first 1.000 digits of pi iteratively
    • Mandlebrot Set

Artificial Intelligence 📚


Easy:

    • Basic Neural Network - Simulate individual neurons and their connections

Medium:

    • AI for Roguelikes
    • Sudoku/n-Puzzle Solver using A* alogrithm
    • Connect-4 AI Player using Alpha-Beta Pruning
    • Real Neural Network - Implement a basic feed-forward neural network using matrices for entire layers along with matrix operations for computations
    • Convolutional Neural Network: Implement a convolutional N.N. for a handwritten digit recognition, test on MNIST dataset (Use TensorFlow, Theano, etc...)

Difficult:

    • OpenAI Gym project
    • Convolutional Neural Network: Implement your own convolutional neural network for handwritten digit recognition, test, on MNIST Dataset (Without TensorFlow, Theano, etc...)

Compiler/Interpreter/Debugger 💻

Medium:

    • Virtual Machine with a Script that Writes "Hello, world"
    • Terminal Shell (Executable Binaries, Pipe System, Redirection, and History)
      • BONUS: Make it a GUI
    • HTML + JavaScript Debugger
    • Write an Interpreted LISP-like Programming Language
    • Universal Asynchronous Receiver/Transmitter (UART) Game
    • Static Website Generator (Scriptable Templates + Content -> HTML and CSS)

Difficult:

    • Make an application that is capable of mounting filesystems from other OSes using the FUSE model
    • Design an Esoteric Language
    • C Compiler
    • Turing Machine Simulator
    • Read, Evaluate, Print Loop using a compiled language
    • LISP Interpreter

Extreme:

    • Basic Bootloader (with extended file system)

Emulation/Modeling 🏡

Easy:

    • Generate a Complimentary Color from any input color
    • Eulerian Path
    • Draw a spinning 3D Cube
    • Cellular Textures
    • ASCII Digital Clock

Medium:

    • Chip - 8 Emulator
    • Double Pendulum Simulation
    • Constructive Solid Geometry
    • Generate a 5-Color Scheme from the most dominant tones in any image
    • N-Body Simulator, with particles having a certain mass and radius depending on the mass that merge if they collide
      • BONUS: Include a GUI where you can place particles

Difficult:

    • Chip - 8 Emulator (with Cached Interpreter)
    • Ray Tracer
    • Realt-Time Fast Fourier Transform Spectrum Visualizer
    • TI-86 Emulator
      • BONUS: Include the Option to Create Programs

Extreme:

    • Chip - 8 Emulator (with Dynamic Recompiler, use dynarec/jit library)
    • General Lambert's-Problem Solver (At least it's not rocket science... Oh wait, it actually is)

Games 🎮

Easy:

    • Snake
    • Rock Paper Scissors
    • Design a Game Engine in Unity
    • Yahtzee
    • Oil Panic
    • Connect Four
    • Simon

Medium:

    • Knight's Tour
    • Tetris
    • Pipe Dreams
    • Pac Man, With Different Behaviors for each ghost
    • Shuffle a Deck of Cards (Include a Visualization)
    • Simulate a game of Tag using a multi-agent system
    • Scorched Earth Clone
    • Minesweeper
    • An Audio/Visual 64KB Demonstration
    • Sudoku
    • Chess
    • Mastermind
    • Missile Command Game
    • Tron
    • Breakout

Difficult:

    • Monster Raising/Breeding Simulator
    • Dragon Quest / Basic RPG Engine
    • First-Person Engine in OpenGL (Walking, Looking Around, Jumping on Obstacles)
      • BONUS: VR Compatibility
    • Wolfenstein Clone (FPS, two-dimensional map that appears to be 3-D) (If you need a starting point, search for bisquit's video about DOOM-like Engines)
    • Danmaku (Bullet Hell) Engine
    • Roguelike Engine/Dungeon Generator
    • Go (No AI Necessary)