I have always been using Python for this but is about time to improve this skill by using more serious programming language. In sense that it should be lower lever and at least have static typing. Contenders are: C/C++/Java. My feeling is that Java knowledge would be more useful for future work but C/C++ would make more familiar with memory management.
Clojure.<p>At stockfighter.io and HackerRank, I enjoyed practicing my Clojure hacking skills. HackerRank supports Clojure as a language that is submitted and run against automated test suites for challenges. At stockfighter.io, you can choose any language since you are submitting answers to a REST API.<p>My Clojure chops increased and I now use the language at work for new development.<p>I am debating a switch to python for machine learning challenges (maybe Kaggle?). If I decided to return to the enterprise world, I probably should drift back to plain Java for challenges.
I think this is actually a flaw in many such challenges.<p>I hit questions where I would say "I would do that in production in Erlang, or C", but then the only metric you are judged on is time, and suddenly I'm writing Ruby again.<p>I think that's fine when the challenge is scoped as "who can solve this challenge?", but there are "job application" type challenges with tight timers where this is just the wrong approach. It's similar to why you never write tests in such environments, once you get a tick on the challenge.
If code golf counts as a challenge then Jelly <a href="https://github.com/DennisMitchell/jelly" rel="nofollow">https://github.com/DennisMitchell/jelly</a>
If the challenge explicitly allows managed languages, it means you don't need raw processing speed to win -> Python is fine. Need raw speed -> C, or C/Python mixture.