Skip to content
This repository was archived by the owner on Mar 1, 2026. It is now read-only.

treejamie/hackerrank-90days

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tests

This repo’s layout isn’t idiomatic to any one language — it’s a mix of Elixir, Go, Python, and TypeScript.

Quality

When I first started these challenges, I was in a teaching job and I was completing them between classes and during times when my students had been tasked and was literally doing nothing. These challenges go all the way up to week 4/5. These are not my best work, I was more interested in making stuff work. However, when I quit the teaching job and was able to sit down and focus on quality, I started everything again. I went over the week one python work and moved everything to a standard that any colleage, customer or employer would be more than happy with.

So below is a table of challenges that I consider to be complete, and to have been completed to a high professional standard that you'd expect from any work I was doing. Inline docs, testing, linting, static code analysis, CI/ CD etc. Each PR for each challenge is listed below. If it's not in this table and it's in the repo, consider it a working draft of my thoughts.

Week 1

Python Elixir TypeScript Go
W1/1 Plus Minus PR PR âž– PR
W1/2 Mini Max Sum PR PR âž– PR
W1/3 Time Conversion PR PR PR PR
W1/4 Breaking Records PR PR âž– âž–
W1/5 Camel Case PR PR âž– âž–
W1/6 Divisible Sum Pairs PR PR âž– âž–
W1/7 Sparse Array PR PR âž– âž–

Week 2

I'll update this README with week two once I've completed all the challenges in all the languages from week one.

Spot something I could improve? Open an issue and point it out — that would be swell.

🙋 Why?

The HackerRank 90-day course was designed as a three-month prep for recruitment pipelines. Whilst I started out with that intention, I’m not using it for that purpose anymore (at least not directly). I’m using it to apply my Python and Elixir knowledge to scaffold my development in Go and TypeScript.

What I’m noticing, though, is that it’s also improving my authoring skills more broadly.

I started in January. At first, I just wanted to get through it in Python — a collection of scripts to store solutions. Then I added per-file unit testing. Then I started doing the challenges in different languages, and it evolved from there. Now it’s basically a code dojo for me, where I’m working through each challenge in each language. I'm learning a lot. Especially about parsing text files (test cases).

I’ll be very pleased if I complete these challenges by the end of 2025 in four languages: Python, Elixir, Go, and TypeScript. The aim is to get a nice 25% language distribution across the repository and to demonstrate competence in basic project layout, standard libraries, testing methodologies, and — most importantly — low-complexity solutions.

For example, many challenges can be solved easily with an O(n^2) approach, but HackerRank will timeout when you submit inefficient code. That’s a great forcing function — you’re not allowed to be lazy.

🧱 Structure

The project is structured by weeks, not by language. That is: none of the projects follow idiomatic layouts for their respective languages.

Each week has a folder named w1, w2, etc. Inside each is a tc (test cases) folder, which contains test files in a very specific format. For example, here’s the test case data for a made-up challenge where you’re given two integers and must sum them. Arguments are separated from expected output by two blank lines:

1 2

3

This format ensures each challenge across all languages consumes the same input/output.

📅 Three Months?

This course was meant to be three months long, but I’m not treating it that way. Technically, you’re supposed to use HackerRank’s interface to author your code — but that’s a horrific experience.

If I finish all the challenges in four languages by the end of 2025, I’ll be very pleased.

😱 Idiomaticity

(I made that word up)

This repository is a mix of several languages, and I’ve prioritized their coexistence over idiomatic project layout. For example, the Elixir code isn’t structured like a proper Mix project — same with TypeScript, Python, and Go.

The point is to compare approaches side by side, not to build polished, standalone apps.

That said, I still try to write idiomatic code within each language’s norms.

🤖 LLM usage

Code

None of the challenge solutions are directly written by AI. I do use LLMs while coding — they’re great scaffolds for learning.

Documentation & Comments

Most comments were written by me and then passed through an LLM to make them more succinct. I tend to be overly wordy — LLMs are great at "neutral speak".

✅ Test & Quality

Elixir

There are two quality checks ran on the challenges - tests and static analysis.

Tests are handled with ExUnit:

mix test w*

Static analysis is done with Dialyzer:

mix compile
mix dialyzer

The main aim of using dialyzer is to get some practice in with being clear about @spec.

Go

cd w1
go test -v

TypeScript

pnpm vitest run

Python

python -m unittest -v  */*_test.py

About

🧠 I'm using these challenges as a means to further my Python & Elixir skills and to assist me in learning Go and TypeScript.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Contributors