Dynamic programming in swift