DEV Community

Discussion on: Solve this simple problem with TDD

Collapse
 
michelemauro profile image
michelemauro

Well, a few tests that come to mind are:

[3] -> [3]
[[3]] -> [3]
[1, [2, 3]] -> [1, 2, 3]

I'm writing them in Java, give me time to reach an interesting level and I'll share it for discussion.

The problem smells a lot like recursion: it's a great exercise in writing only the necessary code, as J.B. Rainsberger preaches in this video at 2:48:

Do watch it all, because it's great.

Collapse
 
jon_fm profile image
Jon Sullivan

Yeah the tough part is that while individual tests like

[3] -> [3]
[[3]] -> [3]
[1, [2, 3]] -> [1, 2, 3]

Prove that the algorithm works for those specific test cases, they don't provide a fundamental proof that the algorithm works indefinitely. Under this premise you'd have to write every possible test scenario.. but that's impossible since there are infinite!

Totally agree on the principles of recursion working at play here though! As I mentioned induction in my (length) comment above, induction and recursion are tightly coupled concepts and spot on for this problem!