Simplified solution using reduce.
Add test case.
Rework to use lazy-seq.
Add assertions.
Add assertions.
Add assertions.
Create sub-namespaces according to assigned difficulty.