fork download
  1. #!/usr/bin/env python
  2.  
  3. def print_ages(kids_ages):
  4. """ Print kids ages, ignore 0 that are towards the end in the kids_ages array """
  5. for age in kids_ages:
  6. if age == 0: break
  7. print age,
  8. print
  9.  
  10. def check_ages(kids_ages):
  11. """ Check age constraint, ignore 0 that are towards the end in the kids_ages array """
  12. s = 0
  13. p = 1
  14.  
  15. # compute sum of ages and product of ages
  16. for age in kids_ages:
  17. if age == 0: break
  18. s += age
  19. p *= age
  20.  
  21. # check for constraint sum^2 = product (of ages)
  22. if s*s == p:
  23. return True
  24. else:
  25. return False
  26.  
  27. def find_ages(kids_ages, num_kids):
  28. if num_kids == 0:
  29. least_age = 13
  30. else:
  31. # check kids ages
  32. if check_ages(kids_ages):
  33. print "Ages that satisfy constraint:",
  34. print_ages(kids_ages)
  35.  
  36. # david has less than 7 kids
  37. if num_kids >= 7:
  38. return
  39.  
  40. # pick the smallest age
  41. least_age = kids_ages[num_kids-1]
  42.  
  43. # add kid with different ages to kids_ages
  44. for age in xrange(2, least_age):
  45. # add a kid with age = age
  46. kids_ages[num_kids] = age
  47.  
  48. # find age recursively
  49. find_ages(kids_ages, num_kids+1)
  50.  
  51. # undo the added kid
  52. kids_ages[num_kids] = 0
  53.  
  54. kids_ages = [0 for i in xrange(0,7)]
  55. find_ages(kids_ages, 0)
Success #stdin #stdout 0.02s 8968KB
stdin
Standard input is empty
stdout
Ages that satisfy constraint: 12 6 4 2