20_housevisits.py 733 B

12345678910111213141516171819202122232425
  1. #!/usr/bin/env python3
  2. def lowest_house_nr(threshold, npres, nvisit):
  3. houses = [npres]
  4. while True:
  5. prevlen = len(houses)
  6. houses += [0] * prevlen
  7. limit = len(houses) + 1
  8. for elf in range(1, limit):
  9. start = prevlen + elf - prevlen % elf
  10. visited = prevlen // elf
  11. for house in range(start, limit, elf):
  12. if visited >= nvisit:
  13. break
  14. houses[house - 1] += elf * npres
  15. visited += 1
  16. for i, val in enumerate(houses[prevlen:]):
  17. if val >= threshold:
  18. return prevlen + i + 1
  19. print(lowest_house_nr(36000000, 10, 10000000))
  20. print(lowest_house_nr(36000000, 11, 50))