Problem Sources - alice-adventures/Alice GitHub Wiki
Problem Sources for Programming Puzzles
There are many online platforms that offer programming challenges and puzzles to solve, collectively known as "Problem Sources". These platforms have become popular among developers and computer science enthusiasts, as they provide a fun and engaging way to improve one's coding skills, learn new programming languages and algorithms, and compete with other participants from all over the world.
In Alice, we provide support for some of the most well-known and respected Problem Sources, such as Project Euler, Codingame, and Advent of Code. Each of these platforms has its own set of features, rules, and difficulty levels, and choosing the right one can make a big difference in your experience as a Participant.
Project Euler
Project Euler ↗ is a website that features more than 800 mathematical and computational problems, ranging from number theory and combinatorics to graph theory and cryptography. Each problem is designed to be solvable with pen and paper, but many of them require clever algorithms and efficient code to solve within reasonable time limits. The problems can be organized in increasing order of difficulty, and there is a strong emphasis on mathematical rigor and elegance.
Each problem has a unique ID, and you can solve it in any programming language. Solutions are simply a string that you must submit. Once your solution is accepted, you gain access to a discussion forum where you can compare your approach with other participants and learn from their feedback.
Check Project Euler Archives ↗ to start solving problems!
Codingame
Codingame ↗ is a platform that features over 200 coding challenges, ranging from simple coding puzzles to full-blown multiplayer games. Each challenge is designed to be interactive and engaging, and often involves visual or audio effects to enhance the experience. The challenges are organized in categories such as "Puzzle", "Optimization", "AI", and "Multiplayer", and there are various difficulty levels within each category.
Each challenge has a unique interface that lets you interact with the game world, test your code against predefined scenarios, and compete with other players in real-time matches. You can submit your code in a variety of programming languages¹ and see how it performs against other players in the leaderboard.
Advent of Code
Advent of Code ↗ is an annual event that features 25 coding challenges, one for each day of December leading up to Christmas. Each challenge is designed to be a fun and festive way to practice your coding skills, and often involves some holiday-themed twist or puzzle. The challenges are organized in increasing order of difficulty, and there is a strong emphasis on creativity and problem-solving.
To participate in Advent of Code, you need to wait for the event to start on December 1st or to solve puzzles from past years. Each day, a new challenge is released, and you have no time limit to solve it and submit your answer. You can solve your solution in any programming language, and gain access to a leaderboard where you can see how you compare with other participants.
2022 Edition
In 2022, Ada participants organized around the Ada-Lang forum to share their solutions in the Advent of Code thread ↗. For each solution published in Ada or SPARK, AdaCore made a donation ↗ to the Ada Developers Academy ↗.
Ada Support in Online Coding Platforms
Ada support in online Problem Sources: a missing opportunity
Unfortunately, vast majority of the currently available coding platforms do not offer Ada as a supported language². The only one we have found is SPOJ ↗, the Sphere Online Judge, which supports Ada95 (gnat 8.3). If you know another one, please let us know.
We understand that this can be frustrating for Ada enthusiasts and developers, but we hope that in the future, more platforms will offer support for Ada. In the meantime, Alice provides a framework for Ada developers to showcase their skills and engage with other developers in the community.
Additional Problem Sources
There are many online coding platforms out there with plenty of puzzles and challenges, and we are open to include support for them.
But, if you thing that it is worth to create a new Problem Source with focus on the Ada and SPARK languages, with critical and high integrity aspects, possibly made up from collaboration between users, SURE! Please contact us and let us know your ideas: we also have similar ideas in mind!
¹People asked to add support for Ada several times, many years ago, but it is still not supported.
²It has requested several times in CodinGame (we too!), but with no success.