While I think python is a really great language for advent of code, I'm not sure I'd recommend going for an OOP-heavy style. Although that might just be a matter of personal taste - I think OOP is a poor strategy for most problems.
The reason LFE didn't do it for me was that Elixir is relatively painless syntax-wise, and has really nice high-level libraries like Phoenix and Ecto that simplify a lot of work. If I don't need the BEAM, than I'd rather have a more strictly functional language like Clojure, or something more low-level like Common Lisp. LFE doesn't occupy a niche in my personal ecosystem. That being said, I'd definitely give it another try sometime, and I'd recommend it to anyone else who wants to feel the power of the BEAM.
I first heard of people doing this for codejam, and it works just as well for AoC
My 2c from the experience,
* I hated Go for this style of programming, but I could see it being good for some production-ready code
* Rust should be renamed to Rustcargo. Even for the most basic of tasks it seems like these two are welded together.
* I still really like Nim as a replacement for Python in my toolbox
I much prefer RustCargo to C++BringYourOwnShittyBuildSystem! Cargo definitely one of the bright spots in Rust imho.
For something like Advent of Code, though, I'd avoid it. It's just me and it's not for long; there's no need for me to be explicit about how I'm thinking about the problem.
There is also Rosalind for more data oriented challenges [1].
I haven't gotten too far, but the initial problems don't seem too hard in higher level languages. They are very good problems to get better at IO, string manipulation, and data wrangling in your language of choice though.
Same.
> I haven't gotten too far, but the initial problems don't seem too hard in higher level languages.
True. But the info boxes in the top are interesting and informative, those make it worth it to keep going.
> They are very good problems to get better at IO, string manipulation, and data wrangling in your language of choice though.
For me, it's also a way to peek into BioJulia and get some familiarity with it. (I don't mind "cheating" this way since this was my primary goal with the site anyway.) So far I'm pretty impressed by how fast it is!
That said, I don't think it's great for really getting in depth understanding of any language in particular - you'll only use a limited subset of language features for these problems.
Make an API client, a GUI or game if you want to use OO in Python canonically.
The problems are designed to be solved in Python with less than 100 lines of code, by taking advantage of Python's extensive library of data structures and algorithms.
There's numerous problems from board or combat game simulations, to mazes and the intcode computers that lend themselves to be approached in OOP style. The context OP is coming from is data science scripting, it's fine to start with small examples.
I don't go for being the fastest or anything, I just want to do everything in a way that I like. Last year I did everything on the same day it got out; I plan to do the same this one, unless there is a particularly bullshitty problem that puts me off.
if you do it deliberately it's a good way to learn a new language.
Last year I did typescript and tried to really focus in on the type system.