Project Advent-of-Code has collection of programming challenges glued by interesting background stories.
Stories are organized as Advent Calendar and are published daily during the Advent season. Each story/unit contains two related challenges. At the beginning you have access only to Part-A story/task. After solving the challenge the result (usually simple integer value) is evaluated and upon sucessfull verification the Part-B is revealed. Part-B is always related to Part-A and often uses the same input dataset. The educational aspect is that Part-B is more complex than Part-A and it is like generalization of Part-A. If implementation of Part-A is implemented correctly then adding solution for Part-B should be quite straightforward like adding new method or additional parameter etc.
The result is mostly simple integer value which is automatically evaluated. However, some units run-time can be in hours.
There are some hard-to-find aspects (a.k.a. valuable featutes) of Advent-of-Code project to consider:
- interesting & funny
- two tiers educational aspect as part-a and part-b unit relation
- xfw (cholesterol free) web pages:
- no adobe flash
- no jquery animations
- no megabytes of javascript crap
- no cloud-flare, akamai and other cdn garbage
- zen style minimalistic design (simplicity & functionality first)
- creative retro ASCII art
- each task/unit has few testcases
- personalized input data
- evaluation of results
basic implementation of advent-of-code tasks, mostly in Python 2.x [other implementations might follow as time permits]
- 2016 - 2016 Advent-of-Code
- Unit: 2016/01 - Story: Day 1: No Time for a Taxicab
- Unit: 2016/02 - Story: Day 2: Bathroom Security
- Unit: 2016/03 - Story: Day 3: Squares With Three Sides
- Unit: 2016/04 - Story: Day 4: Security Through Obscurity
- Unit: 2016/05 - Story: Day 5: How About a Nice Game of Chess?
- Unit: 2016/06 - Story: Day 6: Signals and Noise
- Unit: 2016/07 - Story: Day 7: Internet Protocol Version 7
- Unit: 2016/08 - Story: Day 8: Two-Factor Authentication
- Unit: 2016/09 - Story: Day 9: Explosives in Cyberspace
- Unit: 2016/10 - Story: Day 10: Balance Bots
- Unit: 2016/11 - Story: Day 11: Radioisotope Thermoelectric Generators
- Unit: 2016/12 - Story: Day 12: Leonardos Monorail
- Unit: 2016/13 - Story: Day 13: A Maze of Twisty Little Cubicles
- Unit: 2016/14 - Story: Day 14: One-Time Pad
- Unit: 2016/15 - Story: Day 15: Timing is Everything
- Unit: 2016/16 - Story: Day 16: Dragon Checksum
- Unit: 2016/17 - Story: Day 17: Two Steps Forward
- Unit: 2016/18 - Story: Day 18: Like a Rogue
- Unit: 2016/21 - Story: Day 21: Scrambled Letters and Hash
Possible future improvements and ideas (in arbitrary order):
- analyze resource requirements [memory, cpu]
- code optimization, profiling
- improved documentation
- implementation in multiple programming languages
- comparision of various implementations
version 2017.5 - the initial GitHub release in May 2017
keywords: advent, adventofcode, programming, challenge, puzzle, task, unit, design