Lately I have been doing some code challenges and participating at exercism.com after hearing good things about the platform. They have exercises available in many languages and an active community. I focused on typescript and javascript and uploaded some of my solutions to github, or you can find my exercism profile here. I was also able to contribute as a mentor to a couple people looking for explanations or assistance with problems. Exercism has an easy way to copy or export the code and tests to a local machine. This lets you preserve the challenges in case anything happens to the website and a good way to share the solutions.
Latest exercism stats:
Typescript challenges completed: 60
Javascript challenges completed: 40
Including implementing some cool functions such as:
Part of the reason for practicing more code challeneges was to prepare for the interview process and push my understanding of the languages and features. Doing this around the holidays I learned about the Advent of Code, great timing! The advent of code is a holiday coding challenge broken down into 25 2-part challenges. It's known for:
It's very flexible in what kind of environment and tools you use. Any language or method is allowed as long as you find the correct answer. I chose to use only javascript. Some of the days were very difficult and time consuming. On some I had to look at the AOC reddit for hints, but most days I was able to finish alone using just the MDN javascript docs. Even if I did get hints, it is all original code except a few common functions. Overall fairly pleased with my solutions and more importantly gaining more experience with these types of problems. Some of the advanced topics involved maze solving, Breadth First Search, Depth First Search, Linked Lists, Circular Linked Lists, recursive structures, modular arithmetic, 3d arrays and matrices, and lots of object oriented programming in my solutions.
node aoc2022day1.js > output.log &
I missed the starting date this year and wasn't competing for speed or to even finish the calendar on time. I think that worked out perfectly so I could really put as much time into each question as needed. Many times that meant spending more than one day on a question. That allowed me to learn a lot of different ideas and move through it at my own pace. It would be fun in another way though to start another years AOC on the 1st day and try to keep up with the daily calendar. There are many past years AOCs that I have never seen and that could be fun to work through.
Some people in the community also made visualizations of different questions, that is something I'd like to do. Those can be very helpful when trying to learn a concept, visualizations helped me when looking at BFS and DFS this year. It would also be valuable to go back and make some optimizations. There is certainly a lot of room for improvement and looking at other people's solutions is a good place to find inspiration for improvements.