src | ||
.gitignore | ||
justfile | ||
lenna.png | ||
README.md | ||
shell.nix | ||
test_algo.pdf | ||
Tupfile.ini |
Netatmo technical test
The subject is available here: Test Algo
TODO
- document
- dumb packing
- add raygui
- add box in gui by pressing down
- delete box in gui by clicking
- wrap stb_rect_pack?
- change bbox api to origin + size
Installation
Notes
Question 1
This is a packing problem, as described on Wikipedia. Since this is NP-hard, we know the "exact" solution might be unreachable but we could find a solution that is good enough for our needs.
Question 2
Question 3
PNG support
I chose to support PNG files through the stb files: github.com/nothings/stb. I could have implemented basic image support with the PNM format but I think it is nicer to support common image formats with a simple library.
stb also implements a 2D rectangle packer: stb_rect_pack.h I added this file in the project in order to compare my implementation to another one.
3rd party libraries
I use 2 external libraries for better visualization:
- stb files (for PNG)
- raylib (for GUI)
I don't rely on them for the algorithm implementation and the core of the exercise doesn't rely on external libraries.
To avoid name collision, I created my own namespace freling
.