Advent of Code 2016 solutions https://adventofcode.com/2016/
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

12345678910111213141516171819202122232425262728
  1. #!/usr/bin/python3
  2. import re
  3. # Version of parse() that recursively parses repeated sections
  4. rparse = lambda x: parse(x, rparse)
  5. def parse(data, rfun=len):
  6. # Find the first bracketed part (if one exists)
  7. index, bracket = data.find('('), data.find(')')
  8. if index == -1: return len(data)
  9. # Grab the (NxR) values from the brackets
  10. num, reps = map(int, data[index + 1:bracket].split('x'))
  11. # Return the initial, non-repeated data, plus...
  12. return (len(data[:index])
  13. # the repeated data, potentially parsed recursively, plus...
  14. + reps * rfun(data[bracket + 1:bracket + 1 + num])
  15. # the remainder of the string, parsed
  16. + parse(data[bracket + 1 + num:], rfun))
  17. with open('09.txt', 'r') as file:
  18. input = re.sub('\s+', '', file.read())
  19. print(parse(input))
  20. print(rparse(input))