add exercise 1 solution with tests