Skip to content

valsaven/programming-challenges

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pro/g/ramming Challenges v3.0

  • 001 - Unit Converter (weight, area, length, etc)
  • 002 - 15 Piece Sliding Puzzle Game
  • 003 - Count word occurrences in a text tile
  • 004 - FizzBuzz
  • 005 - Given an IPv4 address and a subnet mask, compute the network, broadcast and first/last host addreses
  • 006 - Binary Search (integers, strings, etc)
  • 007 - BMI Calculator (CLI or GUI)
  • 008 - Currency Converter { Include up-to-date exchange rates from the Internet and other units, commodities, etc & history }
  • 009 - String -> ASCII / Unicode Art Character
  • 010 - Quine
  • 011 - Define, then translate, scale and rotate 2D/3D polygons
  • 012 - Linked list (single, double, circular, skip list, etc)
  • 013 - Calculate and print calendars for arbitrary months and years
  • 014 - Tic-Tac-Toe
  • 015 - Voronoi Diagram from a set of random points
  • 016 - Benford's law
  • 017 - Text <-> Morse code converter
  • 018 - Anagram Checker
  • 019 - Dynamic multidimensional arrays
  • 020 - Sorting algorithms + visulization
  • 021 - Count words in a string { Include lines, sentences, paragraphs, etc }
  • 022 - Palindrome checker
  • 023 - Factorial
  • 024 - Eulerian trail/path
  • 025 - Read a text tile, then center/right align/justify its contents
  • 026 - Higher/lower, heads/tails
  • 027 - Split a string into tokens delimited by one or mom seperators
  • 028 - Given a directory, recursively search its subdirectories for the smallest & largest tiles; print their full path, name and size.
  • 029 - TCP program with basic encryption (e.g. XOR)
  • 030 - Tornado test/image
  • 031 - Print long passages of text with word wrapping { Include hyphenated words for better wrapping }
  • 032 - Cipher/decipher text (implement at least one from http://rumkin.com/tools/cipher/)
  • 033 - Perlin/simplex noise with parameters
  • 034 - Basic converter (binary, hexadecimal, decimal, octal, etc)
  • 035 - Snake game
  • 036 - Load an image and flip/mirror/rotate it randomly and save it to a new file
  • 037 - Wind chill calculator
  • 038 - ASCII/graphical digital clock
  • 039 - Ulam spiral (display or save the image)
  • 040 - Password/passphrase generator with options
  • 041 - Prime number sieve { Include multi-threading }
  • 042 - Fibonacci sequence (at least the first 100 numbers)
  • 043 - Temperature converter
  • 044 - Cellular textures
  • 045 - Triangle number calculator
  • 046 - Eight Queens puzzle
  • 047 - Hangman
  • 048 - Check if two 2D rectangles overlap and if they do, calculate the overlapping rectangle
  • 049 - Calculate the days between two dates
  • 050 - Get the current time from a time server and convert it to your local time and display it
  • 051 - Random name generator { Include credentials }
  • 052 - Magic Eight Ball
  • 053 - Dungeons and Dragons { Include Al }
  • 054 - Pascal's triangle generator
  • 055 - Sierpinski triangle
  • 056 - Typing speed calculator
  • 057 - Rock, paper, scissors ( Include Lizard, Spock }
  • 058 - Pong { Include variable vectors }
  • 059 - RPN calculator
  • 060 - Collatz conjecture
  • 061 - Longest common substring Include 0(n) }
  • 062 - Voronoi diagram from a random set of points
  • 063 - Reverse a number mathematically (e.g. 48572 -> 27584)
  • 064 - Luhn algorithm (number validation)
  • 065 - Draw a Circle using ASCII art (let the user specify the radius { Include colouring it with seperate fill and edge colours }
  • 066 - Haiku generator
  • 067 - Connect Four game
  • 068 - 4Chan thread or image downloader { Include both
  • 069 - Generate an ASCII tree (height based on input)
  • 070 - Use genetic algorithm on polygons
  • 071 - Graphical analog clock
  • 072 - Hide and extract data in images (basic steganography)
  • 073 - RT!! client { Include an FTP server }
  • 074 - IMP interpreter
  • 075 - Telnet server { Include client and a netcat clone }
  • 076 - Text editor
  • 077 - N queens problem
  • 078 - Crediential Validator (e.g. phone number, email address, etc)
  • 079 - Mastermind game
  • 080 - Random image generator
  • 081 - Klingon translator
  • 082 - Markov chain (random text generators)
  • 083 - Two seperate languages send strings to one another (Java, Python, etc)
  • 084 - Name art in ASCII
  • 085 - IRC bot
  • 086 - Brainfuck interpreter { Include optimisation and multiple targets }
  • 087 - Chip-8 emulator
  • 088 - Geekcode generator
  • 089 - Solitaire game
  • 090 - Scorched Earth/Tanks clone { Include Al players }
  • 091 - Mandelbrot set { Include Mandelbulb/Mandelbox }
  • 092 - Knights tour
  • 093 - Crossword game
  • 094 - Recursively split an image into rectangles using a quadtree (hint mean squared error)
  • 095 - Random maze generator / solver
  • 096 - An old school demo effect (tunnel, plasma, scrollers, zoomers, etc)
  • 097 - Markov chains (generate random text)
  • 098 - Minesweeper game
  • 099 - Sound synthesis (sine, square, sawtooth, etc) { Include realtime MIDI playback with your custom instruments }
  • 100 - Process large amounts of data in parallel using threads
  • 101 - Enigma simulator with a configuration file { Include decryption of messages without known settings }
  • 102 - Scientific calculator (GUI or CLI)
  • 103 - Towers of Hanoi { Include more disks and more poles }
  • 104 - Level viewer for any game of your choosing
  • 105 - Your own small assembly-like language and a VM for it { Include a game with it; built with the new language }
  • 106 - Picross solver
  • 107 - Multiply two random 100-digit numbers and display the result
  • 108 - Billiard game
  • 109 - Sodoku generator/solver
  • 110 - Columns/Coloris game
  • 111 - Web crawler
  • 112 - Battleships { Include Al players }
  • 113 - Incremental economy simulator (time of exploration)
  • 114 - Paint program
  • 115 - Sine wave generator from pseudorandom numbers
  • 116 - HTML web browser
  • 117 - Flappy bird game
  • 118 - Fast fowler transform (fast or slow with visualisation)
  • 119 - Method ringing simulator
  • 120 - Bellman-Ford simualtion (at least five vertices)
  • 121 - Image convolution (and/or other effects using multiple threads (GPU/Software)
  • 122 - Graphical analog dock
  • 123 - Custom markup -> HTML converter
  • 124 - Simple file explorer/manager
  • 125 - Calculate the first 1000 digits of PI iteratively
  • 126 - Blackjack game
  • 127 - Flow in a network (Ford-Fulkerson algorithm)
  • 128 - Static website generator (scriptable templates and content -> HTML + CSS)
  • 129 - Draw a spinning 3D cube
  • 130 - Dijkstra's algorithm (at least five nodes)
  • 131 - Two or more programs communicating between each other using an IPC method
  • 132 - Nintendo oil panic
  • 133 - Calculate dot-&-cross of two vectors (exterior product)
  • 134 - title man computer simulator
  • 135 - Basic Lisp interpreter
  • 136 - Project Euler in every language you know
  • 137 - Random sentence generator
  • 138 - Calculate an age in seconds with leap years
  • 139 - Internet time with SNTP or NTP
  • 140 - Reverse a string
  • 141 - Tetris game
  • 142 - Convert numbers to text (3 -> "three", etc)
  • 143 - Expression evaluator (e.g. "7+5*(3's2)-(5/0.5)" = 42)
  • 144 - Maze game generator/solver { Include random graphs/trees }
  • 145 - Nonogram generator { Include a solver )
  • 146 - Natural string order sorting (al, a2, a10, a20 instead of al, al 0, a2, a20)
  • 147 - Conways game of life { Include other cellular automata }
  • 148 - Image viewer (support more than one image format)
  • 149 - Plot a mathematical function of your choice; let the user change the coefficients and exis ranges ( Include plot the derivative(s) }
  • 150 - Basic TCP simulator (handshake, data sending and closing) { Include simulate retransmissions, 00B data, window scaling, etc }
  • 151 - Radix base converter
  • 152 - Wolfenstein 3D - style ray caster with coldet & texture mapping { Include textmapped floors and ceilings, sprites and lighting }
  • 153 - Precedural generation of dungeons
  • 154 - Rogue like game
  • 155 - Search engine website
  • 156 - Indy 4 game
  • 157 - Car polo game
  • 158 - 3D viewer
  • 159 - Space invaders game
  • 160 - Blogging software
  • 161 - MP3 player
  • 162 - Crossword game { Include solver and generator
  • 163 - Image editor
  • 164 - Console
  • 165 - Forum software
  • 166 - To-do-list
  • 167 - Library book system
  • 168 - Windows grep
  • 169 - Twitter clone
  • 170 - Facebook clone
  • 171 - Pinterest clone
  • 172 - Breakout game
  • 173 - Pac-Man game
  • 174 - Bomberman game
  • 175 - Code editor
  • 176 - Asteroids game
  • 177 - Duck hunt game { Include other animals }
  • 178 - MP3 tagger
  • 179 - Wallpaper changer
  • 180 - Karateka game
  • 181 - Pole position game
  • 182 - PDF tagger
  • 183 - Wiki website
  • 184 - Missile command game
  • 185 - Simon game
  • 186 - Launcher for Android
  • 187 - Fortune teller website
  • 188 - Image board bot
  • 189 - Risk game
  • 190 - MP4 tagger
  • 191 - Quizz maker/reader
  • 192 - Galaxian game
  • 193 - File copy/paste utility
  • 194 - File renamer with options
  • 195 - Natural language query website
  • 196 - Mouse dodger game
  • 197 - Gif creator
  • 198 - Two player go game
  • 199 - Pipe dream game
  • 200 - RTS game
  • 201 - RTS map generator
  • 202 - Tron game with Al
  • 203 - Dating website
  • 204 - Chess game with Al
  • 205 - Task manager
  • 206 - City management game
  • 207 - Yahtzee game
  • 208 - Procedural generation of a city
  • 209 - Sims clone
  • 210 - Worms done
  • 211 - Building interior and architecture editor
  • 212 - Rampert game clone
  • 213 - File compression utility
  • 214 - Drug city game
  • 215 - Simulating groups of pedestrians
  • 216 - Digger game
  • 217 - MMORPG
  • 218 - 3D FPS game
  • 219 - Commando game
  • 220 - Double Dragon game
  • 221 - Civilisation game clone
  • 222 - Animated sprite editor
  • 223 - Reddit clone
  • 224 - Stop watch
  • 225 - Voice recorder
  • 226 - IRC server and client
  • 227 - Calender
  • 228 - Skype clone

How-to Guide

  1. Use git and optionally, an external website to push to Leam how to use git and commit early and often. Optionally use a web-site such as GitHub to push your work to. Build a portfolio. t Understand the problem Leam how to perform your own research. It's an incredibly useful skill which can be applied to anything in life. If you find the problem difficult, don't give up, break it down. Draw it out, write it out, do whatever you need to do to solve it. If the problem you are facing is too easy, do a brain storm and add addi¬tional functionality and/or combine it with other ideas to make your soft¬ware more challenging.
  2. Implementation Take the language you are most familiar with to start your project off. However, if the problem is too easy, pick a language you have never used. Don't be afraid to write awful code and don't worry about the best implementation. Get it written up first and then refactor, dean it up and so on.
  3. Test Write test cases up for your program. If you prefer paper then use paper, if you prefer Microsoft word, use that, but get used to thinking about how you can break your software. Find problems, bugs and fix them. Repeat it over and over again and document it. Throw it together into your portfolio. Remember, commit often. If something goes wrong, revert back.
  4. Reimplement Now that you have something together with lots of documentation and experience; go wild! Use a different language and try to match it as much as possible to your first implementation. Add features, try new techniques, idioms. Try to refactor your code and optimise it
  5. Don't stop learning Now you have gotten this far, don't stop trying to challenge yourself. Keep a portfolio, keep a blog and keep adding to it. It will look fantastic to potential employers.
  6. Resources Wikipedia, Stack Overflow and Google. Seriously this is all you will ever need. If you aren't getting results, you are not doing your research properly and you need to improve this. I can not state enough how important this skill is and it isn't hard. With these three websites, you find your answers and if it doesn't exist, make a thread on Stack Overflow and by doing so you help other people out too. Remember, if you make a new topic for a new problem anywhere, write down what the solution is if somebody private messaged you. It helps people out a lot and it will encourage them to do the same!
  7. Literature Knuth: The Art of Computer Programming Skiena: The Algorithm Design Manual Cormen et al: Introduction to Algorithms Rusell, Norvig: Artificial Inteligence: A Modem Approach Abelson, Sussman: Structure and Interpretation of Computer Programs
  8. More challenges? If you need more challenges there are a lot of websites out there to help you with this! Below is a small list of the most popular, however please feel free to add more to this list.

www.hackerrank.com

www.codechef.com

www.codetights.com

www.projecteuler.net

www.rosettacode.org

www.codeabbey.com

www.codeeval.com

www.codingbat.com

www.programmingpraxis.com