https://www.reddit.com/r/programming/comments/35cr6n/real_programmers_can_do_these_problems_easily/cr3b316