As usual, my first quick and dirty attempt at the challenge, followed by a (hopefully) better version with a list of things I learned during the day :)!
Full video on Youtube:
Here is a quick giphy for you to enjoy :)
Time : 37 minutes
Here is my first version of the code :
As usual now, quick and dirty, though this one turned out quite nice if you ask me. Many things I want to fix when I come back to it :
- I see a lot of repetition, that doesn't make me super happy
- I wonder if there is an easy way to have processLine work for double lines instead of using a specific runner for it?
Quite a bit smaller, but also MUCH cleaner just like yesterday!
Learnings of the day!
Let's go through things :
- Habits die hard. I am using to just use
sublistto take only a part of a list, but Kotlin has
takeas well which make things much cleaner
- I found
filterIndexedvery useful to quickly drop half of the lines, instead of having to make a more complex
foldfunction that will only be valid for one use case.
- I am still not completely happy to be using a
Pairinside my fold function. But I have found no other simple way to keep track of both the total amount of trees found as well as the current index we want to be in.
- I'm pretty happy to be using the modulo (%) function to target the right place of the line insead of repeating my list. Pretty neat
This blog had me pondering whether I wanted to drop the best solution to the problem here, or my best solution. I've decided to stop working at the moment where I've learned something new and am not ashamed of the final code :). Food for thought for the coming days.
That's it! See you tomorrow for more!
Do you have remarks? I'm curious, let me know on Twitter!