Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I just began a shared slack channel with my co-workers, and put the call out for any other interested hobbyists from other departments. We'll collaborate and discuss there, and ignore the public boards.

I found in previous years I gave up a few puzzles in, so I need some community to keep the interest up. But I have zero interest in the competitive aspect.



Not Slack, but this is what I did with colleagues last year (I first participated in 2018, got a group in 2019). It was fun, moderately competitive (between myself and one other guy, the rest were just solving problems but he is always competitive, and I like to goad him), and we got to teach some of the young guys at the office things they should've learned in their CS education (but somehow didn't).


> and we got to teach some of the young guys at the office things they should've learned in their CS education (but somehow didn't)

What specific things had they not learned in their CS education/which puzzles utilized them?


I suspect that thy learned these things, but it didn't stick. From memory of 2018/2019 things that the younger colleagues didn't know (or didn't know well enough to get without prompting):

- When to use CFG versus regex for parsing. Many inputs could be parsed with regexes if you made certain assumptions and got lucky. But CFGs were much easier for some.

- Shunting-yard algorithm. This came up, I think, in 2018.

- Using fast/slow to detect cycles and cycle length (one step at a time versus two, when they collide you can determine that there is a cycle and then determine how long the cycle is). Most used a hash table/map but this was not effective (due to RAM requirements) for some very large inputs. This actually comes up a few times. Variants of game of life, or just numeric processes.

- Multi-threading. It was very useful to implement the intcode VM using threads in 2019. Everyone who tried to juggle state and run multiple VMs at a time struggled when we later had to have a large number of VMs communicating with each other.

- Maybe not CS proper, but typically covered as part of a CS curriculum in a discrete math course. Several times problems related to modular arithmetic and permutations came up. If you understood them, the problem was tractable. If not, you struggled and maybe solved it but it wasn't efficient.

- Various graph and search algorithms. Particularly A* and Dijkstra's. Looking back, it seems there were a couple maze ones in 2019 and several more maze/path finding ones in 2018.

- Sorting/ordering of graph nodes, specifically topological sort. If you know what it is, it makes several of the problems much simpler over the years. I think it was specifically used in 2018.


Excellent comment, I did both parts last year up to day 17 and just had to stop, but learning about things like A* were really what made it worthwhile.

I have no formal CS training, but did a lot of online courses and so I use events like this to help plug gaps and learn new languages, and it would have been great to have a mentor like yourself through some of these puzzles last year as it can be quite hard to solve algorithm knowledge gaps etc. when also quickly trying to roll your own solutions.

Still, really a cool thing. I couldn't resist starting again today.


I'm in the same boat as you having no formal college/university CS training. You've given me a good idea for a blog series. Writing posts that go through the solutions I came up with for each day of AoC if I can do so without benefit of knowledge of useful algorithms & data structure concepts, and then reading the best solutions I can find on reddit etc, and write a blog post on how it works, as well as what underlying concepts it utilizes, and how they work. If I do that for all days/years of AoC, I could post a summary of the most useful concepts that I learned, that were applied to the most problems of AoC.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: